Integração DDA para Parceiros via API
Informamos que esta rotina encontra-se em fase piloto e ainda não está disponível para todos os clientes da Senior.
A integração de títulos de contas a pagar para conciliação automática com boletos eletrônicos no DDA (Débito Direto Autorizado) pode ser realizada por meio de APIs públicas disponibilizadas pelo módulo ERP Banking. Esse recurso permite que ERPs parceiros automatizem o registro de títulos, reduzindo erros operacionais e acelerando a conciliação com boletos registrados nos bancos.
Este documento é direcionado a parceiros técnicos e integradores interessados em conectar suas soluções ao ERP Banking da Senior, com foco específico na primitiva de registro e exclusão de títulos para o fluxo DDA.
Antes de iniciar a integração, é recomendável ler os tutoriais básicos sobre o uso das APIs da Senior, além de consultar o portal de APIs da Senior para conhecer toda a documentação disponível.
O fluxo de integração DDA é composto por duas operações principais: o registro de títulos, em que o parceiro envia uma lista de títulos do Contas a Pagar para conciliação com boletos eletrônicos do DDA; e a exclusão de títulos, em que o parceiro remove títulos previamente enviados do fluxo de conciliação, quando necessário.
As operações de registro e exclusão ocorrem de forma assíncrona. Após o envio, o sistema retorna imediatamente uma confirmação de recebimento. O processamento real acontece em segundo plano, e o resultado é informado por meio de eventos específicos que devem ser tratados pelo parceiro.
Autenticação
Assim como as demais APIs da Senior, a integração DDA exige autenticação por meio da primitiva loginWithKey. Essa primitiva é responsável por gerar os tokens de autenticação necessários para acessar os serviços do ERP Banking. Para mais detalhes sobre o uso dessa API, acesse o nosso tutorial.
{
//Obrigatório: Chave da aplicação
accessKey: string
//Obrigatório: Segredo da chave informada
secret: string
//Obrigatório: Nome do tenant em que se deseja efetuar o login
tenantName: string
//Opcional: Escopo do token da autenticação. Se não for informado será usado o valor padrão 'desktop'
scope : string
}
Detalhes dos parâmetros:
- accessKey: Chave de aplicação gerada no momento da criação da aplicação, disponível no caminho: Tecnologia > Administração > Gerenciamento de aplicações. A chave se encontra no campo Chave de acesso das propriedades da aplicação;
- secret: Chave única gerada no momento da criação da aplicação, disponível no caminho: Tecnologia > Administração > Gerenciamento de aplicações. A chave se encontra no campo Secret das propriedades da aplicação, e deve ser copiada logo após a sua criação.
- Tanto o secret como o accessKey são valores únicos responsáveis pela identificação da aplicação que está tentando conectar com o ERP;
- tenantName: Identificação do cliente (tenant) que o parceiro representa e utiliza a base de dados.
Requisitos
Para utilizar essa funcionalidade de integração, é fundamental que todos os pré-requisitos estejam devidamente configurados.
- Cadastrar uma aplicação no Senior X: Para mais detalhes, consulte o tópico Utilizando a aplicação do artigo Consumindo uma API, disponível no portal de APIs da Senior;
- Registrar a aplicação no portal de API: Para realizar o cadastro, siga o tutorial do artigo Criando uma Aplicação, disponível no portal de APIs da Senior;
- Associar a aplicação a um papel: Para conceder permissões de uso das primitivas DDA, associe a aplicação a um papel que possua a task ERPX Banking Registro DDA em: Tecnologia > Administração > Autorização > Gestão de papéis;
- Verificar CNPJ da filial: O CNPJ da filial deve estar cadastrado no módulo Banking, tabela e070fil (coluna numCgc). Esse identificador é obrigatório para todas as requisições;
- Onboarding DDA: A filial deve ter sido previamente onboardada com o parceiro bancário (BTG) através do fluxo de Ativação de Parceiros, disponível em: Banking > Ativação de Parceiros > Onboarding.
Registro de Títulos
Por meio da primitiva registerAccountsPayableDebits, o parceiro envia uma lista de títulos do Contas a Pagar para registro no fluxo de conciliação DDA. O sistema realiza validações e, em segundo plano, encaminha os títulos para conciliação automática com boletos eletrônicos registrados no banco.
Endpoint de Registro
O registro de títulos é realizado por meio do seguinte endpoint:
POST https://api.senior.com.br/erpx_bnk_pag/facade/apis/registerAccountsPayableDebits
- Domínio/Serviço: erpx_bnk_pag / register_dda;
- Segurança: permissão Processar no recurso res://senior.com.br/erpx_bnk_pag/register_dda/registerAccountsPayableDebits.
Estrutura do Payload
- processId (string, uuid): Identificador único do lote de processamento. Deve ser um UUID válido, utilizado para acompanhamento e auditoria do envio. Campo obrigatório.
- company (object): Identificação da empresa, contendo id ou code. Se omitido, o sistema assume a empresa padrão do contexto. Campo opcional.
- branch (object): Identificação da filial, contendo o CNPJ (14 dígitos) no campo documentNumber. Campo obrigatório.
- accountsPayable (array): Lista de títulos a serem registrados. Máximo de 100 títulos por requisição. A lista não pode ser vazia. Campo obrigatório.
- accountPayableId (string, uuid): Identificador único do título no ERP origem, utilizado para rastreamento e auditoria. Deve ser um UUID válido e não pode haver duplicatas na mesma requisição. Campo obrigatório.
- accountPayableNumber (string): Número identificador do título no ERP, como número da nota fiscal ou duplicata (ex.: "NF-001234"). Campo obrigatório.
- accountPayableType (string): Tipo ou classificação do título para o DDA. Valores aceitos: DUP (Duplicata), IMP (Imposto), NF (Nota Fiscal). Outros tipos podem ser aceitos conforme configuração do cliente. Campo obrigatório.
- favored.documentNumber (string): CPF (11 dígitos) ou CNPJ (14 dígitos) do beneficiário do título, utilizado para validação e associação com boletos. Deve passar na validação de dígito verificador. Campo obrigatório.
- favored.name (string): Nome do beneficiário do título. Campo obrigatório.
- dueDate (date): Data de vencimento do título, no formato ISO (YYYY-MM-DD). Utilizada para matching automático com boletos DDA. Campo obrigatório.
- value (decimal): Valor original do título, utilizado para matching com o valor do boleto DDA (com tolerância configurável). Valor mínimo de 0.00, sem limite máximo especificado. Campo obrigatório.
Veja abaixo um exemplo completo do payload de requisição para registro de títulos DDA:
POST https://api.senior.com.br/erpx_bnk_pag/facade/apis/registerAccountsPayableDebits
Body:
{
"processId": "a7b7c251-1d54-4bb5-86d3-9fa7e1cc26c0",
"company": { "code": 1 },
"branch": {
"documentNumber": "82951229000176"
},
"accountsPayable": [
{
"accountPayableId": "550e8400-e29b-41d4-a716-446655440000",
"accountPayableNumber": "NF-001234",
"accountPayableType": "NF",
"favored": {
"documentNumber": "82951229000176",
"name": "Fornecedor LTDA"
},
"dueDate": "2026-06-30",
"value": 1500.50
}
]
}
Validações Executadas
A API executa as seguintes validações antes de aceitar o registro dos títulos:
- Máximo de 100 títulos por requisição;
- Sem accountPayableId duplicados na mesma requisição;
- processId deve ser um UUID válido;
- CPF/CNPJ dos favorecidos devem passar na validação de dígito verificador;
- A filial identificada pelo CNPJ deve existir na tabela e070fil (coluna numCgc);
- O campo documentNumber de branch é obrigatório e deve conter 14 dígitos.
Em caso de sucesso, a API retorna um objeto vazio, indicando que a requisição foi validada e aceita para processamento assíncrono:
Response 200:{}
Em caso de requisição inválida, quando algum campo obrigatório não é fornecido ou viola as regras de negócio:
Response 400:{
"reason": "BAD_REQUEST",
"message": "A lista de títulos é obrigatória"
}
O retorno imediato (200 ) não confirma o sucesso da conciliação ou registro do título no Banking, mas apenas o aceite da requisição para processamento em segundo plano. O resultado final é informado por meio dos eventos de retorno (veja a seção Eventos de Retorno abaixo).
Exclusão de Títulos
Por meio da primitiva excludeAccountsPayableDebit, o parceiro remove títulos previamente registrados do fluxo de conciliação DDA. Essa operação é útil quando títulos duplicados foram enviados ou quando o título não deve mais ser conciliado.
Endpoint de Exclusão
A exclusão de títulos é realizada por meio do seguinte endpoint:
POST https://api.senior.com.br/erpx_bnk_pag/facade/apis/excludeAccountsPayableDebit
- Domínio/Serviço: erpx_bnk_pag / register_dda;
- Segurança: permissão Processar no recurso res://senior.com.br/erpx_bnk_pag/register_dda/excludeAccountsPayableDebit.
Estrutura do Payload
- processId (string, uuid): Identificador único do lote de exclusão. Deve ser um UUID válido e diferente do processId do registro original. Campo obrigatório.
- accountsPayableDebit (array de strings): Lista contendo os UUIDs dos títulos a serem removidos. Máximo de 100 identificadores por requisição. A lista não pode ser vazia e não pode conter duplicatas. Campo obrigatório.
POST https://api.senior.com.br/erpx_bnk_pag/facade/apis/excludeAccountsPayableDebit
Body:
{
"processId": "b8c8d362-2e65-4cc6-97e4-0ab8f2dd37d1",
"accountsPayableDebit": [
"550e8400-e29b-41d4-a716-446655440000",
"550e8400-e29b-41d4-a716-446655440001"
]
}
Response 200:{}
Validações Executadas
A API executa as seguintes validações antes de aceitar a exclusão dos títulos:
- Máximo de 100 títulos por requisição;
- Sem identificadores duplicados na mesma requisição;
- processId deve ser um UUID válido;
- Cada identificador em accountsPayableDebit deve ser um UUID válido;
- A lista não pode ser vazia.
Em caso de sucesso, a API retorna um objeto vazio, indicando a aceitação da requisição para processamento assíncrono:
Response 200:{}
Em caso de requisição inválida, quando parâmetros obrigatórios não são fornecidos ou violam as regras:
Response 400:{
"reason": "BAD_REQUEST",
"message": "O identificador do processo não é um UUID válido"
}
Eventos de Retorno
Após o processamento assíncrono, o Banking dispara eventos para informar ao ERP o resultado da operação. O ERP deve implementar listeners para esses eventos e executar as ações correspondentes.
Evento: accountsPayableDebitsAssociated
O evento accountsPayableDebitsAssociated é disparado após conciliação automática ou associação manual de um título com um boleto eletrônico do DDA.
- company (object): Empresa relacionada ao evento, identificada pelo id.
- branch (object): Filial relacionada ao evento, identificada pelo id.
- associatedDebts (array): Lista de títulos associados, contendo accountPayableId, accountPayableNumber, accountPayableType, expirationDate, digitableLine (linha digitável do boleto), dueDate, value, debitSituation (EM_ABERTO ou LIQUIDADO), favored (documentNumber, name e bank), statusAssociation e dateTimeAssociation.
{
"company": { "id": "UUID empresa" },
"branch": { "id": "UUID filial" },
"associatedDebts": [
{
"accountPayableId": "UUID do título",
"accountPayableNumber": "número do título",
"accountPayableType": "tipo",
"expirationDate": "date (YYYY-MM-DD)",
"digitableLine": "string (LINHA DIGITÁVEL DO BOLETO)",
"dueDate": "date (YYYY-MM-DD)",
"value": "decimal",
"debitSituation": "EM_ABERTO | LIQUIDADO",
"favored": {
"documentNumber": "CPF/CNPJ",
"name": "nome",
"bank": {"code": "código banco","name": "nome banco"}
},
"statusAssociation": "tipo de associação",
"dateTimeAssociation": "ISO datetime"
}
]
}
- AUTOMATICA_SEM_TOLERANCIA: Correspondência exata entre valor e vencimento do título e do boleto..
- AUTOMATICA_POR_TOLERANCIA_VALOR: Valor do boleto dentro da faixa de tolerância configurada.
- AUTOMATICA_POR_TOLERANCIA_VENCIMENTO: Data de vencimento do boleto dentro da faixa de tolerância configurada.
- AUTOMATICA_POR_TOLERANCIA_VALOR_E_VENCIMENTO: Ambas as tolerâncias (valor e vencimento) foram aplicadas na conciliação.
- AUTOMATICA_POR_OUTRA_FILIAL: Boleto foi associado a título de outra filial pelo CNPJ.
- AUTOMATICA_POR_RAIZ_CNPJ: Associação realizada pela raiz do CNPJ do fornecedor.
- ASSOCIADO_MANUALMENTE: Usuário realizou a associação manualmente através da tela de Gestão DDA.
- NAO_ASSOCIADO: Título foi enviado mas não encontrou boleto correspondente.
- IGNORADO: Título foi marcado como ignorado no fluxo de associação.
- DESASSOCIADO: Título que teve a associação desfeita após ter sido previamente associado.
Evento: accountsPayableDebitsDisassociated
O evento accountsPayableDebitsDisassociated é disparado quando um usuário desassocia um título de um boleto DDA através da tela de Gestão DDA.
- company (object): Empresa relacionada ao evento, identificada pelo id. Campo opcional (pode ser nulo).
- branch (object): Filial relacionada ao evento, identificada pelo id. Campo opcional (pode ser nulo).
- disassociatedDebts (array): Lista de títulos desassociados, contendo apenas accountPayableId, accountPayableNumber e accountPayableType, utilizados para localizar o título.
{
"company": { "id": "UUID empresa (opcional)" },
"branch": { "id": "UUID filial (opcional)" },
"disassociatedDebts": [
{
"accountPayableId": "UUID do título",
"accountPayableNumber": "número do título",
"accountPayableType": "tipo do título"
}
]
}
Fluxo Completo de Integração
- ERP envia títulos via registerAccountsPayableDebits com processId único;
- Banking valida a estrutura, as regras de negócio e registra os títulos;
- Banking realiza a conciliação automática com boletos DDA, utilizando matching de valor, vencimento e favorecido;
- Banking dispara o evento accountsPayableDebitsAssociated — ERP grava a linha digitável no título;
- Se o usuário desassociar o título na tela de Gestão DDA, o Banking dispara o evento accountsPayableDebitsDisassociated — ERP remove a linha digitável;
- ERP pode remover títulos do fluxo via excludeAccountsPayableDebit, se necessário;
- Títulos desassociados podem ser reenviados ou reassociados manualmente.
Possíveis Mensagens de Erro
Ao chamar as APIs de registro ou exclusão de títulos DDA, você pode receber as seguintes mensagens de erro (código 400 Bad Request):
- "A lista de títulos é obrigatória": o campo accountsPayable está vazio, nulo ou não foi informado. Envie pelo menos um título no array;
- "Não é permitido informar mais de 100 títulos por requisição": o array accountsPayable contém mais de 100 itens. Divida a requisição em múltiplos envios, cada um com até 100 títulos;
- "Existem títulos com o mesmo identificador na requisição: {id}": há duplicata de accountPayableId na mesma requisição. Remova os IDs duplicados do array;
- "O identificador do título {id} não é um UUID válido": o campo accountPayableId não segue o formato UUID. Gere um UUID válido (ex.: 550e8400-e29b-41d4-a716-446655440000);
- "O número do documento do favorecido do título {id} é inválido": o CPF/CNPJ possui dígitos incorretos ou formato inválido. Valide o CPF (11 dígitos) ou CNPJ (14 dígitos) com dígito verificador correto;
- "O documento da filial (CNPJ) é obrigatório": o campo branch.documentNumber não foi informado. Informe o CNPJ da filial com 14 dígitos;
- "O documento da filial (CPF/CNPJ) é inválido": o CNPJ possui dígitos incorretos ou formato inválido. Valide o CNPJ com dígito verificador correto;
- "Filial não encontrada para o documento informado": o CNPJ não está cadastrado na tabela e070fil do Banking. Verifique se a filial foi registrada no módulo Banking com o CNPJ correto;
- "O identificador do processo não é um UUID válido": o campo processId não segue o formato UUID ou está ausente. Gere ou informe um UUID válido para o processId.
Resumo dos Contratos de Integração
A tabela abaixo resume as primitivas e eventos envolvidos na integração DDA:
| Contrato | Direção | Domínio/Serviço | Primitiva/Evento | Tipo |
|---|---|---|---|---|
| Registro de títulos | ERP → Banking | erpx_bnk_pag / register_dda | registerAccountsPayableDebits | Action |
| Exclusão de títulos | ERP → Banking | erpx_bnk_pag / register_dda | excludeAccountsPayableDebit | Action |
| Notificação de associação | Banking → ERP | erpx_bnk_pag / dda | accountsPayableDebitsAssociated | Event |
| Notificação de desassociação | Banking → ERP | erpx_bnk_pag / dda | accountsPayableDebitsDisassociated | Event |
English
Español
English
Español


