Sobre o Débito Automático

O que é débito automático?

O débito automático, também conhecido como DA, é o pagamento automático de contas recorrentes usando o saldo disponível na conta do cliente. Com ele é possível realizar o pagamento de algumas contas essenciais, como: água, telefone, energia, internet, gás e outros.

Basicamente, ele permite que o valor a ser pago por aquela conta seja descontado automaticamente do saldo disponível, sem que o titular tenha que tomar alguma ação manual.

Como funciona o débito automático?

De forma simples, caso o usuário opte por pagar uma conta com débito automático, ela sempre será programada para executar na data do seu vencimento. Ou seja, quando chegar a data determinada, o valor será automaticamente debitado do saldo disponível em sua conta bolsão da Celcoin.

Neste artigo você irá aprender como é possível:

  • Configurar um Webhook para receber informações sobre os débitos automáticos;
  • Consultar os convênios disponíveis para configuração e uso do débito automático;
  • Criar uma adesão de um convênio para um usuário;
  • Confirmar ou recusar o pagamento de uma fatura em débito automático;
  • Cancelar adesões de um usuário;
  • Consultar débitos que estão para vencer;
  • Consultar ocorrências;
  • Consultar o histórico de uma adesão;
  • Recomendações para testes em sandbox.

Pré-requisitos para implementação:
Possuir uma chave API da Celcoin, para mais informações acessar esse link

Ter familiaridade com APIs Rest usando o protocolo OAuth 2.0.

Ter o produto/solução contratada, caso queira usar a funcionalidade em ambiente produtivo, por favor entre em contato com a nossa equipe comercial através do e-mail [email protected]. Para dúvidas técnicas, basta entrar em contato com o suporte através do link.

📘

Saiba que:

Antes de começar explicar sobre essa funcionalidade é importante que você entenda a definição de alguns conceitos.

O que são convênios?

São empresas que possibilitam o pagamento de suas contas com o método de pagamento débito automático, por exemplo: Claro, Consigaz, Vivo, Cemig, Prefeituras, SABESP entre outras. Convênio também pode ser chamado de optante.

O que é uma adesão?

É o contrato que será criado entre Celcoin e o convênio para o fornecimento de débitos automáticos. Por exemplo, ao configurar um débito automático para uma assinatura de celular da Claro, onde mensalmente é cobrado o valor de R$ 80,00, se faz necessário criar uma adesão informando o código do convênio e o número disponibilizado por ele na fatura para os seus débitos. A adesão também pode ser chamada de subscription.

Caso de Uso

Como Fintech quero disponibilizar para os meus usuários a possibilidade de configurar débitos automáticos para diversos convênios, com o objetivo de disponibilizar praticidade e mais um método de pagamento em meu aplicativo e/ou plataforma.

Configurar Webhooks

Para receber os débitos que devem ser pagos, é necessário configurar os webhooks, que são as notificações dos débitos e das adesões.

O webhook é uma forma de receber informações de forma assíncrona, geralmente são disparados gatilhos no formato JSON quando um evento acontece. Na prática, para as APIs de DA, será usado para receber as seguintes informações:

  • Informativos de sucesso do pagamento de um débito
  • Informativos de erro do pagamento de um débito
  • Avisos da chegada de um novo débito
  • Aviso que ocorreu a troca de status de uma adesão, sendo os status: Ativo, Cancelado ou Inativo
  • Aviso que a conta Celcoin está sem fundos para transacionar

Para realizar a configuração de um webhook é necessário entrar em contato com a nossa equipe de suporte informando a url de seu webhook, senha e usuário(caso exista). Desta forma, eles irão realizar o cadastro dos dados em nossa plataforma para que seja possível o envio dos gatilhos.

️ Atenção!

No ambiente de teste (sandbox) só é possível receber os eventos de DA_SUBSCRIPTION_STATUS e DA_INVOICE_WARNING

Consultar convênios

Para o usuário conseguir avaliar quais convênios estão disponíveis para utilização do débito automático, deve ser realizado uma consulta na API Listar convênios DA, passando um parâmetro de busca indicando o id do segmento, ou null para trazer todos os convênios cadastrados em nossa base de dados. Além disso, é possível todos os convênios ativos nessa lista aqui.

Modelo de request:

curl --location --request GET 'https://sandbox.openfinance.celcoin.dev/eda/v1/utilities/da?segment=1' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {access_token}'

Modelo de retorno

[
    {
        "utilityId": 14717,
        "name": "PREFEITURA MUNICIPAL DE CURITIBA",
        "shortName": "PREF. CURITIBA IPTU",
        "utilityCode": "8161319",
        "diasAtivacao": 0,
        "diasOcorrencia": 0,
        "febrabanCode": "1319",
        "subscriptionRoleIdentification": "SEM REGRA",
        "validationRule": "Validação de dígito verificador via módulo 10",
        "utilityInputs": [
            {
                "utilityInputId": 1053,
                "placeHolder": "Código Identificador",
                "minLength": 8,
                "maxLength": 20,
                "dataType": "string",
                "description": "Código Identificador"
            }
        ],
        "segment": {
            "id": 1,
            "name": "Prefeituras"
        }
    }
]

Os parâmetros de busca por segmento são:

    - Não definido = será retornado todos os convênios disponíveis;
    - 1: Prefeituras;
    - 2: Saneamento;
    - 3: Energia Elétrica e Gás;
    - 4: Telecomunicações;
    - 5: Órgãos Governamentais;
    - 6: Carnês e Assemelhados ou Demais;
    - 7: Multas de trânsito;
    - 8: Multi Liquidação;
    - 9: Convênio Próprio;

A omissão do parâmetro de busca por segmento trará todos os convênios disponíveis indiferente do segmento associado.

🚧

Atenção!

Recomendamos que crie uma rotina do lado da sua aplicação consultando essa API uma vez ao dia, para atualizar os convênios disponíveis do débito automático em seu sistema.

Estrutura do response:

CampoTipoDescrição
utilityIdintegerIdentificador do convênio
namestringNome completo do convênio
shortNamestringNome abreviado do convênio
utilityCodestringCódigo do convênio
diasAtivacaointegerRepresenta a média de dias corridos que o convênio demora para responder a atualização da adesão ou do primeiro débito
diasOcorrenciaintegerRepresenta a média de contagem de dias corridos que o convênio demora para enviar um alerta de ocorrência no cadastro da adesão
febrabanCodestringCódigo Febraban do convênio
subscriptionRoleIdentificationstringRegra de identificador de optante (Sem Regra, somente números, números e letras)
validationRulestringRegra de validação do código identificador do convênio
utilityInputIdintegerDado de entrada identificador do convênio
placeHolderstringDescrição dos dados de entrada
minLengthintegerTamanho mínimo para os dados de entrada
maxLengthintegerTamanho máximo para os dados de entrada
dataTypestringDescrição do tipo da data
descriptionstringDescrição
idintegerCódigo do segmento
namestringNome do segmento

No retorno dessa requisição é apresentado alguns campos que são necessários, ou importantes para seguir com o processo de criação de um débito automático sendo eles:

utilityid - Identificador do convênio

utilityCode - Código do convênio

diasAtivacao - Representa a média de dias corridos que o convênio demora para responder a atualização da adesão ou do primeiro débito.

diasOcorrencia - Representa a média de contagem de dias corridos que o convênio demora para enviar um alerta de ocorrência no cadastro da adesão.

utilityInputId- representa o identificador dos dados de entrada do convênio, em ambiente sandbox às vezes essa propriedade pode ser retornada com valor null, nesse caso, informe 0 na request seguinte onde solicita essa informação.

Logo, também recomendamos que essas informações sejam persistidas do lado de sua aplicação.

Validar código identificador

Alguns convênios realizam uma validação do dígito verificador, ou seja, há uma regra de validação do número informado como identificador do débito automático na conta do cliente. Essa verificação serve para garantir a autenticidade da informação que está sendo enviada, ou seja, garante que o número informado realmente se refere a uma conta de determinado cliente em determinado convênio.

Pensando nisso, foi desenvolvido uma API que permite consultar se o identificador de um cliente é válido para aquele convênio. Para isso, basta realizar um POST na API Validação do código identificador informando o utilityId e o identificationCode.

utilityId: esse campo refere-se ao identificador do convênio. Ele pode ser obtido na lista de convênios através da consulta nesta API ou por essa lista.

*OBS: a lista é referente ao ambiente de produção. Em sandbox utilize os retornos da API.

identificationCode: representa o valor de entrada do débito automático, que deve ser populado com o número disponibilizado na conta do convênio. Ele pode vir na conta como: Débito automático, Código de cadastramento para débito automático, Cod. Débito Automático, entre outros.

Modelo de request:

curl --location --request POST 'https://sandbox.openfinance.celcoin.dev/eda/v1/validation' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "utilityId": 9214,
  "identificationCode": "951701031"
}'

Caso o convênio não realize validação do código verificador, esse será o retorno:

{
    "isValid": true,
    "message": "Convênio não realiza cálculo de módulo de dígito verificador, não há garantias de que o código informado esteja realmente correto para o aceite do convênio"
}

Caso o convênio realize a validação e o código esteja correto, esse será o retorno:

{
    "resultado": {
        "optanteValido": true
    }
}

Caso o convênio realize a validação e o código esteja incorreto, esse será o retorno:

{
    "errorCode": "SUB422",
    "description": "DV da identificação do cliente é inválida."
}

Criar Adesão

Em seguida deve ser realizado a criação de uma adesão utilizando a API Cria adesão. Lembre-se que para isso é necessário obter do seu usuário o código identificador do convênio, pois ele é obrigatório para a criação do débito automático.

Exemplo de fatura de um convênio e o código identificador para a criação de um débito automático:

Para essa requisição é necessário passar as seguintes propriedades no body da requisição:

utilityId - identificador do convênio.

externalTerminal - Id que você usa para fazer a gestão da sua plataforma

externalNSU- identificador externo do NSU

document - Campo que representa o número do documento, sendo possível passar o CPF ou CNPJ

documentType - Campo que representa o tipo do documento, sendo possível popular apenas com CPF ou CNPJ.

subscriptionInputs - é um objeto onde será populado os dados da adesão, que são: identificador do convênio e identificação da conta do cliente.

utilityInputId - Este campo representa o código de entrada do convênio que é retornado dentro do array de utilityInputs da chamada de consulta dos convênios disponíveis.

input - Representa o valor de entrada do débito automático, que deve ser populado com o número disponibilizado na conta do convênio. Ele pode vir na conta como: Débito automático, Código de cadastramento para débito automático, Cod. Débito Automático, entre outros. Por exemplo, no caso da fatura do desenho acima, seria 000000000000.

Modelo de request:

curl --location --request POST 'https://sandbox.openfinance.celcoin.dev/eda/v1/utilities/subscriptions' \
--header 'accept: application/json' \
--header 'Content-Type: application/json-patch+json' \
--header 'Authorization: Bearer {access_token}' \
--data-raw '{
  "utilityId": 9214,
  "externalTerminal": "teste033939",
  "externalNSU": 12349832173712,
  "automaticPayment": true,
  "document": "08160149069",
  "documentType": "CPF",
  "subscriptionInputs": [
    {
      "utilityInputId": 510,
      "input": "951701031"
    }
  ]
}'

Modelo de retorno:

{
    "createdDate": "2022-02-24T10:47:00.42",
    "statusId": 2,
    "statusDescription": "Pendente ativacao",
    "subscriptionId": 15369,
    "utilityId": 9214,
    "externalTerminal": "teste033939",
    "documentType": "cpf",
    "externalNSU": 12349832173712,
    "automaticPayment": true,
    "document": "08160149069"
}

Estrutura do retorno:

CampoTipoDescrição
utilityIdintegerIdentificador do convênio
externalTerminalstringIdentificador do terminal externo. Para controle externo
externalNSUintegerIdentificador do NSU externo. Para controle externo
automaticPaymentbooleanIndica se o débito automático está habilitado
documentstringCPF/CNPJ sem pontos ou traços
documentTypestringIdentifica o tipo do documento [CPF or CNPJ]
utilityInputIdintegerDado de entrada identificador do convênio
inputstringValor do dado de entrada (Identificador da conta do cliente)

Ao receber essa requisição a Celcoin irá validar: se o convênio está correto, o padrão da requisição e se existe uma adesão já cadastrada com o código enviado dentro da nossa base.

Depois de realizadas essas validações, se tudo estiver como esperado, vamos retornar o status HTTP 200, o id da subscrição (adesão) e o status da adesão (statusDescription) como “Pendente ativacao”, pois vamos tentar realizar a configuração desse débito automático no convênio

Recomendamos que seja persistido na base de dados do seu aplicativo o subscriptionsId, gerado nessa chamada, pois, uma vez que processado o cadastro do débito automático, será necessário ter esse id para consultar o histórico dessa adesão.

A ativação da adesão depende do retorno do convênio. O prazo para esse retorno é de 180 dias, após isso a adesão é cancelada por falta de resposta. Para saber a situação da adesão é disponibilizado para sua aplicação via gatilho (DA_SUBSCRIPTION_STATUS), que informará o status.

OBS: esse evento pode ser simulado em ambiente de teste.

Modelo de gatilho:

{
    "event":"DA_SUBSCRIPTION_STATUS",
    "subscription":{
        "subscriptionId": 309,
        "statusId": 1,
        "statusDescription":"Ativo",
        "externalTerminal":"+05649318700",
        "utility":{
            "utilityId":9212,
            "description":"CLARO SP DDD 11"
        }
    }
}

Se o convênio recusar a adesão criada, a Celcoin irá retornar o status igual a Cancelado.

Status da adesão

A adesão pode ter os seguintes status:

  • Pendente ativacao = sempre que uma adesão é criada retorna esse status até que o convênio avise que a adesão foi ativada ou cancelada, ou até que tenha atingido o prazo máximo de espera que é de 180 dias. Após esse prazo sem retorno do convênio, a adesão é cancelada.
  • Ativa = quando o convênio aceita e envia um débito para ativação da adesão.
  • Cancelada = pode ocorrer quando o convênio não retornou sobre a ativação no prazo de 180 dias, quando o convênio retornou e enviou o cancelamento ou quando é feita uma solicitação de cancelamento para a desão por parte do cliente.
  • Inativa = ocorre quando a adesão está ativa e o convênio não envia nenhum débito pelo prazo de 180 dias. Pós esse prazo a adesão é inativada. Esse status não cancela a adesão, caso o convênio envie um novo débito quando a adesão estiver inativa, isso fará com que a adesão volte a ser ativada novamente.

O convênio retornando um débito com valor, por exemplo R$ 50,00, também vamos retornar o status Ativo. Fora isso, será disparado outro gatilho (DA_INVOICE_WARNING), informando que existe um novo débito e sua data de vencimento.

Dessa forma, ao receber esses eventos é possível que seu sistema notifique ou atualize esse usuário com o ocorrido.

Modelo de gatilho:

{
    "event":"DA_INVOICE_WARNING",
    "invoiceId":10,
    "barCode":"8486000000050260122020022811311142000061123",
    "dueDate":"2020-02-28",
    "amount": 50.26,
    "subscription":{
        "subscriptionId": 309,
        "externalTerminal":"+05649318700",
        "utility":{
            "utilityId":9212,
            "description":"CLARO SP DDD 11"
        }
    }
}

OBS: esse evento pode ser simulado em ambiente de teste.

Confirmar ou recusar o pagamento de um débito

Recomendamos armazenar o invoiceId e duedate, pois no dia do vencimento do débito deve ser realizada sua confirmação ou negação, utilizando nossa API PATCH Confirmar ou recusar o pagamento.

Modelo de request:

curl --location --request PATCH 'https://sandbox.openfinance.celcoin.dev/eda/v1/invoices' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {access_token}' \
--data-raw '[
    {
        "pay": true,
        "invoiceId": 98754,
        "externalNSU": "100393567"
    }
]'

Note que deve ser enviado a propriedade pay igual true quando necessário realizar a confirmação do débito e false quando for realizado o cancelamento, nesse caso deve ser preenchido a propriedade cancelationReason, com motivo, podendo ser:

  • SEM_CONTRATO_DA
  • CLIENTE_NAO_ENCONTRADO
  • DEBITO_FORA_DO_TEMPO_HABIL
  • SOLICITACAO_CLIENTE
  • OUTRAS_RESTRICOES
  • SALDO_INSUFICIENTE

Modelo de retorno:

[
  {
    "invoiceId": 98754,
    "result": 1
  }
]

Note que é retornado a propriedade result, ela deve ser usada para notificar seu usuário de acordo com as seguinte variações:

1: Indicador de sucesso;
2: Identificador do débito inválido (invoiceId);
3: Data fora do vencimento do débito;
4: Pagamento já processado;
5: Janela de recebimento de confirmação/cancelamento de débitos já está fechada;
6: Sem fundos para realizar o débito;
7: Razão de cancelamento de débito não preenchida ou inválida;
99: Erro desconhecido durante o processamento.

O pagamento do débito pode ocorrer com sucesso ou ser rejeitado. Em caso de sucesso será disparado um webhook com o evento DA_AUTOMATIC_PAYMENT_SUCESS com os seguintes dados:

[
	{
		"amount": 39.99,
		"companyName": "0000047315146520878202449",
		"dueDate": "2022-06-15",
		"event": "DA_AUTOMATIC_PAYMENT_SUCCESS",
		"externalHash": "1024235715",
		"invoiceId": 203399,
		"subscription": {
			"document": "04552929305",
			"externalNSU": 167467809,
			"externalTerminal": "8297280",
			"subscriptionId": 116017,
			"utility": {
				"description": "TIM CELULAR - 0109",
				"liquidanteId": 46,
				"utilityId": 14893,
				"utilityNumber": "8460109"
			}
		}
	}
]

OBS: esse evento não pode ser simulado em ambiente de teste.

Caso o pagamento falhe e não seja efetuado, será disparado um webhook com o evento DA_AUTOMATIC_PAYMENT_ERROR com as seguintes informações:

[
	{
		"amount": 269.02,
		"companyName": "980041118600317820220606",
		"dueDate": "2022-06-13",
		"event": "DA_AUTOMATIC_PAYMENT_ERROR",
		"externalHash": "1020804792",
		"invoiceId": 200142,
		"subscription": {
			"document": "25759139851",
			"externalNSU": 1064905,
			"externalTerminal": "36c8fd74-43f6-45fa-9d67-c8952a62e93e",
			"subscriptionId": 78986,
			"utility": {
				"description": "EDP BANDEIRANTES SP",
				"liquidanteId": 46,
				"utilityId": 15026,
				"utilityNumber": "8360073"
			}
		}
	}
]

OBS: esse evento não pode ser simulado em ambiente de teste.

Cancelamento Adesão

Caso de uso:
Como Fintech quero disponibilizar para os meus usuários a possibilidade de cancelar débitos automáticos para diversos convênios passando algumas informações com objetivo de facilitar a vida do meu usuário.

  • Cancelar adesões de um usuário

Uma vez que um usuário desejar realizar o cancelamento da adesão em seu sistema ou aplicativo, deve ser realizado um DELETE na API Deletar uma adesão, passando o id da subscrição que foi criada anteriormente.

Lembrando que os débitos futuros associados a adesão que teve a solicitação de cancelamento, serão cancelados também.

Modelo de request:

curl --location --request DELETE 'https://sandbox.openfinance.celcoin.dev/eda/v1/utilities/subscriptions/3684' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access_token}'

Modelo de response:

"Adesão excluída com sucesso."

Note que o retorno é uma string e também pode ter as seguintes variações:

"Adesão já foi excluída."

“adesaoId, subscriptionId inexistente para o serviço de Débito Automático."

"Erro interno".

Após receber esse retorno, basta notificar o usuário da sua aplicação

Consultar débitos que estão para vencer

Pensando em momento de indisponibilidade do webhook, ou para desenvolvimento de medidas preditivas do lado da sua aplicação para o débito automático, criamos a API Buscar débitos a partir da data de vencimento, com ela é possível consultar todos os débitos que estão em aberto e vão vencer em uma determinada data.

Modelo de request:

curl --location --request GET 'https://sandbox.openfinance.celcoin.dev/eda/v1/invoices/duedate?data=2022-02-25' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access_token}'

Modelo de retorno:

{
    "result": {
        "invoicesCount": 1,
        "invoices": [
            {
                "invoiceId": 139305,
                "amount": 15.01,
                "dueDate": "2022-02-25T00:00:00",
                "receivedDate": "2022-02-23T00:00:00",
                "status": "Pendente",
                "externalHash": null,
                "authentication": null,
                "subscription": {
                    "subscriptionId": 15364,
                    "status": "Ativo",
                    "externalTerminal": "teste-do-luan-22",
                    "utilityCode": "8460305",
                    "utilityId": 9214,
                    "segmentName": "TELECOMUNICAÇÕES"
                }
            }
        ]
    }
}

Note que no response é retornado na propriedade dueDate a data de vencimento do débito, desta forma, é possível que seja executado o processo de aprovação ou negação do pagamento do débito utilizando a API PATCH Confirmar ou recusar o pagamento que explicamos anteriormente nesse artigo.

Essa API geralmente é usada para validar os débitos que estão prestes a vencer, foram vencidos ou estão para vencer em breve.

Consultar ocorrências

As vezes quando enviamos uma adesão para o convênio ela é rejeitada por algum motivo. Pensando também na indisponibilidade do webhook, criamos essa API de consulta Listar ocorrências por data, onde passando uma data para busca de atualizações para obter o retorno de todas as ocorrências que foram rejeitadas em um determinado dia.

Modelo de request:

curl --location --request GET 'https://sandbox.openfinance.celcoin.dev/eda/v1/utilities/subscriptions/occurrence?data=2022-01-21' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access_token}'

Modelo de retorno:

[
  {
    "subscriptionId": "78548",
    "utilityCode": "854623",
    "clientIdentification": "00015485485",
    "rejectMessage": "Cliente não cadastrado",
    "rejectCode": "OC001",
    "status": "CANCELADO",
    "updatedAt": "10/15/2021 00:00:00",
    "ocurrenceAt": "10/15/2021 00:00:00",
    "elapsedDays": "15"
  }
]

Para exibir o motivo da recusa para seu usuário, ou ter conhecimento do ocorrido, pode ser usado a propriedade rejectMessage.

Consultar o histórico de uma adesão

Criamos a API Consultar histórico de adesão com objetivo de disponibilizar um dossiê das adesões. Para realizar essa consulta, basta passar o id da subscrição que foi gerado na criação da adesão.

Com essa API é possível validar quantos débitos já foram realizados para essa adesão, o que está para vencer, a data de vencimento e recebimento de cada débito, se ocorreu uma rejeição para esse débito, a data da sua última conciliação e seu status atual.

Modelo de request:

curl --location --request GET 'https://sandbox.openfinance.celcoin.dev/eda/v1/utilities/subscriptions/15372/history' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access_token}'

Modelo de retorno:

{
    "subscriptionId": 15372,
    "requestedAt": "2022-02-24T10:53:35.033",
    "updatedAt": "2022-02-24T10:53:35.08",
    "lastConciliationAt": "2022-02-25T09:45:24.61",
    "externalTerminal": "teste033939",
    "status": "Ativo",
    "identificationDocument": "08160149069",
    "clientIdentification": "951701039",
    "rejectMessage": null,
    "rejectCode": null,
    "utility": {
        "utilityId": 9383,
        "utilityCode": 8480089,
        "utilityShortName": "NEXTEL TELECOMUNIC"
    },
    "invoice": {
        "count": 1,
        "invoices": [
            {
                "invoiceId": 139312,
                "duedate": "2022-02-26T00:00:00",
                "receivedAt": "2022-02-24T10:53:35.07",
                "amount": 81.0800,
                "status": "Pendente",
                "paymentId": null,
                "authentication": null
            }
        ]
    }
}

Recomendações para testes em sandbox

Nosso ambiente de sandbox não está diretamente ligado com os convênios, tentamos deixar os retornos o mais próximo possível do real, porém, existem algumas diferenças. Uma delas é o tempo de retorno do convênio, em sandbox retornamos os gatilhos segundos depois da criação da adesão, mas em ambiente produtivo esse tempo passa a aumentar, pois precisamos aguardar os retornos dos convênios para disparar os gatilhos em seu webhook.

Como configurar o envio de arquivos de movimentação via SFTP

Disponibilizamos também uma funcionalidade que envia arquivos para um SFTP com as movimentações que ocorreram no dia.

Caso o envio do arquivo das movimentações do dia seja feito via SFTP, compartilhamos abaixo o layout do arquivo de retorno de movimentação e recusa. O envio do arquivo será em d+1, no período da 1:00 ás 03:00 AM. A configuração deverá ser solicitada junto ao suporte.

O arquivo de movimentação contempla todas os débitos automáticos solicitados na API em d-1.

Movimentação:
PAGAMENTO_DA_MOV_ID + 9(4) – ID DO CLIENTE INTERNO + _NSA + (9(6) – NOTA DE DÉBITO) +
_DATA +AAAAMMDD – DATA CONTABIL DA NOTA DE DÉBITO

Exemplo:
PAGAMENTO_DA_MOV_ID0002_NSA001509_DATA20220101

Header

Nome do campoDescriçãoObrigatórioTamanhoPos. InicialPos. FinalTipo
IF-COD-CORPCódigo da Corporação (Será o
código do cliente estabelecido
pela Celcoin)
Sim4149(4)
IF-NUM-LOTENúmero Lote
(Número de sequência do
arquivo iniciando com 00001)
Sim5599(5)
IF-DATA-LOTEData (AAAAMMDD)
(Data do dia que está sendo
enviado o arquivo)
Sim810179(8)
IF-COD-ARQUIVOZerosSim218199(2)
IF-TIPO-REGISTRO“HDR” – MovimentaçãoSim32022X(3)
IF-NUM-CONTAZerosSim1923419(19)
IF-TIPO-MOVTO“MONETARIO”Sim94250X(09)
FILLERBrancosSim24451294x(244)
IF-SEQSequencial que indica o número
do registro dentro do arquivo.
O header deverá ser montado
com o sequencial 000001.
(Número do registro dentro do
arquivo)
Sim62953009(6)

BODY

Se Código Transação = 62 (RECEBERCONTADA)

Nome do campoDescriçãoObrigatórioTamanhoPos. InicialPos. FinalTipo
IF-COD-CORPCódigo da Corporação (Será o
código do cliente estabelecido
pela Celcoin)
Sim4149(4)
IF-NUM-LOTENúmero Lote (Número de
sequencial do arquivo iniciando com 00001)
Sim5599(5)
IF-DATA-LOTEData (AAAAMMDD) (Data do
dia que está sendo enviado o
arquivo)
Sim810179(8)
IF-COD-ARQUIVOZerosSim218199(2)
IF-TIPO-REGISTRO“MOV” – Movimentação
“LIQ” – Liquidação
“REC” – Recusa
“PRC” – Parcial
Sim32022X(3)
IF-VALOR-TRANSValor da TransaçãoSim1223349(9)v99
IF-COD-TRANSCódigo da transação (Será o
código estabelecido pela
Celcoin). (ver Tabela 1)
Sim335379(3)
IF-DATA-TRANSData da transação (AAAAMMDD)Sim838459(8)
IF-HORA-TRANSHora da transação (HHMMSS)Sim646519(6)
IF-DESCRIÇÃODescrição da transaçãoSim405291X(40)
IF-COD-AUTORIZ.O protocolo gerado pelo
TodaConta
Sim10921019(10)
IF-NUM-SEQ-USUARIONúmero da Sequencial da transação do usuárioSim101021119(10)
IF-NUM-TERMINALEXTERNONúmero do Terminal ExternoNão80112191X(80)
IF-NUM-SEQ-EXTERNONúmero da Sequencial ExternoNão201922119(20)
IF-COD-PAGTONúmero da Forma de Pagamento (ver Tabela 2)Não22122139(2)
FILLERBrancosSim32214245X(32)
IF-SEQSequencial que indica o número do registro dentro do
arquivo. O header deverá ser
montado com o sequencial

1. (Número do registro
dentro do arquivo)
Sim62462519(6)

Trailer

Nome do campoDescriçãoObrigatórioTamanhoPos. InicialPos. FinalTipo
IF-COD-CORPCódigo da Corporação (Será o
código do cliente estabelecido
pela Celcoin)
Sim4149(4)
IF-NUM-LOTENúmero Lote (Número de
sequencial do arquivo
iniciando com 00001)
Sim5599(5)
IF-DATA-LOTEData (AAAAMMDD) (Data do dia que está sendo enviado o arquivo)Sim810179(8)
IF-COD-ARQUIVOZerosSim218199(2)
IF-TIPO-
REGISTRO
“TLR” - TrailerSim32022X(3)
IF-NUMCONTAZerosSim1923419(19)
IF-NUM-REGSTotal de registros no arquivo
(a soma de todos os registros
incluindo o
Header e o Trailler)
Sim542469(05)
IF-VALORTOTALValor total de todas as
transações em
REAL
Sim1347599(11)v99
FILLERBrancosSim23560294x(235)
IF-SEQSequencial que indica o número do registro dentro do arquivo. O header deverá ser montado com o sequencial 000001 (Número do registro dentro do arquivo)Sim62953009(6)