Pular para o conteúdo principal

POST - Criar Fatura

Crie uma fatura de pagamento crypto. O comerciante envia o valor (USD), informações do pedido e URL de callback; o sistema retorna trans_id e url_payment para redirecionar o cliente à página de checkout.

Endpoint

POST https://api.payerscan.com/payment/crypto

Headers

HeaderObrigatórioDescrição
Content-TypeSimapplication/json
x-api-keySimAPI Key da loja

Request Body (JSON)

CampoTipoObrigatórioRestriçõesDescrição
merchant_idstringSimNão vazioCódigo do comerciante da loja (deve corresponder à API Key).
amountnumber | stringSim> 0 e ≤ 1.000.000Valor do pagamento (USD). Exemplo: 100, "100".
callback_urlstringRecomendadoMáx 500 caracteres, URL válidaURL para receber webhook nos status completed ou expired.
completed_urlstringNãoMáx 500 caracteres, URL válidaURL de redirecionamento após pagamento bem-sucedido.
expired_urlstringNãoMáx 500 caracteres, URL válidaURL de redirecionamento quando a fatura expira.
namestringNãoMáx 255 caracteresNome/título da fatura.
descriptionstringNãoMáx 1000 caracteresDescrição da fatura.
request_idstringNãoMáx 255 caracteresID do pedido do comerciante para referência cruzada (retornado na resposta e webhook). Também usado para idempotência — veja notas abaixo.

Exemplo de Request

{
"merchant_id": "MID-XXXXXXXXXX",
"amount": 100,
"name": "Top-up balance",
"description": "Top-up the balance for username: [USERNAME]",
"callback_url": "https://your-server.com/webhook/payment",
"completed_url": "https://your-website.com/thank-you",
"expired_url": "https://your-website.com/",
"request_id": "ORDER_123456"
}

Response

Sucesso (HTTP 200)

{
"status": "success",
"data": {
"request_id": "ORDER_123456",
"trans_id": "TID-ABC123DEF4567890",
"status": "waiting",
"amount": "100",
"url_payment": "https://app.payerscan.com/bill/TID-ABC123DEF4567890",
"expires_in_minutes": 15
}
}
CampoDescrição
request_idO valor que você enviou na requisição.
trans_idCódigo único da fatura, usado para consulta e referência cruzada de webhook.
statusSempre "waiting" quando recém-criada.
amountValor em USD (string).
url_paymentURL da página de checkout — redirecione o cliente para cá.
expires_in_minutesTempo de expiração da fatura (minutos).

Erros (4xx / 5xx)

Todos os erros seguem este formato:

{
"status": "error",
"message": "Descrição do erro",
"error_code": "ERROR_CODE",
"request_id": "ORDER_123456",
"details": { }
}
HTTPerror_codeDescrição
400VALIDATION_ERRORBody inválido (campos obrigatórios ausentes, tipo errado, restrições excedidas). details.errors tem detalhes.
400INVALID_MERCHANT_IDmerchant_id não corresponde à API Key da loja.
400NO_PAYMENT_METHODNenhum método de pagamento configurado na loja. Adicione pelo menos um endereço de carteira ou configure uma plataforma de câmbio antes de criar faturas.
401MISSING_API_KEYNenhum header x-api-key fornecido.
401INVALID_API_KEYA API key é inválida ou não existe.
403ACCOUNT_INACTIVEA conta associada a esta API key está desativada.
403STORE_INACTIVEA loja associada a esta API key está desativada.
402INSUFFICIENT_BALANCESaldo da loja insuficiente para taxas. details tem current_balance, required_fee, shortage, fee_rate_percent, discount_percent, invoice_amount.
429RATE_LIMIT_EXCEEDEDLimite de requisições excedido (burst ou sustained). Tem limit_type, retry_after_seconds.
500INTERNAL_ERRORErro do servidor.

Detalhes dos códigos de erro: Códigos de Erro da API.

Rate Limit

  • Burst: 5 requisições/segundo (por API Key ou IP).
  • Sustained: 60 requisições/minuto (por API Key ou IP).

Exceder limite → HTTP 429, body tem error_code: "RATE_LIMIT_EXCEEDED", retry_after_seconds.

Notas

  • Método de pagamento: A loja deve configurar pelo menos um endereço de carteira ou plataforma de câmbio (Binance Pay, OKX, Bybit, MEXC, Gate.io, Bitget, etc.) antes de criar faturas. Se não configurado, a API retorna erro NO_PAYMENT_METHOD.
  • Idempotência: Se você enviar um request_id que já existe para a mesma loja, a API retorna a fatura existente em vez de criar uma nova. A resposta incluirá idempotent: true para indicar isso. Isso evita faturas duplicadas ao tentar novamente requisições falhas.
  • Taxas: As taxas são calculadas sobre o amount (USD) e deduzidas do saldo da loja. Garanta saldo suficiente antes de criar faturas. Durante o período de teste gratuito, as taxas são isentas.
  • Callback: Sempre envie callback_url para receber webhooks completed/expired; caso contrário, você só pode verificar via GET https://api.payerscan.com/invoice/:trans_id.
  • request_id: Recomendado enviar para fácil correspondência webhook-pedido e suporte à idempotência.