ONE

Duas formas de se integrar com a ONE

Integre a API no seu backend, ou instale o plugin do WooCommerce. Nos dois casos o cliente paga com meios locais e você recebe em dólares.

  • API

    Crie checkouts, ouça webhooks e consulte ordens pelo seu código.

    Ver quickstart
  • Plugin do WooCommerce

    Instale o plugin na sua loja e processe pagamentos com a ONE sem tocar na API.

    Ver plugin oficial

Keys para testar a API e o plugin

Não precisa criar uma conta para o primeiro teste. Estas credenciais servem para a API, nos headers x-api-key e x-api-secret, e para a configuração do plugin de WooCommerce.

API Key
FrxLNuPPpnzZDJOgzE
API Secret
dnAYL9yNRCdFt7S6VY5I

São de teste e qualquer pessoa pode usá-las. Quando vender de verdade, gere as suas no dashboard.

Abrir dashboard

Plugin do WooCommerce

Se sua loja roda no WooCommerce, instale o plugin oficial no WordPress.org e processe pagamentos com a ONE sem integrar a API na mão. Para testar, cole as keys desta página.

Ver no WordPress.org(abre em uma nova aba)

ONE.lat for WooCommerce · plugin oficial

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

  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. Teste com estas keys, ou crie as suas

    Para testar a API agora, use a API Key e o API Secret desta página. Quando vender de verdade, no Dashboard vá em Integrations e gere seu x-api-key e x-api-secret.

  2. 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. 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. Cada cobrança tem que ficar entre 10 e 1.500 USD, ou o equivalente em moeda local.
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.
custom_urls.success_payment_redirectstring (URL)NãoSe enviar, o checkout redireciona o cliente aqui após um pagamento bem-sucedido.
custom_urls.error_payment_redirectstring (URL)NãoSe enviar, o checkout redireciona o cliente aqui após um pagamento falho ou com erro.

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",
      "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.

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