Comece por aqui

Primeiros passos

Do token à primeira cobrança Pix, com as respostas reais de cada etapa.

Execute este roteiro a partir do seu backend. Em seis passos você vai das credenciais até uma cobrança Pix confirmada:

PassoVocê fazRecebe
1Guarda clientId e clientSecret no servidor—
2POST /resource/auth/tokenaccessToken, válido por expiresIn segundos
3Envia Authorization: Bearer <seu-token>Acesso às demais operações
4GET /resource/walletswalletId e saldo disponível
5POST /payment/pix/qrcodePix copia e cola, transação em awaiting_payment
6GET /resource/transactions/external-id/{externalId}completed quando o pagador pagar

Os passos 1 a 4 e o 6 só leem dados. O passo 5 cria uma cobrança real, que só movimenta dinheiro se alguém pagar.

1. Guarde suas credenciais

Use o clientId e o clientSecret da credencial de integração da sua organização. Guarde ambos no servidor, nunca no navegador ou no aplicativo.

2. Emita o token

1curl --request POST \
2 --url 'https://api.monkeypay.app/api/v2/resource/auth/token' \
3 --header 'Content-Type: application/json' \
4 --data '{
5 "clientId": "<seu-client-id>",
6 "clientSecret": "<seu-client-secret>"
7 }'
1{
2 "error": false,
3 "message": "Token generated successfully",
4 "data": {
5 "accessToken": "<token>",
6 "tokenType": "Bearer",
7 "expiresIn": 1800
8 },
9 "pagination": null
10}

Use data.accessToken nas próximas chamadas e emita outro token antes de expiresIn segundos. Não registre o segredo nem o token em logs.

3. Autorize as chamadas

1Authorization: Bearer <seu-token>

4. Encontre a sua carteira

1curl --url 'https://api.monkeypay.app/api/v2/resource/wallets?page=1&limit=10' \
2 --header 'Authorization: Bearer <seu-token>'

Guarde o id da carteira (walletId). Para conferir o saldo:

1curl --url 'https://api.monkeypay.app/api/v2/resource/wallets/<wallet-id>/balance' \
2 --header 'Authorization: Bearer <seu-token>'

data.balances[].available é o valor disponível, em reais.

5. Gere a primeira cobrança

1curl --request POST \
2 --url 'https://api.monkeypay.app/api/v2/payment/pix/qrcode' \
3 --header 'Authorization: Bearer <seu-token>' \
4 --header 'Content-Type: application/json' \
5 --data '{
6 "walletId": "<wallet-id>",
7 "amount": 10.5,
8 "description": "Pedido 1234",
9 "externalId": "pedido-1234",
10 "info": {
11 "payerDocument": "12345678909",
12 "payerName": "Maria da Silva"
13 }
14 }'

amount é em reais: 10.5 cobra R$ 10,50. Os dados do pagador vão em info.

A carteira precisa ter uma conta de recebimento ativa vinculada. Sem conta vinculada, a resposta é 422 com type terminado em /wallet-without-receiving-account; com a conta inativa ou bloqueada, 403 com detail "This account is inactive or blocked". Veja Fluxo Pix.

A resposta 202 traz o Pix copia e cola em data.payload.qrCode e a transação em awaiting_payment.

6. Confirme pelo externalId

1curl --url 'https://api.monkeypay.app/api/v2/resource/transactions/external-id/pedido-1234' \
2 --header 'Authorization: Bearer <seu-token>'

Quando o pagador pagar, data.status passa a completed. Em produção, receba essa mudança por webhook em vez de consultar em laço.