Need help with pagarme-js?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

372 Stars 72 Forks MIT License 488 Commits 48 Opened issues


💛's JavaScript API

Services available


Need anything else?

Contributors list JavaScript

Quality Gate Status Code Smells Coverage Maintainability Rating Security Rating

A JavaScript library to interface with's API, it works in the browser and with Node.js.

The documentation can be found in our JSDocs


This library covers all your needs for integrating with, providing:

  • A clean Promise-based interface for all endpoints in Pagarme's API
  • A fast way to generate card hashes
  • Postback signature validation
  • Documents validations (CPF, CNPJ, and others)

How to use

First, install it:

yarn add pagarme

Or using npm:

npm install pagarme's JavaScript library can be used in three ways:


Import like usual:

import pagarme from 'pagarme'

also works using

const pagarme = require('pagarme')

Browser (CommonJS)

Import the browser build:

import pagarme from 'pagarme/browser'

also works using

const pagarme = require('pagarme/browser')

Browser (Global Variable)

You can also use the latest release from our CDN and import the build directly in your HTML:

The library will be available as the global variable


API Docs

This library provides a promise based interface for all functions. Before you can use the library, you need to provide authentication details which will be used through API calls.

For a detailed documentation, see our JSDocs.

Client API

All of's REST API endpoints are covered in the

object. Every function call issued to
will return a
which represents and manages the result's lifecycle.


When you call

, a
which resolves to a
or an error will be returned. If an authentication error happens, you can catch the error with the
import pagarme from 'pagarme'

pagarme.client.connect({ email: '[email protected]', password: '123456' }) .then(client => client.transactions.all()) .then(transactions => console.log(transactions)) .catch(error => console.error(error))

As the entire library is based on promises, you can also use ES6 generators with every call to make code more procedural:

import pagarme from 'pagarme'

let client

try { client = yield pagarme.client.connect({ email: '[email protected]', password: '123456' }) } catch (err) { console.log('Authentication error') }

try { const transactions = yield client.transactions.all() console.log(transactions) } catch (err) { console.log('Error fetching transactions') }

The downside of this approach is that you need to handle errors using try/catch. authorizes clients in various fashions. This library handles all available authentication strategies:

Using API key:

import pagarme from 'pagarme'

pagarme.client.connect({ api_key: 'ak_test_y7jk294ynbzf93' }) .then(client => client.transactions.all()) .then(transactions => console.log(transactions))

:warning: Never use API keys in the browser, you should use encryption keys instead.

Using encryption key:

import pagarme from 'pagarme'

const card = { card_number: '4111111111111111', card_holder_name: 'abc', card_expiration_date: '1225', card_cvv: '123', }

pagarme.client.connect({ encryption_key: 'ek_test_y7jk294ynbzf93' }) .then(client => .then(card_hash => console.log(card_hash))

Using email and password:

import pagarme from 'pagarme'

pagarme.client.connect({ email: '[email protected]', password: '123456' }) .then(client => client.transactions.all()) .then(transactions => console.log(transactions))


To build the library, use

npm start
  • Node.js build is produced inside the
  • Browser build is produced inside the


To run the library tests, use

npm test

To run tests, you need to export

environment variable with your API key. When submitting a PR, Travis will already have it exported.


Community contributions are essential for keeping this library great. We simply can't access the huge number of platforms and myriad configurations for running it, so if you find any problems, feel free to open an issue.

Be sure to provide at least the following information on the issue:

  • Environment (e.g. Node 7, Chrome 57)
  • Operating System (e.g. iOS 10)
  • Library version (e.g. 3.0.0)

We provide source maps to ease debugging. Use them whenever possible when providing stack traces as it will make digging onto the issue easier.


The MIT License (MIT)
Copyright (c) 2017 Pagamentos S/A

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.