For AI agents: visit https://developers.celcoin.com.br/llms.txt for an index of all pages formatted in Markdown and endpoints in OpenAPI. Append .md to any documentation page URL to get its markdown version.
A payment initiation é o objeto que representa a intenção de pagamento do usuário. Ela contém os dados do pagador, do recebedor e do valor a ser transferido. Após criada, retorna uma authorizationUrl para onde o usuário deve ser redirecionado para autenticar e aprovar o pagamento na sua instituição.
Cada payment initiation corresponde a um único pagamento Pix.
Criar Payment Initiation
POST /baas/v1/open/itp/payment-initiation
Autenticação: Bearer Token (application_token)
Request
POST {{base_url}}/baas/v1/open/itp/payment-initiation
Authorization: Bearer {{application_token}}
Content-Type: application/json
ID da instituição detentora, obtido em Participantes
redirectUrl
string
✅
URL de callback para retorno após autorização do usuário
data.loggedUser.document
Campo
Tipo
Obrigatório
Descrição
identification
string
✅
CPF do usuário pagador (somente números, 11 dígitos)
rel
string
✅
Tipo do documento. Fixo: CPF
data.creditor
Campo
Tipo
Obrigatório
Descrição
cpfCnpj
string
✅
CPF (11 dígitos) ou CNPJ (14 dígitos) do recebedor
personType
string
✅
PESSOA_NATURAL ou PESSOA_JURIDICA
name
string
✅
Nome completo do recebedor
data.payment
Campo
Tipo
Obrigatório
Descrição
type
string
✅
Tipo de pagamento. Fixo: PIX
amount
string
✅
Valor em BRL com duas casas decimais (ex: "1.15")
currency
string
✅
Moeda. Fixo: BRL
date
string
✅
Data de liquidação (formato YYYY-MM-DD). Deve ser hoje ou data futura
data.payment.details
Campo
Tipo
Obrigatório
Descrição
localInstrument
string
✅
Modalidade de iniciação. Ver tabela abaixo
proxy
string
❌
Chave Pix do recebedor. Obrigatório quando localInstrument = DICT
data.payment.details.creditorAccount
Campo
Tipo
Obrigatório
Descrição
accountType
string
✅
Tipo de conta: CACC (corrente), SVGS (poupança), SLRY (salário), TRAN (pagamento)
ispb
string
✅
ISPB da instituição recebedora (8 dígitos)
issuer
string
✅
Número da agência
number
string
✅
Número da conta
data.debtorAccount (opcional)
Quando informado, pré-seleciona a conta devedora na detentora:
Campo
Tipo
Obrigatório
Descrição
accountType
string
❌
Tipo de conta do pagador
ispb
string
❌
ISPB da instituição devedora
issuer
string
❌
Agência do pagador
number
string
❌
Número da conta do pagador
Modalidades de Iniciação (localInstrument)
Valor
Descrição
proxy obrigatório?
DICT
Chave Pix (CPF, CNPJ, e-mail, telefone ou chave aleatória)
✅
MANU
Dados manuais da conta (sem chave Pix)
❌
QRDN
QR Code dinâmico
❌
QRES
QR Code estático
❌
INIC
Iniciação pela ITP
❌
Validações de QR Code Dinâmico (QRDN)
Quando localInstrument = QRDN, a Celcoin lê o QR Code dinâmico e consulta a cobrança vinculada a ele. Os dados do pagamento são comparados com os dados da cobrança antes da criação do consentimento. Se alguma validação falhar, a requisição é rejeitada com HTTP 422 e o consentimento não é criado.
Validação
Regra
type do erro
data.field
Valor
payment.amount deve ser igual ao valor da cobrança (ver "Regra de valor")
QRDN_AMOUNT_MISMATCH
payment.amount
Chave Pix
payment.details.proxy deve ser igual à chave Pix da cobrança
QRDN_PROXY_MISMATCH
payment.details.proxy
Recebedor
O CPF/CNPJ do recebedor informado deve ser igual ao do recebedor da cobrança
QRDN_CREDITOR_MISMATCH
creditor.cpfCnpj
Status
A cobrança deve estar ACTIVE ou ATIVA. Qualquer outro status é rejeitado
a definir
—
Expiração
Quando a cobrança tiver expiração, ela não pode estar expirada
a definir
—
Vencimento
Quando houver vencimento e validade após vencimento, o pagamento deve estar dentro do prazo
a definir
—
Regra de valor – COB x COBV
COB (cobrança imediata): vale valor.original. Se valor.modalidadeAlteracao = 1, o pagador pode alterar o valor.
COBV (cobrança com vencimento): vale obrigatoriamente valor.final, sem alteração. Se valor.final não existir na cobrança, a requisição é rejeitada.
As validações se aplicam somente a QRDN. As modalidades DICT, MANU, QRES e INIC não mudam.
URL para redirecionamento do usuário. Contém client_id, scope, request_uri e demais parâmetros FAPI
id
string
ID da payment initiation. Usar como itp_payment_id nas chamadas subsequentes
Response — HTTP 422 (Erro de data)
{
"errors": [
{
"code": "DATA_PAGAMENTO_INVALIDA",
"title": "Data de pagamento inválida.",
"detail": "Data de pagamento inválida para a forma de pagamento selecionada."
}
]
}
{
"message": "QRDN payment amount does not match charge amount",
"code": 422,
"type": "QRDN_AMOUNT_MISMATCH",
"data": { "field": "payment.amount" }
}
Códigos de Retorno
HTTP
Descrição
201 Created
Consentimento criado com sucesso
400 Bad Request
Parâmetros ausentes ou malformados
401 Unauthorized
Token inválido ou expirado
422 Unprocessable Entity
Data inválida, dados do creditor inconsistentes ou regra de negócio violada
Pontos de Atenção
⚠️
date deve ser hoje ou futuro: Datas passadas retornam 422 DATA_PAGAMENTO_INVALIDA. Sempre gere a data dinamicamente no momento da criação.
⚠️
Guarde o id retornado: O id da payment initiation é necessário para o endpoint de Pix (/payment-initiation/:id/pix). Salve-o imediatamente após a criação.
⚠️
A authorizationUrl é de uso único e expira rapidamente: Após recebê-la, redirecione o usuário imediatamente. Tentar reutilizar a URL ou chamá-la após alguns minutos retornará 302 com error=invalid_request_uri.
⚠️
proxy + DICT: Quando localInstrument = DICT, o campo proxy é obrigatório e deve conter uma chave Pix válida do recebedor. Omitir este campo causará erro de validação.
⚠️
Quando localInstrument = QRDN, valor, chave Pix (proxy) e CPF/CNPJ do recebedor devem ser iguais aos da cobrança do QR Code, e a cobrança deve estar ativa e dentro do prazo. Divergências retornam HTTP 422 (ver "Validações de QR Code Dinâmico").
⚠️
redirectUrl em produção: Deve ser HTTPS e estar pré-registrada. Em sandbox, http://localhost:8080/callback é aceita.