Referência da API
Gerada de openapi.json — versão 1.0.0.
Gere cobranças Pix na sua plataforma e receba DePix.
O ponto que muda a sua integração: existe um atraso antifraude entre o Pix ser pago e o DePix ser liquidado. Uma cobrança paga fica em paid_pending_settlement antes de chegar a settled. Libere produto em settled, não em paid_pending_settlement.
Todos os valores são inteiros, em centavos de real.
Base: https://apiv2.pix2depix.com
Autenticação
Authorization: Bearer p2d_live_... em produção, p2d_test_... em sandbox. Gere no painel, em API. O segredo aparece uma única vez.
Endpoints
GET /v1/charges
Lista cobranças
Ordenadas da mais recente para a mais antiga. A paginação é por cursor: passe em startingAfter o id da última cobrança da página anterior.
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
externalId | query | não | O id do pedido no seu sistema. |
status | query | não | |
createdAfter | query | não | |
createdBefore | query | não | |
startingAfter | query | não | id da última cobrança da página anterior. |
limit | query | não |
Respostas
| Código | Significa |
|---|---|
| 200 | Uma página de cobranças |
| 400 | Parâmetro inválido |
| 401 | Chave ausente, inválida ou revogada |
| 429 | Limite atingido |
POST /v1/charges
Cria uma cobrança
Devolve o QR Code e o copia-e-cola.
201 quando a cobrança nasce agora. 200 quando o mesmo externalId (ou a mesma Idempotency-Key) já tinha criado esta cobrança com o mesmo corpo — repetir a criação não duplica nada nem vira erro.
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Key | header | não | Retry seguro de rede. Se a resposta se perder, repita a requisição com a mesma chave: você recebe a cobrança original em vez de uma segunda. |
Corpo
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amountInCents | integer | sim | Valor bruto em centavos. Mínimo 1000 (R$ 10,00), máximo 500000 (R$ 5.000,00). |
payerTaxNumber | string | sim | CPF ou CNPJ de quem vai pagar. Com ou sem pontuação. Obrigatório: é o provedor de Pix que exige, para identificar o pagador. |
payerName | string | não | Nome de quem vai pagar. Não é conferido — depois do pagamento devolvemos o nome que o banco informou. |
externalId | string | não | O id do pedido no seu sistema. Opcional, mas é o que torna a criação idempotente: o mesmo valor nunca vira duas cobranças. |
description | string | não | Some na resposta e nos eventos. Não vai para o extrato do pagador. |
metadata | object | não | Pares livres, devolvidos em toda resposta e em todo evento. |
{
"amountInCents": 25000,
"payerTaxNumber": "529.982.247-25",
"payerName": "Maria Silva",
"externalId": "pedido-8891",
"description": "Pedido #8891",
"metadata": {
"loja": "sp-01"
}
}
Respostas
| Código | Significa |
|---|---|
| 200 | Cobrança já existia com este externalId e o mesmo corpo |
| 201 | Cobrança criada |
| 400 | Corpo inválido (invalid_request) |
| 401 | Chave ausente, inválida ou revogada |
| 402 | O provedor de Pix recusou (provider_error) |
| 403 | Conta não liberada para cobrar (merchant_not_activated, charge_blocked, missing_merchant_id) |
| 409 | external_id_conflict (mesmo externalId, corpo diferente), idempotency_key_conflict ou charge_processing (a original ainda está sendo criada — repita em 1s) |
| 429 | Limite por chave atingido (rate_limited) |
POST /v1/split-charges
Cria uma cobrança com split
Igual a POST /v1/charges, mas o DePix líquido é dividido entre as suas carteiras depois da retenção.
- Taxa: a do seu plano + 1 ponto percentual, cobrada na mesma linha da conversão. A parcela fixa por depósito continua igual.
- Divisão: uma única transação Liquid com uma saída por destino, proporcional aos percentuais, sobre
amount.netInCents. A taxa de rede é nossa. - Quando: logo depois de
charge.settled(o DePix chegou à carteira de split). O fim chega emcharge.split.completed, com otxId; falha, emcharge.split.failed. - A configuração é imutável. Consulta, listagem e cancelamento são as rotas de sempre (
/v1/charges).
201/200 e idempotência funcionam como em POST /v1/charges — o split entra na comparação do corpo.
Guia passo a passo, com taxa, eventos e sandbox: Split de pagamento.
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Key | header | não | Retry seguro de rede. Se a resposta se perder, repita a requisição com a mesma chave: você recebe a cobrança original em vez de uma segunda. |
Corpo
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amountInCents | integer | sim | Valor bruto em centavos. Mínimo 1000 (R$ 10,00), máximo 500000 (R$ 5.000,00). |
payerTaxNumber | string | sim | CPF ou CNPJ de quem vai pagar. Com ou sem pontuação. Obrigatório: é o provedor de Pix que exige, para identificar o pagador. |
payerName | string | não | Nome de quem vai pagar. Não é conferido — depois do pagamento devolvemos o nome que o banco informou. |
externalId | string | não | O id do pedido no seu sistema. Opcional, mas é o que torna a criação idempotente: o mesmo valor nunca vira duas cobranças. |
description | string | não | Some na resposta e nos eventos. Não vai para o extrato do pagador. |
metadata | object | não | Pares livres, devolvidos em toda resposta e em todo evento. |
split | object | sim | { destinations: [{ address, percent }] } — entre 2 e 10 destinos (ver DestinoSplit), percentuais com até duas casas somando exatamente 100, endereços diferentes. |
{
"amountInCents": 25000,
"payerTaxNumber": "529.982.247-25",
"payerName": "Maria Silva",
"externalId": "pedido-8891",
"description": "Pedido #8891",
"metadata": {
"loja": "sp-01"
},
"split": {
"destinations": [
{
"address": "lq1qqf8er278e6nyvuwtgf39e6ewvdcnjupn9a86rzpx655y5lhkt0walu3djf9cklkxd3ryld97hu8h3xepw7sh2rlu7q45dcew5",
"percent": 60
},
{
"address": "ex1qw508d6qejxtdg4y5r3zarvary0c5xw7kxw5fx4",
"percent": 40
}
]
}
}
Respostas
| Código | Significa |
|---|---|
| 200 | Cobrança já existia com este externalId e o mesmo corpo |
| 201 | Cobrança criada |
| 400 | Corpo inválido (invalid_request) |
| 401 | Chave ausente, inválida ou revogada |
| 402 | O provedor de Pix recusou (provider_error) |
| 403 | Conta não liberada para cobrar (merchant_not_activated, charge_blocked, missing_merchant_id) |
| 409 | external_id_conflict (mesmo externalId, corpo diferente), idempotency_key_conflict ou charge_processing (a original ainda está sendo criada — repita em 1s) |
| 429 | Limite por chave atingido (rate_limited) |
| 503 | Split indisponível no momento (split_unavailable). Crie sem split ou tente mais tarde. |
GET /v1/charges/{id}
Consulta uma cobrança
Confirme por aqui antes de liberar produto. O webhook é o aviso rápido; esta rota é a verdade.
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
id | path | sim | O id que devolvemos na criação. |
Respostas
| Código | Significa |
|---|---|
| 200 | A cobrança |
| 401 | Chave ausente, inválida ou revogada |
| 404 | Não existe nesta conta e neste ambiente (charge_not_found) |
| 429 | Limite atingido |
POST /v1/charges/{id}/cancel
Cancela uma cobrança não paga
Só antes do pagamento.
⚠️ O QR Code continua tecnicamente pagável depois do cancelamento: nosso provedor de Pix não tem como invalidá-lo. Se o Pix cair mesmo assim, o pagamento vence e a cobrança volta a andar — você recebe charge.paid_pending_settlement como em qualquer outra. Tire o QR da frente do seu cliente ao cancelar.
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
id | path | sim |
Respostas
| Código | Significa |
|---|---|
| 200 | Cobrança cancelada |
| 401 | Chave ausente, inválida ou revogada |
| 404 | Não encontrada |
| 409 | Já paga, expirada ou cancelada (charge_not_cancelable) |
| 429 | Limite atingido |
GET /v1/account
Dados do comerciante, plano e taxa vigente
A taxa vem do seu plano assinado. Se você trocar de plano, ela muda aqui e nas cobranças novas — não guarde percentual no seu código.
Respostas
| Código | Significa |
|---|---|
| 200 | A conta |
| 401 | Chave ausente, inválida ou revogada |
POST /v1/webhooks/test
Dispara um evento de teste
Manda um charge.test para a URL configurada no painel, assinado igual a um evento de verdade. Serve para validar o seu código de conferência de assinatura.
Respostas
| Código | Significa |
|---|---|
| 202 | Evento enfileirado |
| 401 | Chave ausente, inválida ou revogada |
| 404 | Nenhuma URL de webhook configurada para este ambiente |
POST /v1/test/charges/{id}/advance
Empurra uma cobrança de teste para o estado pedido
Existe só com chave p2d_test_. É como você exercita a espera da liquidação e os webhooks sem um Pix de verdade. As transições respeitam a mesma máquina de estados da produção: voltar atrás é 409 invalid_transition.
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
id | path | sim |
Corpo
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
status | paid_pending_settlement | settled | expired | refunded | sim |
{
"status": "paid_pending_settlement"
}
Respostas
| Código | Significa |
|---|---|
| 200 | A cobrança no novo estado |
| 401 | Chave ausente, inválida ou revogada |
| 403 | Chamada com chave de produção (not_available_in_live) |
| 404 | Não encontrada |
| 409 | A cobrança não pode ir para esse estado (invalid_transition) |
GET /v1/withdrawals
Lista saques
Ordenados do mais recente para o mais antigo. A paginação é por cursor: passe em startingAfter o id do último saque da página anterior.
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
externalId | query | não | O id do saque no seu sistema. |
status | query | não | |
createdAfter | query | não | |
createdBefore | query | não | |
startingAfter | query | não | id do último saque da página anterior. |
limit | query | não |
Respostas
| Código | Significa |
|---|---|
| 200 | Uma página de saques |
| 400 | Parâmetro inválido |
| 401 | Chave ausente, inválida ou revogada |
| 429 | Limite atingido |
POST /v1/withdrawals
Cria um saque
O caminho inverso da cobrança: você manda DePix e recebe Pix na chave informada.
- Valor: informe
amountInCents(o Pix que quer receber, taxa por fora) oudepixAmountInCents(o DePix que vai enviar, taxa por dentro) — nunca os dois. - Taxa: R$ 3,00 fixos abaixo de R$ 100,00 de Pix; percentual daí para cima. A resposta traz os três números abertos em
amount. - Sua taxa (opcional):
merchantFeeBpscobra de quem saca uma taxa sua, que vai em DePix para o seu endereço padrão na mesma transação do repasse. Ex.: 1.000 DePix com 3% nossos emerchantFeeBps: 100→ R$ 960,00 no Pix. Para mostrar o valor antes, useGET /v1/withdrawals/quote. - Depois de criar: envie exatamente
deposit.amountInCentsde DePix paradeposit.address, na Liquid. O endereço é só deste saque — não o reaproveite. - Quando o Pix sai: assim que o depósito confirma na rede, o saque vai para
processinge o Pix é pago em seguida (withdrawal.paid, com oendToEndId).
Não há rota de cancelamento: um saque sem depósito não custa nada e morre parado.
Guia passo a passo, com taxa, eventos e sandbox: Saque.
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Key | header | não | Retry seguro de rede. Se a resposta se perder, repita a requisição com a mesma chave: você recebe o saque original em vez de um segundo. |
Corpo
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amountInCents | integer | não | O Pix que você quer receber, em centavos. A taxa sai por fora: você envia este valor mais a taxa. |
depixAmountInCents | integer | não | Ou o DePix que você vai enviar, em centavos. A taxa sai por dentro, e o Pix é o que sobra. |
merchantFeeBps | integer | não | A sua taxa sobre quem saca, em pontos-base (100 = 1%, até 10%). Incide sobre o mesmo valor que a nossa e vai em DePix para o seu endereço padrão do painel, na mesma transação do repasse. Exige endereço padrão cadastrado (merchant_address_missing). |
pixKeyType | cpf | cnpj | email | telefone | aleatoria | sim | |
pixKey | string | sim | A chave que recebe o Pix. Normalizamos o formato; chave inválida para o tipo é invalid_request. |
payeeTaxNumber | string | sim | CPF ou CNPJ do dono da chave — é a titularidade que o provedor confere. Quando a chave é um CPF/CNPJ, os dois precisam ser o mesmo documento. |
externalId | string | não | O id do saque no seu sistema. Dá idempotência de graça: o mesmo valor nunca vira dois saques. |
description | string | não | |
metadata | object | não | Até 20 chaves. Volta na consulta e no webhook. |
{
"amountInCents": 100000,
"pixKeyType": "aleatoria",
"pixKey": "6a4f5c1e-8b2d-4a7f-9c3e-1d2b3a4c5d6e",
"payeeTaxNumber": "529.982.247-25",
"externalId": "saque-77"
}
Respostas
| Código | Significa |
|---|---|
| 200 | Saque já existia com este externalId e o mesmo corpo |
| 201 | Saque criado |
| 400 | Corpo inválido, ou o valor fora dos limites (invalid_request) |
| 401 | Chave ausente, inválida ou revogada |
| 403 | Conta não liberada para sacar (merchant_not_activated, charge_blocked) |
| 409 | external_id_conflict (mesmo externalId, corpo diferente), idempotency_key_conflict ou withdrawal_processing (o original ainda está sendo criado — repita em 1s) |
| 422 | merchantFeeBps informado, mas a conta não tem endereço DePix padrão (merchant_address_missing) |
| 429 | Limite por chave atingido (rate_limited) |
| 503 | Saque temporariamente indisponível (withdrawal_unavailable) |
GET /v1/withdrawals/quote
Cota um saque
Os valores que o saque teria, sem criar nada. É o número para mostrar a quem saca antes de confirmar: a conta é a mesma da criação, então o saque criado com os mesmos parâmetros sai com os mesmos valores.
Informe exatamente um de amountInCents (Pix que quer receber) ou depixAmountInCents (DePix que vai enviar). merchantFeeBps é a sua taxa, como na criação; aqui não exige endereço padrão.
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
amountInCents | query | não | O Pix que quem saca quer receber. Taxas por fora. |
depixAmountInCents | query | não | Ou o DePix que vai enviar. Taxas por dentro. |
merchantFeeBps | query | não | A sua taxa, em pontos-base (100 = 1%). |
Respostas
| Código | Significa |
|---|---|
| 200 | A cotação |
| 400 | Os dois valores (ou nenhum), valor fora dos limites ou Pix abaixo de R$ 10,00 depois das taxas (invalid_request) |
| 401 | Chave ausente, inválida ou revogada |
| 429 | Limite atingido |
GET /v1/withdrawals/{id}
Consulta um saque
O estado de agora. Enquanto o DePix não chega, o saque fica em awaiting_deposit.
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
id | path | sim | O id que a criação devolveu. |
Respostas
| Código | Significa |
|---|---|
| 200 | O saque |
| 401 | Chave ausente, inválida ou revogada |
| 404 | Não encontrado nesta conta (withdrawal_not_found) |
| 429 | Limite atingido |
POST /v1/test/withdrawals/{id}/advance
Empurra um saque de teste para o estado pedido
Existe só com chave p2d_test_. No sandbox ninguém envia DePix: é esta rota que faz o depósito chegar e o Pix cair, para você exercitar withdrawal.processing e withdrawal.paid. Voltar atrás é 409 invalid_transition.
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
id | path | sim |
Corpo
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
status | processing | paid | failed | sim |
{
"status": "processing"
}
Respostas
| Código | Significa |
|---|---|
| 200 | O saque no novo estado |
| 401 | Chave ausente, inválida ou revogada |
| 403 | Chamada com chave de produção (not_available_in_live) |
| 404 | Não encontrado (withdrawal_not_found) |
| 409 | O saque não pode ir para esse estado (invalid_transition) |
Webhook
POST <sua URL>
Evento de cobrança
Enviamos para a URL que você configurou no painel a cada mudança de estado.
A entrega é at-least-once: o mesmo evento pode chegar mais de uma vez. Deduplique pelo campo id.
Responda 2xx rápido. Qualquer outra coisa — inclusive 3xx — conta como falha e entra na fila de retentativa, que insiste por até 24h com espera crescente.
| Parâmetro | Onde | Obrigatório | Descrição |
|---|---|---|---|
X-P2D-Event-Id | header | sim | Id do evento. É por ele que você deduplica. |
X-P2D-Event-Type | header | sim | |
X-P2D-Timestamp | header | sim | Epoch em segundos. Recuse o que estiver a mais de 300s do seu relógio. |
X-P2D-Signature | header | sim | v1= + HMAC-SHA256 de <timestamp>.<corpo bruto> com o segredo do webhook, em hex. |
Corpo
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | sim | Imutável. Deduplique por ele. |
type | charge.awaiting_payment | charge.paid_pending_settlement | charge.settled | charge.expired | charge.canceled | charge.failed | charge.refunded | charge.split.completed | charge.split.failed | withdrawal.processing | withdrawal.paid | withdrawal.failed | charge.test | sim | |
createdAt | string | sim | |
environment | live | test | sim | |
data | object | sim | Um objeto por família de evento: charge.* traz charge, withdrawal.* traz withdrawal. |
Respostas
| Código | Significa |
|---|---|
| 200 | Recebido. Qualquer 2xx serve. |
Objetos
CriarCobranca
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amountInCents | integer | sim | Valor bruto em centavos. Mínimo 1000 (R$ 10,00), máximo 500000 (R$ 5.000,00). |
payerTaxNumber | string | sim | CPF ou CNPJ de quem vai pagar. Com ou sem pontuação. Obrigatório: é o provedor de Pix que exige, para identificar o pagador. |
payerName | string | não | Nome de quem vai pagar. Não é conferido — depois do pagamento devolvemos o nome que o banco informou. |
externalId | string | não | O id do pedido no seu sistema. Opcional, mas é o que torna a criação idempotente: o mesmo valor nunca vira duas cobranças. |
description | string | não | Some na resposta e nos eventos. Não vai para o extrato do pagador. |
metadata | object | não | Pares livres, devolvidos em toda resposta e em todo evento. |
Cobranca
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | sim | Nosso id. 24 caracteres hexadecimais. |
externalId | string | não | |
status | created | awaiting_payment | paid_pending_settlement | settled | expired | canceled | failed | refunded | sim | Veja a tabela de status. |
environment | live | test | sim | |
amount | Valores | sim | A taxa é uma parcela fixa por depósito mais um percentual do seu plano. |
pix | Pix | sim | |
settlement | Liquidacao | sim | O caminho do dinheiro depois do pagamento. |
payer | object | sim | |
description | string | não | |
metadata | object | não | |
createdAt | string | sim | |
updatedAt | string | sim | |
split | Split | não | Só em cobranças criadas por POST /v1/split-charges. |
Valores
A taxa é uma parcela fixa por depósito mais um percentual do seu plano.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
grossInCents | integer | sim | O que o seu cliente paga no Pix. |
feeBps | integer | sim | Percentual do plano em pontos-base. 199 = 1,99%. |
feeFixedInCents | integer | sim | Parcela fixa por depósito. |
feeInCents | integer | sim | Fixa + percentual. |
netInCents | integer | sim | O que chega em DePix na sua carteira. |
Pix
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
qrCode | string | não | Copia-e-cola. É isto que vira QR Code na sua tela. |
qrCodeImageUrl | string | não | Imagem pronta do QR. Pode não vir — gere o QR do qrCode se preferir. |
expiresAt | string | não | Passou disso, a cobrança vira expired. |
Liquidacao
O caminho do dinheiro depois do pagamento.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
delayHours | integer | não | Retenção antifraude entre o Pix pago e o DePix liquidado. |
estimatedAt | string | não | Quando o DePix deve sair. Só existe depois do pagamento — é a data que você mostra ao seu cliente. |
paidAt | string | não | |
settledAt | string | não | |
blockchainTxId | string | não | Comprovante on-chain na Liquid. Só depois de settled. |
ListaDeCobrancas
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
data | Cobranca[] | sim | |
hasMore | boolean | sim | Se true, peça a próxima página com startingAfter no id do último item. |
Conta
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
merchantId | string | sim | Seu identificador no provedor de Pix. |
email | string | sim | |
environment | live | test | sim | O ambiente da chave que você usou. |
plan | object | sim | |
feeFixedInCents | integer | sim | Parcela fixa por depósito. |
limits | object | sim | |
settlementDelayHours | integer | sim | Retenção antifraude aplicada às cobranças. |
webhook | object | não |
Evento
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | sim | Imutável. Deduplique por ele. |
type | charge.awaiting_payment | charge.paid_pending_settlement | charge.settled | charge.expired | charge.canceled | charge.failed | charge.refunded | charge.split.completed | charge.split.failed | withdrawal.processing | withdrawal.paid | withdrawal.failed | charge.test | sim | |
createdAt | string | sim | |
environment | live | test | sim | |
data | object | sim | Um objeto por família de evento: charge.* traz charge, withdrawal.* traz withdrawal. |
Erro
O formato é o mesmo em todos os endpoints e em todos os códigos HTTP.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
error | object | sim |
DestinoSplit
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
address | string | sim | Endereço Liquid que recebe esta parte. Validado na criação (formato e checksum). |
percent | number | sim | Parte do valor líquido, com até duas casas. A soma dos destinos precisa ser exatamente 100. |
CriarCobrancaComSplit
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amountInCents | integer | sim | Valor bruto em centavos. Mínimo 1000 (R$ 10,00), máximo 500000 (R$ 5.000,00). |
payerTaxNumber | string | sim | CPF ou CNPJ de quem vai pagar. Com ou sem pontuação. Obrigatório: é o provedor de Pix que exige, para identificar o pagador. |
payerName | string | não | Nome de quem vai pagar. Não é conferido — depois do pagamento devolvemos o nome que o banco informou. |
externalId | string | não | O id do pedido no seu sistema. Opcional, mas é o que torna a criação idempotente: o mesmo valor nunca vira duas cobranças. |
description | string | não | Some na resposta e nos eventos. Não vai para o extrato do pagador. |
metadata | object | não | Pares livres, devolvidos em toda resposta e em todo evento. |
split | object | sim | { destinations: [{ address, percent }] } — entre 2 e 10 destinos (ver DestinoSplit), percentuais com até duas casas somando exatamente 100, endereços diferentes. |
Split
Só em cobranças criadas por POST /v1/split-charges.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
status | pending | sending | broadcast | completed | failed | sim | pending: aguardando o DePix liberado. sending/broadcast: transação montada e transmitida, aguardando confirmação. completed: confirmada na Liquid. failed: o envio falhou; o DePix segue guardado e a equipe foi avisada. |
planFeeBps | integer | sim | Taxa do seu plano no momento da cobrança. amount.feeBps já inclui o +1 ponto percentual do split. |
destinations | object[] | sim | |
txId | string | não | Transação Liquid do split — uma só, com uma saída por destino. |
completedAt | string | não | |
failureReason | string | não |
CriarSaque
Informe exatamente um dos dois valores: amountInCents (lado do Pix) ou depixAmountInCents (lado do DePix).
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amountInCents | integer | não | O Pix que você quer receber, em centavos. A taxa sai por fora: você envia este valor mais a taxa. |
depixAmountInCents | integer | não | Ou o DePix que você vai enviar, em centavos. A taxa sai por dentro, e o Pix é o que sobra. |
merchantFeeBps | integer | não | A sua taxa sobre quem saca, em pontos-base (100 = 1%, até 10%). Incide sobre o mesmo valor que a nossa e vai em DePix para o seu endereço padrão do painel, na mesma transação do repasse. Exige endereço padrão cadastrado (merchant_address_missing). |
pixKeyType | cpf | cnpj | email | telefone | aleatoria | sim | |
pixKey | string | sim | A chave que recebe o Pix. Normalizamos o formato; chave inválida para o tipo é invalid_request. |
payeeTaxNumber | string | sim | CPF ou CNPJ do dono da chave — é a titularidade que o provedor confere. Quando a chave é um CPF/CNPJ, os dois precisam ser o mesmo documento. |
externalId | string | não | O id do saque no seu sistema. Dá idempotência de graça: o mesmo valor nunca vira dois saques. |
description | string | não | |
metadata | object | não | Até 20 chaves. Volta na consulta e no webhook. |
ValoresDoSaque
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
depixInCents | integer | sim | O DePix que precisa chegar no endereço de depósito. |
feeInCents | integer | sim | A taxa: R$ 3,00 fixos abaixo de R$ 100,00 de Pix, percentual daí para cima. |
payoutInCents | integer | sim | O Pix que cai na chave. |
feeBps | integer | não | O percentual usado, em pontos-base. Ausente quando valeu a taxa fixa. |
merchantFeeInCents | integer | não | A sua taxa, em DePix para o seu endereço padrão. Só existe quando o saque tem merchantFeeBps. Vale depixInCents = payoutInCents + feeInCents + merchantFeeInCents. |
merchantFeeBps | integer | não | A taxa que você pediu na criação, em pontos-base. |
DepositoDoSaque
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
address | string | sim | Endereço Liquid só deste saque. Não reaproveite em outro: é o endereço, e não o valor, que diz de quem é o DePix que chegou. |
amountInCents | integer | sim | Quanto enviar, em centavos de DePix. Igual a amount.depixInCents. |
receivedAt | string | não | Quando o depósito foi confirmado na Liquid. |
PixDoSaque
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
key | string | sim | A chave, já normalizada. |
keyType | cpf | cnpj | email | telefone | aleatoria | sim | |
taxNumber | string | sim | Documento do dono da chave, mascarado. |
endToEndId | string | não | Comprovante do Pix no Banco Central. Só depois de paid. |
paidAt | string | não |
Saque
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | sim | Nosso id. 24 caracteres hexadecimais. |
externalId | string | não | |
status | awaiting_deposit | processing | paid | failed | sim | awaiting_deposit espera o seu DePix; processing é o Pix a caminho; paid acabou. |
environment | live | test | sim | |
amount | ValoresDoSaque | sim | |
deposit | DepositoDoSaque | sim | |
pix | PixDoSaque | sim | |
description | string | não | |
metadata | object | não | |
createdAt | string | sim | |
updatedAt | string | sim |
ListaDeSaques
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
data | Saque[] | sim | |
hasMore | boolean | sim | Se true, peça a próxima página com startingAfter no id do último item. |
CotacaoDeSaque
Os valores que o saque teria, sem criar nada.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
depixInCents | integer | sim | O DePix que quem saca precisa enviar. |
payoutInCents | integer | sim | O Pix que cai na chave. É o número para mostrar a quem saca. |
feeInCents | integer | sim | A nossa taxa. |
feeBps | integer | não | O nosso percentual, em pontos-base. Ausente quando valeu a taxa fixa. |
merchantFeeInCents | integer | sim | A sua taxa, que vai em DePix para o seu endereço padrão. |
merchantFeeBps | integer | sim | A taxa pedida, em pontos-base. |