Cobre pelo seu código
Crie um link de checkout com uma chamada à API. Seu cliente paga com os meios disponíveis no país dele. Você é avisado quando o pagamento confirma.
O que você pode fazer com a API
A API é pequena de propósito. Quase tudo começa criando um checkout e ouvindo atualizações de pagamento.
Criar links de pagamento
Faça um POST de Checkout Preference e receba um checkout_url para enviar a qualquer cliente.
Aceitar meios locais
O checkout detecta o país do pagador e mostra cartão, transferência, PIX ou crypto quando disponíveis. A conversão de moeda fica por nossa conta.
Saber quando você recebeu
Receba webhooks a cada mudança de status do Payment Order e depois busque a ordem completa quando precisar.
Dois objetos que você precisa conhecer
Checkout Preference é o link que você cria. Payment Order é o que aparece quando o cliente começa a pagar.
Você cria um Checkout Preference
Seu backend chama a API com valor, moeda e título. A ONE devolve um checkout_url.
Seu cliente paga
Ele abre o link, escolhe um meio local e conclui o pagamento. Isso cria um Payment Order.
Você recebe um webhook
A ONE faz POST na sua URL quando o status da ordem muda (opened, closed, expired…).
Você busca a ordem
Use o entity_id do webhook para fazer GET do Payment Order e confirmar o estado final.
Saia do zero em três passos
Você não precisa de SDK. Keys, uma base URL de staging e um POST bastam para ver um checkout real.
Crie suas API keys
No Dashboard da ONE vá em Integrations e gere seu x-api-key e x-api-secret.
Comece no staging
Integre contra api.stg.one.lat. Só é possível pedir uma conta de staging se você já tiver uma conta de produção aprovada e ativa: fale com o support.
Crie seu primeiro checkout
POST /v1/checkout_preferences, abra o checkout_url, complete um pagamento de teste e veja o webhook chegar.
Autenticação
Toda request à API precisa incluir os dois headers de segurança.
Envie x-api-key e x-api-secret em cada chamada. Crie e rotacione as keys no dashboard em Integrations.
Ambientes
Os mesmos paths em staging e production. Só o host muda.
Staging
https://api.stg.one.latProduction
https://api.one.latCriar um checkout
Este é o endpoint principal. Cria um pedido de pagamento único e devolve a URL com a qual seu cliente paga.
/v1/checkout_preferencesBody da request
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amount | float | Sim | Valor da cobrança. Os limites equivalentes ficam em torno de 10–1500 USD. |
currency | string | Sim | Moeda ISO do valor (USD, ARS, BRL, COP, MXN). |
title | string | Sim | O que o cliente vê no checkout, ex.: nome do curso. |
origin | string | Sim | API |
external_id | string | Não | Seu id único para reconciliar o pagamento depois. |
expiration_date | string (RFC3339) | Não | Data RFC3339. Máximo 1 semana. Se omitir, expira em 15 minutos. |
payer.email | string | Não | Se enviar, o checkout pode pular pedir o email. |
payer.first_name | string | Não | Nome do pagador. |
payer.last_name | string | Não | Sobrenome do pagador. |
payer.phone_number | string | Não | Telefone do pagador com código do país. |
selected_payment_method_id | string | Não | Pula a seleção e fixa um meio de pagamento específico. |
custom_urls.status_changes_webhook | string (URL) | Não | Seu endpoint para notificações de mudança de status do Payment Order. |
custom_urls.success_payment_redirect | string (URL) | Não | Se enviar, o checkout redireciona o cliente aqui após um pagamento bem-sucedido. |
custom_urls.error_payment_redirect | string (URL) | Não | Se enviar, o checkout redireciona o cliente aqui após um pagamento falho ou com erro. |
Exemplo de request
curl 'https://api.one.lat/v1/checkout_preferences' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'x-api-secret: YOUR_API_SECRET' \
--header 'Content-Type: application/json' \
--data '{
"amount": 25,
"currency": "USD",
"origin": "API",
"title": "Introductory course to Blockchain",
"external_id": "order_1234",
"payer": {
"email": "luca@test.com",
"first_name": "Luca",
"last_name": "Dorain",
"phone_number": "+521142567689"
},
"custom_urls": {
"status_changes_webhook": "https://api.mycompany.io/webhook",
"success_payment_redirect": "https://mycompany.io/payment/success",
"error_payment_redirect": "https://mycompany.io/payment/error"
}
}'Exemplo de response
Compartilhe checkout_url com seu cliente. O checkout mostra só os meios disponíveis no país dele.
{
"id": "qwDsh9aMoywPOiUx0O",
"amount": 25,
"currency": "USD",
"created_at": "2025-02-25T14:11:29Z",
"expiration_date": "2025-02-26T15:02:50Z",
"origin": "API",
"external_id": "order_1234",
"title": "Introductory course to Blockchain",
"type": "PAYMENT",
"checkout_url": "https://one.lat/checkout/qwDsh9aMoywPOiUx0O",
"payer": {
"email": "luca@test.com",
"first_name": "Luca",
"last_name": "Dorain",
"phone_number": "+521142567689"
}
}Endpoints de consulta
Use depois de criar um checkout, ou quando um webhook avisar que algo mudou.
Obter um Checkout Preference
Recupere uma preference que você já criou pelo id.
/v1/checkout_preferences/:idObter um Payment Order
Um Payment Order é criado quando o pagador entra no checkout, escolhe um meio e envia os dados. Busque-o para confirmar o status depois de um webhook.
/v1/payment_orders/:id{
"id": "gRV8xTZHPv9lNxSLPw",
"amount": 16.9,
"currency": "USD",
"created_at": "2024-06-12T15:26:47Z",
"expired_at": "2024-06-12T15:56:47Z",
"updated_at": "2024-06-12T15:31:28Z",
"status": "CLOSED",
"title": "Test product",
"origin": "PAYMENT_LINK",
"external_id": "1234",
"payment_method_type": "BANK_TRANSFER",
"payer": {
"email": "payer@gmail.com",
"first_name": "Joan",
"last_name": "Kohler",
"phone_number": "+542614215688"
}
}Obter um Refund
Quando receber REFUND.SUCCEEDED, use o entity_id para buscar o refund e confirmar valor, moeda e a ordem associada.
/v1/refunds/:idcurl 'https://api.one.lat/v1/refunds/1dUPlZbsDABq3bIEOG' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'x-api-secret: YOUR_API_SECRET'{
"id": "1dUPlZbsDABq3bIEOG",
"payment_order_id": "IwyOQSzfuEt80W9WNS",
"amount": 100,
"currency": "USD",
"status": "SUCCEEDED",
"created_at": "2025-12-08T22:42:52Z",
"updated_at": "2025-12-08T23:12:48Z"
}Listar meios de pagamento
Veja quais meios estão habilitados na sua conta, com limites, moeda e país.
/v1/payment_methods[
{
"id": "vJKtkYs8Vf",
"status": "ENABLED",
"type": "BANK_TRANSFER",
"country_id": "ARG",
"currency": "ARS",
"max_amount": 10000000,
"min_amount": 0
},
{
"id": "qacV3z31cz",
"status": "ENABLED",
"type": "CRYPTO_ONCHAIN",
"country_id": "ALL",
"currency": "USDT",
"network": { "id": "TRON", "name": "Tron" },
"min_amount": 0.1,
"max_amount": 100000
}
]Tipos comuns: BANK_TRANSFER · PIX · CRYPTO_ONCHAIN
Webhooks
Webhooks são alertas de mudança de status. São pequenos de propósito: trate-os como sinal e depois busque a entidade.
Configurar a URL do webhook
Passe custom_urls.status_changes_webhook ao criar o Checkout Preference.
{
"custom_urls": {
"status_changes_webhook": "https://api.mycompany.io/webhook"
}
}Precisa de uma URL para todas as notificações da conta? Fale com o support para configurar no nível da conta.
Payload da notificação
Para eventos de Payment Order, chame GET /v1/payment_orders/:id com o entity_id para obter a versão mais recente.
{
"id": "uCEarm1kXJsroMQ6dt",
"event_type": "PAYMENT_ORDER.CLOSED",
"entity_type": "PAYMENT_ORDER",
"entity_id": "rcAaNfKdKJRmrnj4l5"
}Notificações de refund
Quando um refund é concluído chega REFUND.SUCCEEDED. Depois chame GET /v1/refunds/:id com o entity_id.
{
"id": "nR8kLm2pQxYtVw4HsZ",
"event_type": "REFUND.SUCCEEDED",
"entity_type": "REFUND",
"entity_id": "1dUPlZbsDABq3bIEOG"
}Tipos de evento
Payment Order
PAYMENT_ORDER.OPENEDPAYMENT_ORDER.CLOSEDPAYMENT_ORDER.REJECTEDPAYMENT_ORDER.EXPIRED
Refund
REFUND.SUCCEEDED
Seu handler de webhook precisa ser idempotente. O campo id é único por notificação.
Status e moedas
Tabelas rápidas de status de Payment Order, refunds e moedas suportadas.
Status do Payment Order
| Código | Descrição |
|---|---|
OPENED | Criada e aguardando o pagamento do cliente. |
CLOSED | Paga com sucesso. O processo terminou. |
REJECTED | Recusada pelo processador ou pelo banco do cliente. |
EXPIRED | Expirou antes de receber o pagamento. |
Status do Refund
| Código | Descrição |
|---|---|
SUCCEEDED | O refund foi concluído com sucesso. |
Moedas
| Código | Descrição |
|---|---|
USD | Dólares americanos |
ARS | Pesos argentinos |
BRL | Reais brasileiros |
COP | Pesos colombianos |
MXN | Pesos mexicanos |