Criar Payin

Cria uma nova requisição de pagamento para receber de um cliente. O método de pagamento determina os campos obrigatórios e os dados retornados na resposta.

POST https://api.legacyecombr.com.br/payin
📘

Autenticação obrigatória

Envie o cabeçalho Authorization: Basic base64(pk_live_xxxx:sk_live_yyyy) em todas as chamadas. Consulte o guia de Autenticação.


Corpo da requisição

Campos obrigatórios

CampoTipoDescrição
paymentMethodstringMétodo de pagamento: PIX, BOLETO ou CREDIT_CARD
amountintegerValor total em centavos (ex.: 10000 = R$100,00)
referenceIdstringIdentificador único no seu sistema para conciliação
isPhysicalProductbooleantrue se o pedido envolve entrega física; false para produtos digitais
payerIpstringIP IPv4 do cliente pagador (usado pelo antifraude)
customerobjectDados do cliente — veja estrutura abaixo
itemsarrayLista de itens da cobrança — mínimo de 1 item

Campos opcionais

CampoTipoDescrição
webhookUrlstring (URL)URL para receber notificações de status via POST
cardobjectDados do cartão — obrigatório quando paymentMethod é CREDIT_CARD
antifraudobjectDados de sessão do antifraude (sessionId, fingerprintId, deviceSessionId)
subSellerIdstringID do sub-vendedor para operações de marketplace
splitarrayRegras de split de pagamento entre múltiplos recebedores

Estrutura: customer

CampoTipoObrigatórioDescrição
namestringNome completo do cliente
documentstringCPF válido (somente dígitos)
emailstringE-mail do cliente
phonestringTelefone com DDD (ex.: 5511999999999)
address.streetstringLogradouro
address.numberstringNúmero
address.zipCodestringCEP
address.citystringCidade
address.statestringUF (ex.: SP)
address.complementstringComplemento
address.neighborhoodstringBairro

Estrutura: card (apenas para CREDIT_CARD)

CampoTipoObrigatórioDescrição
holderNamestring✅*Nome impresso no cartão
numberstring✅*Número do cartão (sem espaços)
expirationMonthstring✅*Mês de validade (ex.: 08)
expirationYearstring✅*Ano de validade (ex.: 2027)
cvvstring✅*Código de segurança
installmentsintegerNúmero de parcelas (mínimo 1)
tokenstringToken do cartão, substitui os campos marcados com *
threeDSecureobjectDados do 3DS para autenticação adicional

Estrutura: items

CampoTipoObrigatórioDescrição
titlestringNome do produto ou serviço
quantityintegerQuantidade (mínimo 1)
unitPriceintegerPreço unitário em centavos
descriptionstringDescrição opcional do item

Exemplo: PIX

Requisição:

{
  "paymentMethod": "PIX",
  "amount": 10000,
  "referenceId": "pedido-001",
  "webhookUrl": "https://sua-api.com/webhooks/legacy",
  "isPhysicalProduct": false,
  "payerIp": "200.100.50.3",
  "customer": {
    "name": "Maria Silva",
    "document": "83416281085",
    "email": "[email protected]",
    "phone": "5511999999999",
    "address": {
      "street": "Rua Exemplo",
      "number": "123",
      "zipCode": "01000-000",
      "city": "São Paulo",
      "state": "SP"
    }
  },
  "items": [
    {
      "title": "Produto Digital",
      "quantity": 1,
      "unitPrice": 10000
    }
  ]
}

Resposta 201 Created:

{
  "id": "payin_1A2B3C",
  "externalId": "tx_998877",
  "referenceId": "pedido-001",
  "status": "PENDING",
  "amount": 10000,
  "paymentMethod": "PIX",
  "createdAt": "2026-03-02T12:00:00.000Z",
  "pix": {
    "qrcode": "00020101021126360014br.gov.bcb.pix0114+5511999999999..."
  }
}

Exemplo: Boleto

Requisição: igual ao PIX, apenas mude "paymentMethod": "BOLETO".

Resposta 201 Created:

{
  "id": "payin_1A2B3D",
  "externalId": "tx_998878",
  "referenceId": "pedido-002",
  "status": "PENDING",
  "amount": 10000,
  "paymentMethod": "BOLETO",
  "createdAt": "2026-03-02T12:05:00.000Z",
  "boleto": {
    "barcode": "34191.09008 00000.000004 00000.000006 1 800000000010000",
    "url": "https://boleto.holdinglegacy.io/12346"
  }
}

Exemplo: Cartão de Crédito

🚧

KYC adicional obrigatório

O processamento de Cartão de Crédito requer aprovação de um KYC adicional. Entre em contato com o suporte para habilitação.

Requisição:

{
  "paymentMethod": "CREDIT_CARD",
  "amount": 29900,
  "referenceId": "pedido-003",
  "webhookUrl": "https://sua-api.com/webhooks/legacy",
  "isPhysicalProduct": false,
  "payerIp": "200.100.50.3",
  "customer": {
    "name": "João Oliveira",
    "document": "12345678900",
    "email": "[email protected]",
    "phone": "5511988887777",
    "address": {
      "street": "Av. Paulista",
      "number": "1000",
      "zipCode": "01310-100",
      "city": "São Paulo",
      "state": "SP"
    }
  },
  "card": {
    "holderName": "JOAO OLIVEIRA",
    "number": "4111111111111111",
    "expirationMonth": "08",
    "expirationYear": "2027",
    "cvv": "123",
    "installments": 1
  },
  "items": [
    {
      "title": "Plano Mensal",
      "quantity": 1,
      "unitPrice": 29900
    }
  ]
}

Resposta 201 Created:

{
  "id": "payin_1A2B3E",
  "externalId": "tx_998879",
  "referenceId": "pedido-003",
  "status": "APPROVED",
  "amount": 29900,
  "paymentMethod": "CREDIT_CARD",
  "createdAt": "2026-03-02T12:10:00.000Z"
}
📘

Cartão de Crédito é síncrono

Ao contrário de PIX e Boleto, o Cartão de Crédito retorna o status final (APPROVED ou REFUSED) diretamente na resposta, sem necessidade de aguardar webhook.


Erros comuns

ErroStatusCausa
INVALID_DATA400CPF, telefone ou CEP inválido
REJECTED_BY_RISK400Transação negada pelo antifraude
PAYER_LIMIT_REJECTED400Limite insuficiente no cartão
INVALID_CVV400CVV incorreto
PROVIDER_ERROR502Falha temporária na adquirente