API PÚBLICA · V1
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.
01 — OVERVIEW
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.
02 — MODELO
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.
03 — QUICKSTART
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.
- 01
Crie suas API keys
No Dashboard da ONE vá em Integrations e gere seu x-api-key e x-api-secret.
- 02
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.
- 03
Crie seu primeiro checkout
POST /v1/checkout_preferences, abra o checkout_url, complete um pagamento de teste e veja o webhook chegar.
04 — AUTH
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.
05 — ENV
Ambientes
Os mesmos paths em staging e production. Só o host muda.
Staging
https://api.stg.one.latProduction
https://api.one.lat06 — CORE
Criar 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. |
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"
}
}'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"
}
}07 — CONSULTAS
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
08 — EVENTOS
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.
09 — REFERÊNCIA
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 |