Skip to main content
Algumas empresas apresentam preços numa moeda e recebem em outra. Quando a empresa está configurada para repassar o câmbio ao comprador, ele é cobrado mais que o preço comercial — e esse valor final precisa ser exibido e confirmado antes da autorização. O Checkout hospedado já faz isso sozinho. Em todo o resto — Payment Element, integração direta pela API, sua própria página de pagamento — a tela é sua, então a garantia é contratual: você cria uma cotação, exibe, e informa o id dela ao criar a transação.
Esta página só vale para empresas configuradas para repassar o câmbio ao comprador. Se a sua empresa absorve o câmbio, nada muda: continue criando transações exatamente como faz hoje.

O fluxo

1

Crie a cotação

Chame POST /v2/fx/quotes com o valor comercial, a moeda apresentada ao comprador e o método pelo qual você vai cobrar.
Valores são inteiros na menor unidade da moeda. O Idempotency-Key é opcional; repetir a chamada com a mesma chave devolve a mesma cotação, em vez de congelar uma segunda taxa.
2

Mostre ao comprador o que ele vai pagar

Antes de o comprador autorizar, sua página precisa exibir:
  • o valor final (buyer_charged_amount), na moeda cobrada, em destaque — ele tem que ser igual ao valor autorizado;
  • o valor comercial (presented_amount) e a moeda de origem, quando diferentes;
  • a cotação aplicada (base_rate) e a moeda de destino;
  • um rótulo neutro e consistente.
Nunca:
  • chamar de imposto, IOF, MDR, taxa do cartão ou taxa da bandeira — não é nenhum deles;
  • apresentar como uma escolha do comprador;
  • alterar o valor entre a confirmação e a autorização;
  • fazer o câmbio aparecer só depois de o comprador escolher o método.
Os dois últimos não são questão de estilo. Um valor que muda depois da confirmação, ou uma margem que só aparece depois da escolha do método, mudam o que a cobrança é juridicamente.
3

Crie a transação com a cotação

Informe fx_quote_id no POST /v2/transactions. A cobrança usa a taxa congelada na cotação, não a atual, então o comprador é autorizado exatamente pelo valor que confirmou.
O amount continua sendo o valor comercial — o mesmo que você cotou. O total do comprador sai da cotação; enviá-lo aqui seria cotar um número e cobrar outro.

Com o Payment Element

O Element tokeniza o cartão e cuida do 3DS; ele nunca renderiza valor. Então a cotação vive no seu próprio fluxo, em volta do submit:
Seu back-end repassa o fx_quote_id ao POST /v2/transactions.

Erros

Observações

  • Cotações são de uso único e expiram junto com a taxa que as gerou; espere criar uma por tentativa de checkout.
  • Uma cotação pertence a uma empresa. Cotação de outra empresa devolve 404.
  • Moeda apresentada igual à da carteira significa que não há câmbio, e o POST /v2/fx/quotes devolve 422.