Criar cobrança
Quick Reference
/api/v1/bank/wallet/charge/Bearer TokenCriar uma nova cobrançaQuando usar este endpoint
| Cenário | Como criar cobrança ajuda |
|---|---|
| Aceitar um pagamento com cartão de crédito | Defina type_charge: "credit_card" com os campos do cartão ou deixe o SDK/Checkout lidar com eles |
| Oferecer pagamento instantâneo PIX | Defina type_charge: "pix" — a resposta inclui QR code e código copia e cola |
| Gerar um Boleto bancário | Defina type_charge: "boleto" — a resposta inclui código de barras e data de vencimento |
| Aceitar Apple Pay / Google Pay | Defina type_charge: "applepay" ou "googlepay" com dados do token |
| Configurar cobrança recorrente | Adicione um objeto subscription para criar cobrança + assinatura em uma única chamada |
| Fluxo somente autorização | Defina capture: false para hotéis, locadoras de veículos, padrões de pré-autorização |
Escolha seu método de pagamento
Selecione um método abaixo. A página mostrará apenas os campos, código e resposta relevantes para esse método.
Parâmetros da requisição (todos os métodos)
Estes campos são obrigatórios para todos os métodos de pagamento:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
wallet_uuid | string (UUID) | Sim | Carteira que recebe os fundos |
merchant_id | string | Sim | Identificador do merchant |
payer_name | string | Sim | Nome completo do pagador |
payer_email | string | Sim | E-mail do pagador |
payer_tax_id | string | Sim | Documento fiscal (CPF no Brasil, RFC no México, RUT no Chile, CUIT na Argentina) |
payer_cell_phone | string | Sim | Celular do pagador com código do país |
installment_value | number | Sim | Valor da cobrança por parcela. Para moedas sem decimais (CLP, COP), use inteiros — veja regras de moeda abaixo |
installment_count | integer | Sim | Número de parcelas (use 1 para pagamento à vista) |
currency | string | Sim | Código de moeda ISO 4217: BRL, MXN, CLP, COP, PEN, ARS |
due_date | string | Sim | Data de vencimento no formato YYYY-MM-DD |
description | string | Sim | Descrição da cobrança exibida ao pagador |
type_charge | string | Sim | Método de pagamento — veja o seletor acima |
payer_address | object | Sim | Endereço de cobrança (veja abaixo) |
Objeto de endereço do pagador
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
street | string | Sim | Nome da rua |
address_number | string | Sim | Número |
complement | string | Sim | Apartamento, sala, andar |
neighborhood | string | Sim | Bairro |
city | string | Sim | Cidade |
state | string | Sim | Código do estado (ex.: SP, CDMX) |
postal_code | string | Sim | CEP / Código postal |
country | string | Não | ISO 3166-1 alfa-2 (ex.: BR). Padrão: país da carteira |
Regras de valor por moeda
| Moeda | Decimais | Formato | Exemplo | Comportamento no backend |
|---|---|---|---|---|
| BRL | 2 | 150.00 | "installment_value": 150.00 | Armazenado como Numeric(11,2) |
| MXN | 2 | 2500.00 | "installment_value": 2500.00 | Armazenado como Numeric(11,2) |
| USD | 2 | 100.00 | "installment_value": 100.00 | Armazenado como Numeric(11,2) |
| PEN | 2 | 350.00 | "installment_value": 350.00 | Armazenado como Numeric(11,2) |
| ARS | 2 | 85000.00 | "installment_value": 85000.00 | Armazenado como Numeric(11,2) |
| CLP | 0 | 50000 | "installment_value": 50000 | Truncado para inteiro antes de enviar ao adquirente |
| COP | 0 | 200000 | "installment_value": 200000 | Truncado para inteiro antes de enviar ao adquirente |
CLP (Peso Chileno) e COP (Peso Colombiano) não possuem unidades fracionárias. O backend converte valores para inteiros antes de enviar aos adquirentes. Enviar 50000.50 para CLP resulta em 50000. Sempre envie números inteiros para essas moedas.
Campos opcionais (todos os métodos)
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
webhook_url | string | — | Substituir a URL de webhook padrão para esta cobrança |
redirect_url | string | — | URL de retorno após página de checkout ou desafio 3DS |
reference_external_id | string | — | Seu ID de pedido interno para conciliação |
is_async | boolean | false | Processamento assíncrono quando suportado |
shipping_address | object | — | Endereço de entrega (mesma estrutura de payer_address) |
Campos específicos de cartão
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
card_number | string | Somente H2H | PAN do cartão (SDK e Checkout tratam isso) |
card_name | string | Somente H2H | Nome impresso no cartão |
card_expiry_month | string | Somente H2H | Mês de validade MM |
card_expiry_year | string | Somente H2H | Ano de validade YYYY |
card_cvv | string | Somente H2H | Código de verificação do cartão |
capture | boolean | Não | true (padrão) = captura automática; false = somente autorização |
threeds_authentication | boolean | Não | true para forçar autenticação 3DS |
device_info | object | 3DS | Fingerprint do navegador/dispositivo para 3DS (veja abaixo) |
antifraud_info | object | Não | Dados comportamentais para scoring antifraude |
subscription | object | Não | Cria uma assinatura recorrente com esta cobrança |
- Integração H2H: Você envia
card_number,card_name,card_expiry_month,card_expiry_year,card_cvvdiretamente. - Integração SDK: O SDK coleta os dados do cartão no navegador. Você envia apenas os campos universais.
- Página de Checkout: A página hospedada da A55 coleta tudo. Você envia apenas campos universais +
redirect_url.
Objeto de informações do dispositivo (3DS)
Obrigatório quando threeds_authentication: true em fluxos H2H:
| Campo | Tipo | Descrição |
|---|---|---|
ip_address | string | Endereço IP do pagador |
user_agent | string | String user-agent do navegador |
device_id | string | Fingerprint do dispositivo gerado pelo SDK |
session_id | string | ID de sessão DDC do emissor |
http_accept_content | string | Header Accept do navegador |
http_browser_language | string | Idioma do navegador (ex.: pt-BR) |
http_browser_java_enabled | boolean | Java habilitado no navegador |
http_browser_javascript_enabled | boolean | JavaScript habilitado |
http_browser_color_depth | string | Profundidade de cor (ex.: 24) |
http_browser_screen_height | string | Altura da tela em pixels |
http_browser_screen_width | string | Largura da tela em pixels |
http_browser_time_difference | string | Deslocamento UTC (ex.: -3) |
Objeto de informações antifraude
Melhora o scoring de fraude e taxas de aprovação:
| Campo | Tipo | Descrição |
|---|---|---|
sales_channel | string | web, app, pos, marketplace, link, subscription, api |
cardholder_logged_in | boolean | Se o pagador estava logado |
cardholder_since_days | integer | Dias desde a criação da conta |
purchase_history | integer | Total de compras anteriores |
days_since_last_purchase_merchant | integer | Dias desde a última compra com você |
Objeto de assinatura
Cria uma assinatura recorrente vinculada a esta cobrança:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cycle | string | Sim | weekly, biweekly, monthly, quarterly, semiannually, yearly |
end_date | string | Não | Data final da assinatura YYYY-MM-DD (omita para indefinido) |
Exemplos de código
Cobrança com cartão de crédito
- cURL
- Python
- JavaScript
curl -s -X POST https://core-manager.a55.tech/api/v1/bank/wallet/charge/ \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"merchant_id": "11111111-1111-1111-1111-111111111111",
"payer_name": "Maria Silva",
"payer_email": "maria@example.com",
"payer_tax_id": "123.456.789-09",
"payer_cell_phone": "+5511999999999",
"installment_value": 150.00,
"installment_count": 3,
"currency": "BRL",
"due_date": "2026-12-31",
"description": "Order #42 — 3x installments",
"type_charge": "credit_card",
"card_number": "4024007153763191",
"card_name": "MARIA SILVA",
"card_expiry_month": "12",
"card_expiry_year": "2030",
"card_cvv": "123",
"capture": true,
"webhook_url": "https://your-app.com/webhooks/a55",
"payer_address": {
"street": "Av. Paulista",
"address_number": "1000",
"complement": "Sala 101",
"neighborhood": "Bela Vista",
"city": "São Paulo",
"state": "SP",
"postal_code": "01310-100",
"country": "BR"
}
}'
import requests
charge = requests.post(
"https://core-manager.a55.tech/api/v1/bank/wallet/charge/",
json={
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"merchant_id": "11111111-1111-1111-1111-111111111111",
"payer_name": "Maria Silva",
"payer_email": "maria@example.com",
"payer_tax_id": "123.456.789-09",
"payer_cell_phone": "+5511999999999",
"installment_value": 150.00,
"installment_count": 3,
"currency": "BRL",
"due_date": "2026-12-31",
"description": "Order #42 — 3x installments",
"type_charge": "credit_card",
"card_number": "4024007153763191",
"card_name": "MARIA SILVA",
"card_expiry_month": "12",
"card_expiry_year": "2030",
"card_cvv": "123",
"capture": True,
"webhook_url": "https://your-app.com/webhooks/a55",
"payer_address": {
"street": "Av. Paulista",
"address_number": "1000",
"complement": "Sala 101",
"neighborhood": "Bela Vista",
"city": "São Paulo",
"state": "SP",
"postal_code": "01310-100",
"country": "BR",
},
},
headers={
"Authorization": f"Bearer {token}",
"Content-Type": "application/json",
},
).json()
print(f"Charge: {charge['charge_uuid']} — Status: {charge['status']}")
print(f"Total: {charge['installment_count']}x R$ {charge['installments'][0]['local_currency']}")
const charge = await fetch(
"https://core-manager.a55.tech/api/v1/bank/wallet/charge/",
{
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
wallet_uuid: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
merchant_id: "11111111-1111-1111-1111-111111111111",
payer_name: "Maria Silva",
payer_email: "maria@example.com",
payer_tax_id: "123.456.789-09",
payer_cell_phone: "+5511999999999",
installment_value: 150.0,
installment_count: 3,
currency: "BRL",
due_date: "2026-12-31",
description: "Order #42 — 3x installments",
type_charge: "credit_card",
card_number: "4024007153763191",
card_name: "MARIA SILVA",
card_expiry_month: "12",
card_expiry_year: "2030",
card_cvv: "123",
capture: true,
webhook_url: "https://your-app.com/webhooks/a55",
payer_address: {
street: "Av. Paulista",
address_number: "1000",
complement: "Sala 101",
neighborhood: "Bela Vista",
city: "São Paulo",
state: "SP",
postal_code: "01310-100",
country: "BR",
},
}),
}
).then(r => r.json());
console.log(`Charge: ${charge.charge_uuid} — Status: ${charge.status}`);
console.log(`Total: ${charge.installment_count}x R$ ${charge.installments[0].local_currency}`);
Resposta
Ciclo de vida da cobrança
Campos da resposta
| Campo | Tipo | Descrição |
|---|---|---|
charge_uuid | string | Identificador único da cobrança |
status | string | issued, pending, confirmed, paid, error, canceled, refunded |
local_currency | number | Valor na moeda de liquidação da carteira |
currency | string | Código de moeda ISO 4217 |
usd_currency | number | Valor equivalente em USD |
eur_currency | number | Valor equivalente em EUR |
type | string | Método de pagamento utilizado |
date | string | Data de criação da cobrança |
description | string | Descrição da cobrança |
due_date | string | Data de vencimento do pagamento |
installment_count | integer | Número de parcelas |
installments | array | Detalhamento por parcela |
charge_payment_url | string | URL de pagamento Checkout/SDK (quando aplicável) |
url_3ds | string | URL de redirecionamento do desafio 3DS (somente H2H) |
message | array/null | Detalhes do erro quando status: "error" |
subscription | object | Detalhes da assinatura (quando subscription foi incluído) |
Exemplo de resposta de cartão
{
"charge_uuid": "51dcca6e-7310-4b73-a94c-90835408f2ff",
"local_currency": 150.00,
"currency": "BRL",
"usd_currency": 26.90,
"eur_currency": 23.58,
"type": "credit_card",
"date": "2026-03-20",
"description": "Order #42 — 3x installments",
"due_date": "2026-12-31",
"status": "confirmed",
"message": null,
"installment_count": 3,
"installments": [
{
"local_currency": 50.00,
"currency": "BRL",
"usd_currency": 8.97,
"eur_currency": 7.86,
"due_date": "2026-12-31",
"status": "confirmed",
"installment_number": 1
},
{
"local_currency": 50.00,
"currency": "BRL",
"usd_currency": 8.97,
"eur_currency": 7.86,
"due_date": "2027-01-31",
"status": "confirmed",
"installment_number": 2
},
{
"local_currency": 50.00,
"currency": "BRL",
"usd_currency": 8.97,
"eur_currency": 7.86,
"due_date": "2027-02-28",
"status": "confirmed",
"installment_number": 3
}
]
}
Resposta de erro
{
"charge_uuid": "51dcca6e-7310-4b73-a94c-90835408f2ff",
"status": "error",
"message": [
{
"code": "error_threeds_authentication",
"source": "authentication",
"description": "Issuing bank declined the authentication"
}
]
}
Códigos de erro
| Código | Significado | O que fazer |
|---|---|---|
INVALID_TYPE_CHARGE | Valor de type_charge não suportado | Verifique os valores permitidos no seletor acima |
errors.wallet.not_found | UUID da carteira não existe | Verifique o wallet_uuid |
errors.unexpected | Erro interno do servidor | Tente novamente com backoff exponencial; entre em contato com o suporte se persistir |
error_threeds_authentication | Autenticação 3DS falhou | Peça ao pagador para tentar novamente ou usar outro cartão |
Nunca dependa apenas da resposta síncrona para o status final do pagamento. A cobrança pode passar por vários estados assincronamente. Defina webhook_url e trate o webhook como a fonte da verdade.