Bunne Docs

Cobrança internacional

Cobre na moeda do comprador: moedas aceitas, o que muda na requisição e na resposta.

Você pode cobrar na moeda do seu comprador. Envie currency junto com amount na criação da cobrança.

Moedas aceitas

BRL (padrão), USD, EUR, GBP, CHF, CAD, MXN, ARS, CLP, COP e PEN.

Cada moeda precisa estar habilitada para a sua conta antes do primeiro uso. Sem isso a cobrança é recusada com currency_not_supported — fale com o seu contato comercial para liberar.

amount é na menor unidade da moeda

USD 5,00 é 500. Mas a menor unidade não é sempre o centavo: o peso chileno não tem subdivisão, então { "amount": 500, "currency": "CLP" } são 500 pesos, não 5,00.

O que muda em relação a uma cobrança em BRL

  • Somente cartão (credit_card / debit_card). pix e boleto retornam erro de validação.
  • installments deve ser 1.
  • buyer.document e buyer.phone são opcionais. Em BRL os dois continuam obrigatórios. Quando você enviar, precisam ser válidos (CPF/CNPJ; telefone com 10 a 15 dígitos).
  • Campo opcional em branco conta como não informado: null, "" e a chave ausente significam a mesma coisa. Vale também para buyer.ip, street_number e district.
  • buyer.address.country aceita qualquer país (ISO de 2 letras). Fora do Brasil, o zip_code não é validado como CEP.

Requisição

curl -X POST $API_BASE_URL/charges \  -H "Authorization: Bearer sk_live_xxx" \  -H "Idempotency-Key: order_7781_charge" \  -H "Content-Type: application/json" \  -d '{    "amount": 500,    "currency": "USD",    "payment_method": "CREDIT_CARD",    "installments": 1,    "card_token": "tok_xxx",    "buyer": {      "name": "Ada Lovelace",      "email": "ada@example.com",      "phone": "14155552671",      "address": {        "line_1": "1 Infinite Loop",        "zip_code": "95014",        "city": "Cupertino",        "state": "CA",        "country": "US"      }    }  }'

Resposta

{  "object": "charge",  "id": "ch_xxx",  "status": "paid",  "amount_cents": 2582,  "currency": "BRL",  "presentment": {    "currency": "USD",    "amount_cents": 500  },  "fx": {    "base_currency": "BRL",    "rate_micros": 5163400,    "quoted_at": "2026-08-11T20:56:23.000Z"  },  "payment_method": "credit_card",  "installments": 1,  "request_id": "req_xxx"}
  • amount_cents e currency — o valor e a moeda em que a cobrança foi processada. É o que aparece em taxas, recebíveis, extrato e conciliação.
  • presentment — o valor e a moeda que você enviou.
  • fx.rate_micros — a taxa aplicada nesta cobrança, em inteiro: micro-unidades de fx.base_currency por 1 unidade maior de presentment.currency. 5163400 é 5,163400. Nunca use float para reconstruir o valor — amount_cents já é o número final.
  • fx.quoted_at — quando a taxa usada foi apurada.

presentment e fx são aditivos: uma cobrança em BRL não traz essas chaves, então nada muda na sua integração atual.

Erros específicos

  • currency_not_supported — a moeda não está habilitada para a sua conta.
  • exchange_rate_unavailable (503) — não foi possível precificar esta moeda agora. É transitório: repita a requisição em seguida, reusando a mesma Idempotency-Key.
  • cross_border_acquirer_unavailable — a sua conta não está habilitada para processar esta cobrança. Fale com o seu contato comercial.

3-D Secure

Por padrão, cobrança em moeda estrangeira não passa por 3-D Secure e portanto não retorna requires_action. É configurável por conta.