Clientes internacionais
Cartão internacional: UI e checkout de vocês, cobrança pela API Reborn. Sem PIX nem payment link.
Este guia é para quem processa cartão internacional com perfil internacional. A API aceita as moedas de presentment das contas habilitadas (Américas e/ou Europa) — USD, CAD, EUR, GBP e as demais da região. A autenticação é a mesma da API de seller: X-Api-Key gerada em Integrações. Base sandbox: https://sandbox-api.rebornpay.io. Sempre envie Idempotency-Key na criação da transação.
| Modo | Quando usar | Status |
|---|---|---|
| Direct API | Checkout e UI de vocês. O servidor chama POST /v1/transactions; o 3DS completa no browser com o cliente Reborn. | Disponível agora |
| Reborn Elements | Collect (PCI) e confirmação 3DS no browser. Payment Element e hosted internacionais entram depois. | Disponível agora — payments.collect / payments.confirm |
A integração internacional é HTTP na API Reborn + @rebornpay/elements no browser. O servidor cria a cobrança com sk_; o browser usa pk_ só para Collect e 3DS. Em Integrações, cadastre as origens do checkout próprio na publishable key — isso libera CORS para Collect e 3DS. Não use SDK de adquirente. Payment Element e hosted internacionais entram no mesmo pacote depois.
- Checkout sessions, payment links, PIX
POST /v1/transactions/threeds/*e@rebornpay/checkout-3ds— 3DS do checkout Brasilcard.cardTokendo tokenize Brasil — recusado no path internacionaltransactions.runThreeDsno Elements — mesmo fluxo Brasil- Parcelas:
installmentsdeve ser1
Enquanto o Card Vault não estiver salvo no dashboard, a API aceita PAN de teste em claro. Cartões: 4242424242424242 (sucesso), 4000002500003155 (3DS), 4000000000000002 (recusa). Envie currency no ISO da cobrança (ex. USD, EUR, JPY). Com as duas regiões ativas, moedas europeias vão para a conta Europa; o restante, para as Américas. A lista completa vem em allowedCurrencies do perfil internacional.
{
"paymentMethod": "CREDIT_CARD",
"amount": 100,
"currency": "USD",
"description": "Pedido sandbox",
"buyer": {
"name": "Jane Doe",
"email": "jane@example.com"
},
"card": {
"number": "4242424242424242",
"expirationMonth": "12",
"expirationYear": "28",
"cvv": "123",
"holderName": "JANE DOE"
}
}curl -X POST "https://sandbox-api.rebornpay.io/v1/transactions" \
-H "X-Api-Key: rk_test_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d @charge.jsonSe a resposta vier PENDING com pendingAction.clientSecret, complete o desafio no browser com reborn.payments.confirm. O SDK usa pendingAction.publishableKey (ou GET /v1/payments/config) — não cole chave de 3DS no frontend.
Confirm: POST /v1/transactions/{id}/3ds/confirm com a pk_ e clientSecret no body. Com sk_ o body é opcional.
import { loadElements } from "@rebornpay/elements";
const reborn = await loadElements({
publishableKey: "pk_test_...",
apiBaseUrl: "https://sandbox-api.rebornpay.io",
});
// created = resposta de POST /v1/transactions no seu servidor (sk_)
if (created.status === "PENDING" && created.pendingAction?.clientSecret) {
await reborn.payments.confirm({
transactionId: created.id,
clientSecret: created.pendingAction.clientSecret,
publishableKey: created.pendingAction.publishableKey,
});
}Cadastre a URL no dashboard (ou via API de webhooks). Eventos deste fluxo: TRANSACTION_PAID e TRANSACTION_REFUNDED. O payload traz o mesmo objeto da API pública, incluindo feeAmount e netAmount em centavos. Detalhes em Webhooks.
Estorno: POST /v1/transactions/{id}/refunds.
O cofre é de vocês. A Reborn nunca vê PAN: o Collect tokeniza no browser; a API recebe aliases; o hop até a adquirência acontece no outbound do vault. No SDK:
import { loadElements } from "@rebornpay/elements";
const reborn = await loadElements({
publishableKey: "pk_test_...",
apiBaseUrl: "https://sandbox-api.rebornpay.io",
});
const collect = await reborn.payments.collect.mount("#card-fields");
const card = await collect.tokenize();
// No seu servidor, com sk_:
// POST /v1/transactions { card: { vault: "CARD", ...card }, currency, amount, ... }- Seller app → Integrações → Card Vault (visível só no perfil internacional).
- Host, usuário e senha do outbound (a senha nunca volta no GET).
Depois que o vault estiver conectado, PAN cru é recusado. Toda charge precisa de card.vault=CARD e aliases no number / cvv.
A rota outbound e o reveal dos campos são configurados com o time Reborn — não publique destino de adquirente em repositório ou frontend.
number e cvv são aliases do Collect — não dígitos do cartão. Envie lastDigits e bin (o Collect costuma expor) para dashboard e antifraude; a Reborn não infere last4 do alias.
{
"paymentMethod": "CREDIT_CARD",
"amount": 100,
"currency": "USD",
"description": "Pedido sandbox",
"buyer": {
"name": "Jane Doe",
"email": "jane@example.com"
},
"card": {
"vault": "CARD",
"number": "tok_...",
"cvv": "tok_...",
"expirationMonth": "12",
"expirationYear": "28",
"holderName": "JANE DOE",
"lastDigits": "4242",
"bin": "424242"
}
}| Teste | Esperado |
|---|---|
| USD 4242 sem vault | PAID (ou PENDING → webhook TRANSACTION_PAID) |
| EUR 3DS | pendingAction → 3DS Reborn → confirm → PAID |
| Refund | TRANSACTION_REFUNDED |
| Alias do Card Vault | PAID; core sem PAN |
| PAN depois do vault salvo | 4xx pedindo vault=CARD |