ONE

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.

01

Criar links de pagamento

Faça um POST de Checkout Preference e receba um checkout_url para enviar a qualquer cliente.

02

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.

03

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.

  1. Você cria um Checkout Preference

    Seu backend chama a API com valor, moeda e título. A ONE devolve um checkout_url.

  2. Seu cliente paga

    Ele abre o link, escolhe um meio local e conclui o pagamento. Isso cria um Payment Order.

  3. Você recebe um webhook

    A ONE faz POST na sua URL quando o status da ordem muda (opened, closed, expired…).

  4. 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.

  1. 01

    Crie suas API keys

    No Dashboard da ONE vá em Integrations e gere seu x-api-key e x-api-secret.

  2. 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.

  3. 03

    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.

https://api.stg.one.lat
https://api.one.lat

Criar um checkout

Este é o endpoint principal. Cria um pedido de pagamento único e devolve a URL com a qual seu cliente paga.

POST/v1/checkout_preferences

Body da request

CampoTipoObrigatórioDescrição
amountfloatSimValor da cobrança. Os limites equivalentes ficam em torno de 10–1500 USD.
currencystringSimMoeda ISO do valor (USD, ARS, BRL, COP, MXN).
titlestringSimO que o cliente vê no checkout, ex.: nome do curso.
originstringSimAPI
external_idstringNãoSeu id único para reconciliar o pagamento depois.
expiration_datestring (RFC3339)NãoData RFC3339. Máximo 1 semana. Se omitir, expira em 15 minutos.
payer.emailstringNãoSe enviar, o checkout pode pular pedir o email.
payer.first_namestringNãoNome do pagador.
payer.last_namestringNãoSobrenome do pagador.
payer.phone_numberstringNãoTelefone do pagador com código do país.
selected_payment_method_idstringNãoPula a seleção e fixa um meio de pagamento específico.
custom_urls.status_changes_webhookstring (URL)NãoSeu endpoint para notificações de mudança de status do Payment Order.

Exemplo de request

cURL
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.

200 JSON
{
  "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.

GET/v1/checkout_preferences/:id

Obter 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.

GET/v1/payment_orders/:id
200 JSON
{
  "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.

GET/v1/refunds/:id
cURL
curl 'https://api.one.lat/v1/refunds/1dUPlZbsDABq3bIEOG' \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'x-api-secret: YOUR_API_SECRET'
200 JSON
{
  "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.

GET/v1/payment_methods
200 JSON
[
  {
    "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.

JSON
{
  "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.

PAYMENT_ORDER
{
  "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.

REFUND
{
  "id": "nR8kLm2pQxYtVw4HsZ",
  "event_type": "REFUND.SUCCEEDED",
  "entity_type": "REFUND",
  "entity_id": "1dUPlZbsDABq3bIEOG"
}

Tipos de evento

Payment Order

  • PAYMENT_ORDER.OPENED
  • PAYMENT_ORDER.CLOSED
  • PAYMENT_ORDER.REJECTED
  • PAYMENT_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ódigoDescrição
OPENEDCriada e aguardando o pagamento do cliente.
CLOSEDPaga com sucesso. O processo terminou.
REJECTEDRecusada pelo processador ou pelo banco do cliente.
EXPIREDExpirou antes de receber o pagamento.

Status do Refund

CódigoDescrição
SUCCEEDEDO refund foi concluído com sucesso.

Moedas

CódigoDescrição
USDDólares americanos
ARSPesos argentinos
BRLReais brasileiros
COPPesos colombianos
MXNPesos mexicanos