Skip to main content
O pagamento por cartão acontece em duas etapas:
  1. Tokenize os dados sensíveis do cartão em POST /v1/card-token.
  2. Crie a transação em POST /v1/card usando o token gerado.
A tokenização está disponível apenas para empresas com adquirente Avantti.

1. Tokenizar o cartão

curl -X POST 'https://api.avanttifinance.com/v1/card-token' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer SEU_TOKEN' \
  -d '{
    "number": "4111111111111111",
    "holderName": "JOAO SILVA",
    "expirationMonth": "12",
    "expirationYear": "28",
    "cvv": "123"
  }'
number
string
required
Número do cartão. Validado pelo algoritmo de Luhn.
holderName
string
required
Nome do titular impresso no cartão.
expirationMonth
string
required
Mês de expiração (0112).
expirationYear
string
required
Ano de expiração, com 2 dígitos (28) ou 4 dígitos (2028).
cvv
string
required
Código de segurança (3 ou 4 dígitos).

Resposta

{
  "success": true,
  "token": "ct_AbCdEfGhIjKlMnOpQrStUvWxYz1234567890"
}

2. Criar a transação

curl -X POST 'https://api.avanttifinance.com/v1/card' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer SEU_TOKEN' \
  -d '{
    "postbackUrl": "https://seu-sistema.com/webhooks/avantti",
    "amountInCents": 9990,
    "description": "Compra Produto X",
    "card": {
      "cardToken": "ct_AbCdEfGhIjKlMnOpQrStUvWxYz1234567890",
      "installments": 1,
      "holderName": "JOAO SILVA"
    },
    "customer": {
      "name": "João da Silva",
      "email": "joao@email.com",
      "documentType": "cpf",
      "document": "12345678909",
      "phone": "11999999999",
      "billingAddress": {
        "street": "Rua das Flores",
        "number": "100",
        "neighborhood": "Centro",
        "city": "São Paulo",
        "state": "SP",
        "zipCode": "01310100"
      }
    },
    "items": [
      { "title": "Produto X", "tangible": false, "quantity": 1, "amountInCents": 9990 }
    ]
  }'
card.cardToken
string
required
Token gerado em POST /v1/card-token.
card.installments
integer
Número de parcelas (1 a 12).
amountInCents
integer
required
Valor total, em centavos.

Resposta

{
  "success": true,
  "message": "Transação criada com sucesso",
  "data": {
    "id": "clxyz123abc",
    "card": { "token": "ct_...", "brand": "visa", "last4": "1111" },
    "status": "paid",
    "fees": 350
  }
}
Quando a adquirente recusa a transação, o campo data.internalReason pode trazer o motivo.