Skip to content

Documentação do Banco de Dados - CSBBenk

Esta tabela armazena dados agregados de transações diárias para cada conta corrente (checking_account). O objetivo é fornecer um resumo rápido do volume e da quantidade de transações de entrada (cash-in) e saída (cash-out), tanto criadas quanto pagas, para otimizar consultas que necessitam desses totais diários.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de agregação.Chave Primária
checkingAccountIdintegerChave estrangeira que referencia a tabela checking_accounts.Não Nulo, FK
datedateA data para a qual os dados de transação foram agregados.Não Nulo
referenceEndTimetimeA hora final da janela de agregação para o dia. Indica até que ponto do dia as transações foram incluídas.Não Nulo
cashinPayedAmountSumfloatSoma dos valores de transações de entrada (crédito) que foram pagas no dia.Não Nulo
cashoutPayedAmountSumfloatSoma dos valores de transações de saída (débito) que foram pagas no dia.Não Nulo
cashinCreatedAmountSumfloatSoma dos valores de transações de entrada (crédito) que foram criadas no dia.Não Nulo
cashoutCreatedAmountSumfloatSoma dos valores de transações de saída (débito) que foram criadas no dia.Não Nulo
cashinPayedCountintegerNúmero de transações de entrada (crédito) que foram pagas no dia.Não Nulo
cashoutPayedCountintegerNúmero de transações de saída (débito) que foram pagas no dia.Não Nulo
cashinCreatedCountintegerNúmero de transações de entrada (crédito) que foram criadas no dia.Não Nulo
cashoutCreatedCountintegerNúmero de transações de saída (débito) que foram criadas no dia.Não Nulo
  • checking_accounts: (n:1) Cada registro de agregação pertence a uma única conta corrente. A coluna checkingAccountId é a chave estrangeira.
  • IDX_checkingAccount_date: Índice único composto pelas colunas checkingAccountId e date. Garante que haverá apenas um registro de agregação por conta corrente por dia.
  • update(): Atualiza o registro de agregação com as transações mais recentes que ocorreram desde a última referenceEndTime.
  • createRegister(...): Método estático para inicializar um novo registro de agregação para uma conta em uma data específica, geralmente com valores zerados.
  • getAllWithinTimeWindow(...): Método estático que busca todos os registros de agregação para uma conta dentro de um intervalo de datas.
  • getTransactionAggregationUpdate(...): Executa uma consulta SQL bruta para calcular os novos totais de transações a serem adicionados ao registro agregado.

A tabela allow_list funciona como uma lista de permissões (whitelist) para funcionalidades específicas. Ela permite que um cliente (customer) restrinja o acesso a certas operações com base em um valor específico, como um endereço IP, um documento, etc.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro na lista de permissões.Chave Primária
listNamevarchar(100)O nome da lista de permissões (ex: ip-allow-list, document-allow-list).Não Nulo
valuevarchar(100)O valor que está sendo permitido (ex: um endereço IP, um número de documento).Não Nulo
customerIdintegerChave estrangeira que referencia a tabela customers.FK
  • customers: (n:1) Cada registro na lista de permissões pertence a um cliente. A coluna customerId é a chave estrangeira.
  • IDX_listName_customer: Índice composto pelas colunas listName e customerId. Otimiza a busca por todos os valores permitidos para uma determinada lista de um cliente.
  • isAllowed(listName, value, customer): Método estático que verifica duas coisas:
    1. Se a funcionalidade de “allow list” está ativa para o cliente através de uma FeatureFlag.
    2. Se o value fornecido está presente na lista de permissões (listName) para o customer especificado. Retorna true se a funcionalidade estiver desativada ou se o valor for encontrado, e false caso contrário.

A tabela banks armazena uma lista de instituições financeiras que operam no Brasil. Ela serve como um repositório central de informações sobre bancos, incluindo seus nomes e códigos de identificação (ISPB e COMPE).

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único para cada banco.Chave Primária
namevarchar(100)O nome oficial do banco.Não Nulo
ispbvarchar(100)O Identificador do Sistema de Pagamentos Brasileiro (ISPB) do banco. É um código único de 8 dígitos.Não Nulo
compevarchar(20)O Código de Compensação (COMPE) do banco. É um código de 3 dígitos usado para a compensação de cheques e outras transações.Pode ser Nulo
createdAttimestampData e hora em que o registro do banco foi criado.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro do banco.Gerado Automaticamente

Esta tabela é referenciada por outras tabelas que precisam associar informações a um banco específico, como checking_accounts e favorite_ted.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela batched_fee_charge é usada para registrar cobranças de taxas que são processadas em lote. Em vez de cobrar uma taxa a cada transação, o sistema pode agregar várias taxas e cobrá-las de uma só vez. Esta tabela armazena os detalhes de cada cobrança em lote.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da cobrança de taxa em lote.Chave Primária
customerIdintegerChave estrangeira que referencia o cliente (customer) que está sendo cobrado.FK
feeTypeenumO tipo de taxa que está sendo cobrada (ex: percentage, fixed).Não Nulo
feedouble precisionO valor ou percentual da taxa aplicada.Não Nulo
baseValuedouble precisionO valor base sobre o qual a taxa foi calculada.Não Nulo
totalFeedouble precisionO valor total da taxa cobrada.Não Nulo
referenceStartDatetimestampA data de início do período de referência para o qual as taxas foram agregadas.Não Nulo
referenceEndDatetimestampA data de fim do período de referência.Não Nulo
conciliationIdvarchar(100)Um identificador de conciliação para esta cobrança em lote.Não Nulo
descriptionvarchar(250)Uma descrição opcional para a cobrança.Pode ser Nulo
concludedbooleanUm booleano que indica se a cobrança da taxa foi concluída com sucesso.default: false
operation_chargedvarchar(10)A operação (CREDIT ou DEBIT) que foi cobrada.Pode ser Nulo
endToEndIdvarchar(100)O End-to-End ID da transação que efetivou a cobrança da taxa.Pode ser Nulo
  • customers: (n:1) Cada registro de cobrança de taxa em lote pertence a um cliente. A coluna customerId é a chave estrangeira.

Não há índices customizados definidos na entidade, além da chave primária.


Esta tabela armazena informações sobre lotes de transações de “cash-out” (saída de dinheiro) processados através do Banco do Brasil (BB). Ela agrupa múltiplas transações de retirada em um único lote para processamento.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do lote de cash-out.Chave Primária
total_amountfloatO valor total de todas as transações incluídas no lote.default: 0.0
statusintegerO status atual do processamento do lote. O valor numérico corresponde a um status definido em TransactionStatusNumber.default: 0
request_numberintegerUm número de requisição associado ao lote, provavelmente fornecido pelo Banco do Brasil.Não Nulo
checkingAccountIdintegerChave estrangeira que referencia a conta corrente (checking_account) de onde os fundos foram retirados.FK
createdAttimestampData e hora em que o registro do lote foi criado.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro do lote.Gerado Automaticamente
  • checking_accounts: (n:1) Cada lote de cash-out está associado a uma conta corrente. A coluna checkingAccountId é a chave estrangeira.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela billets armazena todos os dados relacionados a boletos bancários gerados no sistema. Isso inclui boletos de depósito, cobrança, e todos os seus detalhes, desde a criação até o pagamento.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do boleto.Chave Primária
typevarchar(20)Tipo do boleto (ex: deposit).default: 'deposit'
dueDatedateData de vencimento do boleto.Não Nulo
closePaymentdateData limite para pagamento do boleto.Não Nulo
amountdecimalValor principal do boleto.Não Nulo, default: 0.0
checkingAccountIdintegerChave estrangeira para a conta corrente (checking_account) que emitiu o boleto.FK
payerIdintegerChave estrangeira para o pagador (payer) do boleto.FK
interestjsonObjeto JSON com as configurações de juros por atraso.Pode ser Nulo
finejsonObjeto JSON com as configurações de multa por atraso.Pode ser Nulo
discountsjsonObjeto JSON com as configurações de descontos.Pode ser Nulo
authenticationCodevarchar(100)Código de autenticação do boleto, se aplicável.Pode ser Nulo
ourNumbervarchar(60)”Nosso Número”, o identificador do boleto no banco emissor.Pode ser Nulo
singlePathvarchar(500)Caminho para o arquivo do boleto individual (ex: PDF).Pode ser Nulo
multiplePathvarchar(500)Caminho para um arquivo com múltiplos boletos (carnê).Pode ser Nulo
notesvarchar(200)Instruções ou observações no corpo do boleto.Pode ser Nulo
statusintegerCódigo numérico que representa o status do boleto (ex: 0 para pendente, 1 para pago).default: 0
statusDescriptionvarchar(60)Descrição textual do status (ex: ‘Processed’, ‘Paid’).default: 'Processed'
metajsonCampo para metadados diversos relacionados à criação do boleto.Pode ser Nulo
digitablevarchar(200)A linha digitável do boleto.Pode ser Nulo
documentvarchar(200)Número do documento associado ao boleto.Pode ser Nulo
paymentDatedateData em que o boleto foi efetivamente pago.Pode ser Nulo
paymentMetajsonCampo para metadados diversos relacionados ao pagamento.Pode ser Nulo
paymentAmountdecimalValor total pago, incluindo juros, multas e descontos.Pode ser Nulo
fineAmountdecimalValor da multa pago.Pode ser Nulo
interestAmountdecimalValor dos juros pago.Pode ser Nulo
discountAmountdecimalValor do desconto aplicado no pagamento.Pode ser Nulo
installmentintegerNúmero da parcela atual (para carnês).default: 1
installmentsintegerNúmero total de parcelas (para carnês).default: 1
referencevarchar(60)Uma referência interna para o boleto.Pode ser Nulo
externalReferencevarchar(100)Uma referência externa para o boleto.Pode ser Nulo
itemsjsonObjeto JSON com a lista de itens da cobrança.Pode ser Nulo
shippingjsonObjeto JSON com informações de frete.Pode ser Nulo
splitsjsonObjeto JSON com regras de divisão de pagamento (split).Pode ser Nulo
ipAddressvarchar(60)Endereço IP do solicitante que gerou o boleto.Pode ser Nulo
postbackUrlvarchar(500)URL para notificação (webhook) de eventos do boleto.Pode ser Nulo
traceablebooleanIndica se o boleto é rastreável.default: false
sendEmailbooleanIndica se um e-mail deve ser enviado ao pagador.default: false
metadatavarchar(120)Campo genérico para metadados adicionais.Pode ser Nulo
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • checking_accounts: (n:1) Cada boleto é emitido por uma conta corrente.
  • payers: (n:1) Cada boleto tem um pagador associado.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela blocked_payer é uma lista de bloqueio (blacklist) para pagadores. Ela armazena os documentos de pagadores que, por algum motivo, foram impedidos de realizar transações no sistema.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de bloqueio.Chave Primária
documentvarchar(100)O número do documento (CPF/CNPJ) do pagador que está bloqueado.Não Nulo, Único
ownervarchar(100)Identificação de quem ou qual sistema realizou o bloqueio.Não Nulo

Esta tabela não possui relacionamentos diretos (chaves estrangeiras) com outras tabelas, mas o campo document é usado para verificar se um pagador está na lista de bloqueio antes de processar uma transação.

  • IDX_document: Índice único na coluna document. Garante que não haverá documentos duplicados na lista de bloqueio e otimiza a consulta de verificação.
  • checkIsBlockedPayer(document): Método estático que recebe um número de documento e verifica se ele existe na tabela blocked_payer. Retorna true se o pagador estiver bloqueado e false caso contrário.

Similar à blocked_payer, a tabela blocked_pix_keys funciona como uma lista de bloqueio (blacklist), mas especificamente para chaves PIX. Ela impede que transações sejam realizadas utilizando as chaves PIX que estão registradas nesta tabela.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de bloqueio da chave PIX.Chave Primária
keyvarchar(100)A chave PIX que está bloqueada (ex: e-mail, CPF, telefone, chave aleatória).Não Nulo
ownervarchar(100)Identificação de quem ou qual sistema realizou o bloqueio.Não Nulo

Esta tabela não possui relacionamentos diretos (chaves estrangeiras). Ela é consultada durante o processo de validação de transações PIX.

Não há índices customizados definidos na entidade, além da chave primária. A consulta é feita diretamente pelo valor da coluna key.

  • checkIsBlockedPixKey(pixKey): Método estático que recebe um objeto PixKey e verifica se o valor da chave (pixKey.key) existe na tabela blocked_pix_keys. Retorna true se a chave estiver bloqueada e false caso contrário.

Esta tabela é responsável por gerenciar o processo de verificação de números de telefone dos usuários. Ela armazena tokens de verificação, controla seu status e prazo de validade, e associa o número de telefone a um usuário.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de verificação.Chave Primária
phone_numbervarchar(60)O número de telefone que está sendo verificado.Não Nulo
tokenvarchar(60)O token único enviado ao usuário para verificação.Não Nulo, Único
is_verifiedbooleanIndica se o número de telefone foi verificado com sucesso.default: false
verified_attimestampData e hora em que a verificação foi concluída.Pode ser Nulo
expires_attimestampData e hora em que o token de verificação expira.default: CURRENT_TIMESTAMP
imeivarchar(255)IMEI do dispositivo móvel que solicitou a verificação.Pode ser Nulo
platformvarchar(60)Plataforma do dispositivo (ex: ‘iOS’, ‘Android’).Pode ser Nulo
versionvarchar(60)Versão do aplicativo ou sistema operacional.Pode ser Nulo
isActivebooleanIndica se este registro de verificação está ativo.default: true
sIdvarchar(60)Um ID de sessão ou serviço externo relacionado à verificação.Pode ser Nulo
attemptsintegerNúmero de tentativas de verificação.default: 1
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
user_idintegerChave estrangeira que referencia o usuário (user) associado a esta verificação.FK
  • users: (n:1) Cada registro de verificação de telefone está associado a um usuário.
  • A coluna token possui um índice único para garantir que não haja tokens duplicados.

Tabela: checking_account_custom_attributes

Section titled “Tabela: checking_account_custom_attributes”

Esta tabela permite armazenar atributos (metadados) personalizados no formato chave-valor para contas correntes (checking_accounts). É uma forma flexível de estender as informações de uma conta corrente sem precisar alterar a estrutura da tabela principal.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do atributo personalizado.Chave Primária
checkingAccountIdintegerChave estrangeira que referencia a conta corrente (checking_account) à qual este atributo pertence.FK
keyvarcharA chave (nome) do atributo personalizado.Não Nulo
valuevarcharO valor do atributo personalizado.Não Nulo
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • checking_accounts: (n:1) Cada atributo personalizado está associado a uma única conta corrente.
  • IDX_checkingAccount_key: Índice único composto pelas colunas checkingAccountId e key. Garante que cada chave de atributo seja única para uma determinada conta corrente.

A tabela checking_accounts é central para o sistema, representando as contas correntes dos clientes. Ela armazena os detalhes bancários essenciais, como agência, número da conta e o banco associado.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da conta corrente.Chave Primária
bankIdintegerChave estrangeira que referencia o banco (banks) ao qual a conta pertence.FK
typevarchar(100)O tipo de conta (ex: PAYMENT_ACCOUNT, CHECKING_ACCOUNT).default: 'PAYMENT_ACCOUNT'
agencyvarchar(100)O número da agência da conta.Não Nulo
accountNumbervarchar(100)O número da conta corrente.Não Nulo
metajsonCampo para metadados diversos relacionados à conta.Pode ser Nulo
isActivebooleanIndica se a conta corrente está ativa.default: true
statusReasonvarchar(100)Motivo para o status atual da conta (ex: motivo de inativação).Pode ser Nulo
createdAttimestampData e hora de criação do registro da conta.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • banks: (n:1) Cada conta corrente pertence a um banco.
  • customers: (1:1) Cada conta corrente está diretamente associada a um cliente (customer).
  • Outras Tabelas: É referenciada por muitas outras tabelas que lidam com transações e configurações financeiras, como transactions, billets, aggregated_transaction_info, etc.

Não há índices customizados definidos na entidade, além da chave primária e das chaves estrangeiras.


Esta tabela gerencia o processo de reivindicação de chaves PIX. Quando um usuário tenta registrar uma chave PIX que já pertence a outra pessoa, um processo de reivindicação é iniciado. Esta tabela rastreia o status dessas reivindicações.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de reivindicação.Chave Primária
claimIdvarchar(40)O ID da reivindicação, geralmente fornecido pelo provedor de serviços PIX (PSP).Não Nulo
statusenumO status atual da reivindicação (ex: OPEN, CONFIRMED, CANCELLED).Não Nulo, default: 'OPEN'
createdAttimestampData e hora em que o registro de reivindicação foi criado.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
customerIdintegerChave estrangeira que referencia o cliente (customer) que iniciou a reivindicação.FK
  • customers: (n:1) Cada reivindicação de chave PIX é iniciada por um cliente.
  • IDX_status_customer: Índice composto nas colunas status e customerId. Otimiza a busca por reivindicações de um cliente com um status específico.

A tabela client_credentials armazena as credenciais de cliente (Client ID e Client Secret) usadas para autenticação de API, seguindo o fluxo de Client Credentials do OAuth 2.0. Essas credenciais são associadas a um cliente (customer) e permitem que sistemas externos se autentiquem para interagir com a API em nome desse cliente.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da credencial.Chave Primária
client_idvarcharO Client ID, um identificador público para a aplicação cliente.Não Nulo
client_secretvarcharO Client Secret, uma senha confidencial usada para autenticar a aplicação cliente.Não Nulo
customerIdintegerChave estrangeira que referencia o cliente (customer) ao qual estas credenciais pertencem.Não Nulo, FK
expirationDatetimestampData e hora em que as credenciais expiram.Pode ser Nulo
isActivebooleanIndica se as credenciais estão ativas e podem ser usadas para autenticação.default: true
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
  • customers: (n:1) Cada par de credenciais de cliente está associado a um único cliente.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela compound_customers é usada para criar uma relação entre dois clientes (customers) distintos, tratando-os como uma única entidade composta para fins específicos. Geralmente, um cliente é designado para operações de “cash-in” (entrada de dinheiro) e o outro para operações de “cash-out” (saída de dinheiro).

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de cliente composto.Chave Primária
cashin_customer_idintegerChave estrangeira que referencia o cliente (customer) responsável pelas operações de cash-in.Não Nulo, FK
cashout_customer_idintegerChave estrangeira que referencia o cliente (customer) responsável pelas operações de cash-out.Não Nulo, FK
  • customers (como cashin_customer_id): (1:1) Aponta para o cliente que lida com as entradas de fundos.
  • customers (como cashout_customer_id): (1:1) Aponta para o cliente que lida com as saídas de fundos.

Não há índices customizados definidos na entidade, além da chave primária e das chaves estrangeiras.


CustomBaseEntity não é uma tabela do banco de dados, mas sim uma classe base abstrata da qual muitas outras entidades do sistema herdam. Ela estende a BaseEntity do TypeORM e adiciona métodos utilitários estáticos que simplificam operações comuns de banco de dados.

  • Descrição: Um método estático genérico que cria uma nova instância da entidade que o chama. Ele funciona como um atalho para new Entity() e Object.assign(), ou mais diretamente, para o método .create() do repositório do TypeORM.
  • Parâmetros:
    • obj: Um objeto contendo as propriedades para inicializar a nova instância da entidade.
  • Retorno: Uma nova instância da entidade, pronta para ser salva no banco de dados.
  • Uso: const newUser = User.createInstance({ name: 'John Doe', email: 'john@example.com' });
  • Descrição: Um método estático genérico que busca o primeiro registro que corresponde a um conjunto de condições. É um atalho para o método .find() com as opções { where, take: 1 }.
  • Parâmetros:
    • where: Um objeto de condição do TypeORM para filtrar a busca.
  • Retorno: Uma promessa (Promise) que resolve para a primeira entidade encontrada que corresponde às condições, ou undefined se nenhum registro for encontrado.
  • Uso: const user = await User.findOneWhere({ email: 'john@example.com' });

O objetivo principal desta classe é fornecer uma API mais limpa e consistente para criar e buscar instâncias de entidades, promovendo a reutilização de código e simplificando a lógica nos serviços e repositórios.


A tabela customer_aggregates é usada para criar um relacionamento de agregação entre clientes. Ela permite que um cliente (customer) seja agrupado sob outro cliente (aggregate). Isso é útil em cenários de marketplace ou grupos de empresas, onde uma conta principal (agregadora) pode ter várias contas secundárias (agregadas) vinculadas a ela.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de agregação.Chave Primária
customerIdintegerChave estrangeira para o cliente principal/pai (customer).FK
aggregateIdintegerChave estrangeira para o cliente que está sendo agregado/filho (customer).FK
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • customers (como customer): (n:1) Aponta para o cliente principal que agrega outros.
  • customers (como aggregate): (n:1) Aponta para o cliente que é agregado.
  • IDX_customer_aggregate: Índice composto nas colunas customerId e aggregateId.
  • IDX_aggregate: Índice na coluna aggregateId para otimizar buscas por clientes agregados.
  • set(customer, aggregate, manager?): Método estático para criar uma nova relação de agregação entre um customer e um aggregate. Permite o uso de um EntityManager para transações.
  • checkIsAggregate(customer, aggregate): Método estático que verifica se um cliente (aggregate) já está agregado a outro (customer). Retorna true ou false.
  • findCustomerByAggregate(aggregate): Método estático que encontra o cliente principal (customer) ao qual um determinado cliente agregado (aggregate) pertence.

Assim como a checking_account_custom_attributes, esta tabela permite armazenar atributos (metadados) personalizados no formato chave-valor, mas desta vez para a entidade Customer. É uma forma flexível de estender as informações de um cliente, frequentemente usada para armazenar identificadores customizados para fins de conciliação ou integração com sistemas externos.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do atributo personalizado.Chave Primária
keyvarchar(100)A chave (nome) do atributo personalizado.Não Nulo
valuevarchar(100)O valor do atributo personalizado.Não Nulo
customerIdintegerChave estrangeira que referencia o cliente (customer) ao qual este atributo pertence.FK
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • customers: (n:1) Cada atributo personalizado está associado a um único cliente.
  • IDX_customer_key: Índice único composto pelas colunas customerId e key. Garante que cada chave de atributo seja única para um determinado cliente.
  • set(customIdentifier): Método estático para criar ou atualizar um atributo personalizado para um cliente.
  • getCustomer(key, value): Método estático que busca e retorna o cliente (Customer) associado a um par específico de chave e valor.
  • getValueFromKey(customer, key): Método estático que busca o valor de um atributo específico (key) para um determinado cliente (customer).

A tabela customer_documents armazena informações sobre os documentos enviados pelos clientes durante o processo de cadastro e verificação (KYC - Know Your Customer). Ela guarda as URLs dos arquivos de documento, bem como metadados sobre eles.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do documento.Chave Primária
urlvarchar(500)A URL (geralmente de um serviço de armazenamento como S3) onde o arquivo do documento está localizado.Não Nulo
fileNamevarchar(200)O nome original do arquivo do documento.Pode ser Nulo
mimeTypevarchar(60)O tipo MIME do arquivo (ex: image/jpeg, application/pdf).Pode ser Nulo
publicUrlvarchar(500)Uma URL pública para acessar o documento, se aplicável.Pode ser Nulo
documentTypevarchar(20)O tipo de documento enviado (ex: SELFIE, ID_CARD, PASSPORT).default: 'SELFIE'
documentSidevarchar(20)O lado do documento, se aplicável (ex: FRONT, BACK).default: 'FRONT'
customerIdintegerChave estrangeira que referencia o cliente (customer) que enviou o documento.FK
tokenvarchar(60)Um token associado ao upload do documento, para segurança ou rastreamento.Pode ser Nulo
statusintegerUm código numérico que representa o status de verificação do documento.default: 0
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • customers: (n:1) Cada documento pertence a um cliente. A coluna customerId é a chave estrangeira.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela customer_subscriptions gerencia as assinaturas de planos dos clientes. Ela vincula um cliente (customer) a um plano de assinatura (subscription_plan) e controla o ciclo de vida dessa assinatura, incluindo datas, pagamentos e renovação.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da assinatura do cliente.Chave Primária
customerIdintegerChave estrangeira para o cliente (customer) que possui a assinatura.Não Nulo, FK
planIdintegerChave estrangeira para o plano (subscription_plan) assinado.Não Nulo, FK
startDatetimestampData de início da vigência da assinatura.Não Nulo
endDatetimestampData de término da vigência da assinatura.Não Nulo
paymentDayintegerO dia do mês em que o pagamento da assinatura é devido.Não Nulo
nextPaymentDatetimestampA data do próximo pagamento agendado.Pode ser Nulo
autoRenewbooleanIndica se a assinatura deve ser renovada automaticamente ao final do período.Não Nulo, default: true
paymentPendingbooleanIndica se há um pagamento pendente para a assinatura.default: true
paymentAmountfloatO valor do pagamento da assinatura.default: 0
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • customers: (n:1) Cada registro de assinatura pertence a um cliente.
  • subscription_plans: (n:1) Cada registro de assinatura está vinculado a um plano específico.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela customers é uma das entidades centrais do sistema, contendo todas as informações cadastrais dos clientes, sejam eles pessoas físicas ou jurídicas. Ela armazena desde dados pessoais e de contato até informações de segurança, configurações de PIX e relacionamentos com outras entidades.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do cliente.Chave Primária
namevarchar(100)Nome completo ou razão social do cliente.Não Nulo
tradingNamevarchar(100)Nome fantasia (para pessoas jurídicas).Pode ser Nulo
emailvarchar(100)Endereço de e-mail principal do cliente.Não Nulo
phoneNumbervarchar(30)Número de telefone de contato.Pode ser Nulo
websitevarchar(60)Website do cliente.Pode ser Nulo
documentvarchar(14)CPF ou CNPJ do cliente.Pode ser Nulo
typevarchar(1)Tipo de pessoa: ‘F’ para Física, ‘J’ para Jurídica.default: 'F'
logovarchar(500)URL para a logomarca do cliente.Pode ser Nulo
ColunaTipo de DadosDescrição
addressLine1varchar(100)Logradouro e número.
addressLine2varchar(14)Complemento.
neighborhoodvarchar(100)Bairro.
cityvarchar(100)Cidade.
statevarchar(20)Estado.
postalCodevarchar(10)CEP.
countryCodevarchar(2)Código do país (ISO 3166-1 alpha-2). default: 'BR'
ColunaTipo de DadosDescrição
isActivebooleanIndica se o cliente está ativo no sistema. default: true
statusintegerCódigo numérico que representa o status do cadastro do cliente (ex: PROPOSTA_CRIADA, APROVADO).
statusDescriptionvarchar(200)Descrição textual do status do cadastro.
isTransactionsAllowedbooleanIndica se o cliente tem permissão para realizar transações. default: true
isInQueuebooleanFlag para controle de processamento em fila.
inQueueAtdateData em que o cliente entrou na fila de processamento.
ColunaTipo de DadosDescrição
checkingAccountIdintegerFK para a conta corrente principal do cliente em checking_accounts.
withdrawCheckingAccountIdintegerFK para a conta corrente de saque do cliente em checking_accounts.
userIdintegerFK para o usuário master (users) associado a este cliente.
pixSettingsIdintegerFK para as configurações de PIX do cliente em pix_settings.
ColunaTipo de DadosDescrição
transactionPasswordvarchar(255)Hash da senha transacional do cliente. (Não selecionável por padrão)
privateKeyvarchar(500)Chave privada do cliente para assinaturas. (Não selecionável por padrão)
publicKeyvarchar(500)Chave pública do cliente.
hashPrivateKeyvarcharHash da chave privada para validação. (Não selecionável por padrão)
webhookKeyvarcharChave secreta para validação de webhooks. (Não selecionável por padrão)
ColunaTipo de DadosDescrição
pixKeyTypevarchar(20)Tipo da chave PIX principal do cliente (ex: CPF, EMAIL).
pixKeyValuevarchar(60)Valor da chave PIX principal do cliente.
pixCashInKeyvarchar(60)Chave PIX específica para operações de cash-in.
billetLimitAmountfloatLimite de valor para emissão de boletos.
ColunaTipo de DadosDescrição
metajsonCampo genérico para metadados.
deviceInfojsonInformações do dispositivo usado no cadastro. (Não selecionável por padrão)
imeivarcharIMEI do dispositivo. (Não selecionável por padrão)
marketPlaceIdvarchar(100)ID do marketplace ao qual o cliente pertence, se aplicável.
isMarketPlacebooleanIndica se o cliente é um marketplace.
fallbackWebhookUrlvarchar(100)URL de webhook de fallback.
createdAttimestampData de criação do registro.
updatedAttimestampData da última atualização.
  • checking_accounts: (1:1) Um cliente possui uma conta corrente principal e pode ter uma conta de saque.
  • users: (1:1) Um cliente tem um usuário “master” associado.
  • customer_documents: (1:n) Um cliente pode ter vários documentos.
  • customer_aggregates: (1:n) Um cliente pode agregar vários outros clientes.
  • webhooks: (1:n) Um cliente pode ter várias configurações de webhook.
  • pix_settings: (n:1) Um cliente possui um conjunto de configurações de PIX.
  • getOneByDocumentAndAccountNumber(...): Busca um cliente pelo documento e número da conta.
  • getTransactionPassword(...): Busca a senha transacional de um cliente de forma segura.
  • validateTransactionPassword(...): Compara uma senha fornecida com o hash armazenado no banco.
  • getStatusDescription(...): Retorna a descrição textual de um status numérico.
  • idx_name_status_document: Índice composto para otimizar buscas por nome, status e documento.

Esta tabela rastreia o uso mensal de transações por tipo para cada cliente. Ela armazena a contagem de transações PIX, TED e de Boleto que um cliente realizou em um determinado mês/ano. É útil para relatórios, faturamento e análise de uso.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de uso mensal.Chave Primária
customerIdintegerChave estrangeira para o cliente (customer).FK
monthYeardateO mês e ano de referência para a contagem de transações (o dia é irrelevante).Não Nulo
countPixintegerNúmero total de transações PIX realizadas no mês.default: 0
countTedintegerNúmero total de transações TED realizadas no mês.default: 0
countBilletintegerNúmero total de transações de Boleto realizadas no mês.default: 0
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • customers: (n:1) Cada registro de uso mensal pertence a um cliente.
  • IDX_customer_monthYear: Índice único composto nas colunas customerId e monthYear. Garante que haverá apenas um registro de contagem por cliente para cada mês/ano.

A tabela dda_billets armazena informações sobre boletos eletrônicos gerenciados através do DDA (Débito Direto Autorizado). Ela contém os detalhes dos boletos que são apresentados eletronicamente para os clientes pagadores.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do boleto DDA.Chave Primária
codevarchar(20)Código do boleto.Não Nulo
ispbvarchar(20)ISPB do banco emissor.Não Nulo
assignorvarchar(20)Identificador do cedente (emissor do boleto).Pode ser Nulo
namevarchar(100)Nome do cedente.Não Nulo
fantasyNamevarchar(100)Nome fantasia do cedente.Pode ser Nulo
personTypevarchar(1)Tipo de pessoa do cedente (‘F’ ou ‘J’).default: 'J'
documentNumbervarchar(14)CPF/CNPJ do cedente.Não Nulo
dueDatedateData de vencimento do boleto.Não Nulo
dueDateRegisterdateData de registro do vencimento.Pode ser Nulo
hasDiscountbooleanIndica se o boleto possui desconto.default: false
hasInterestbooleanIndica se o boleto possui juros.default: false
descriptionvarchar(100)Descrição do boleto.Pode ser Nulo
originalValuefloatValor original do boleto.default: 0.0
digitablevarchar(100)Linha digitável do boleto.Não Nulo
barCodevarchar(100)Código de barras do boleto.Não Nulo
statusenumStatus do pagamento do boleto (Aberto, Pago, Cancelado, Estornado).default: 'Aberto'
paymentSituationvarchar(200)Descrição da situação do pagamento.Pode ser Nulo
externalTransactionIdvarchar(100)ID da transação no sistema externo.Não Nulo
customer_idintegerFK para o cliente (customer) que é o sacado (pagador).FK
transaction_idintegerFK para a transação (transaction) que liquidou este boleto.FK, Pode ser Nulo
isScheduledForPaymentbooleanIndica se o boleto está agendado para pagamento.default: false
isHiddenbooleanIndica se o boleto deve ser ocultado da visualização do usuário.default: false
createdAttimestampData de criação do registro.Gerado Automaticamente
updatedAttimestampData da última atualização.Gerado Automaticamente
  • customers: (n:1) Cada boleto DDA pertence a um cliente (pagador).
  • transactions: (1:1) Um boleto DDA pago está associado a uma transação de pagamento.
  • getScheduledDdaBillets(dueDate): Método estático que busca todos os boletos DDA agendados para pagamento em uma data específica (dueDate), incluindo uma lógica para buscar boletos de fim de semana na sexta-feira anterior.

A tabela dda_customer gerencia a adesão e o status de um cliente ao serviço de DDA (Débito Direto Autorizado). Ela registra se um cliente está ativo, em processamento ou se ocorreu algum erro em sua adesão ao DDA.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de adesão ao DDA.Chave Primária
statusenumO status atual da adesão do cliente ao DDA (processing, created, inactive, error).default: 'processing'
customerIdintegerChave estrangeira que referencia o cliente (customer) que aderiu ao DDA.FK, Relação 1:1
createdAttimestampData de criação do registro.Gerado Automaticamente
updatedAttimestampData da última atualização do registro.Gerado Automaticamente
  • customers: (1:1) Cada registro de dda_customer está associado a um único cliente, representando a adesão daquele cliente ao serviço.
  • checkDdaCustomerStatus(customer): Método estático que verifica e retorna o status da adesão ao DDA para um determinado cliente.
  • setDdaCustomerStatus(customer, status): Método estático que cria ou atualiza o status da adesão ao DDA para um cliente.
  • deleteCustomerDDA(customer): Método estático que remove o registro de adesão ao DDA de um cliente, efetivamente cancelando sua participação no serviço.

A tabela faqs armazena as Perguntas Frequentes (FAQ) que podem ser exibidas em uma seção de ajuda do aplicativo ou site. Ela contém a pergunta, a resposta, uma categoria opcional e um indicador de status.

ColunaTipo de DadosDescriçãoRestrições
iduuidIdentificador único universal (UUID) para cada FAQ.Chave Primária
questionvarcharO texto da pergunta.Não Nulo
answertextO texto da resposta.Não Nulo
categoryvarcharUma categoria opcional para agrupar as FAQs (ex: ‘PIX’, ‘Cadastro’).Pode ser Nulo
isActivebooleanIndica se a FAQ está ativa e deve ser exibida.default: true
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente

Esta tabela geralmente não possui relacionamentos diretos com outras tabelas. Ela serve como uma fonte de conteúdo para a interface do usuário.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela favorite_pix armazena os contatos PIX que um usuário marcou como favoritos. Isso permite que o usuário acesse rapidamente os detalhes de um destinatário frequente sem precisar digitar a chave PIX toda vez.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do favorito.Chave Primária
aliasvarchar(100)Um apelido ou nome personalizado para o favorito (ex: “Aluguel”, “Mãe”).Pode ser Nulo
namevarchar(100)O nome do titular da chave PIX.Não Nulo
pix_typevarchar(100)O tipo da chave PIX (ex: CPF, EMAIL, PHONE).Não Nulo
pix_keyvarchar(100)O valor da chave PIX.Não Nulo
user_idintegerChave estrangeira que referencia o usuário (user) que salvou este favorito.FK
  • users: (n:1) Cada favorito PIX pertence a um único usuário.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela favorite_ted armazena os contatos de destinatários de TED (Transferência Eletrônica Disponível) que um usuário marcou como favoritos. Ela serve para facilitar o preenchimento de dados bancários para transferências recorrentes.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do favorito.Chave Primária
aliasvarchar(100)Um apelido ou nome personalizado para o favorito.Pode ser Nulo
namevarchar(100)O nome do titular da conta de destino.Não Nulo
bank_idintegerChave estrangeira que referencia o banco (banks) da conta de destino.FK
agencyvarchar(100)O número da agência da conta de destino.Não Nulo
account_numbervarchar(100)O número da conta de destino.Não Nulo
documentvarchar(14)O CPF/CNPJ do titular da conta de destino.Pode ser Nulo
user_idintegerChave estrangeira que referencia o usuário (user) que salvou este favorito.FK
  • users: (n:1) Cada favorito de TED pertence a um único usuário.
  • banks: (n:1) Cada favorito de TED está associado a um banco.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela favorite_tef armazena os contatos de destinatários de TEF (Transferência Eletrônica de Fundos) que um usuário marcou como favoritos. Assim como a favorite_ted, ela serve para facilitar o preenchimento de dados bancários para transferências recorrentes dentro do mesmo banco ou entre bancos parceiros.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do favorito.Chave Primária
aliasvarchar(100)Um apelido ou nome personalizado para o favorito.Pode ser Nulo
namevarchar(100)O nome do titular da conta de destino.Não Nulo
bank_idintegerChave estrangeira que referencia o banco (banks) da conta de destino.FK
agencyvarchar(100)O número da agência da conta de destino.Não Nulo
account_numbervarchar(100)O número da conta de destino.Não Nulo
documentvarchar(14)O CPF/CNPJ do titular da conta de destino.Pode ser Nulo
user_idintegerChave estrangeira que referencia o usuário (user) que salvou este favorito.FK
  • users: (n:1) Cada favorito de TEF pertence a um único usuário.
  • banks: (n:1) Cada favorito de TEF está associado a um banco.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela feature_flag implementa um sistema de “Feature Flags” (ou “Feature Toggles”), que permite ativar ou desativar funcionalidades específicas do sistema de forma dinâmica, sem a necessidade de um novo deploy de código. As flags podem ser aplicadas a todos os clientes ou a clientes específicos.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da feature flag.Chave Primária
namevarchar(100)O nome único da funcionalidade que está sendo controlada (ex: pix-refund-v2).Não Nulo
customerIdintegerChave estrangeira para o cliente (customer) ao qual esta regra se aplica. Se for nulo, a regra pode ser global.FK
isActivebooleanIndica se a funcionalidade está ativa (true) ou inativa (false).default: false
all_customersbooleanSe true, esta regra se aplica a todos os clientes, e o customerId é ignorado.default: false
  • customers: (n:1) Uma feature flag pode estar associada a um cliente específico.
  • IDX_customer_name: Índice composto nas colunas customerId e name para otimizar a busca de flags para um cliente específico.
  • IDX_name: Índice na coluna name para otimizar a busca de flags pelo nome.
  • isFeatureEnabledForAll(name): Verifica se uma funcionalidade está ativa globalmente para todos os clientes.
  • isFeatureEnabledForCustomer(customer, name): Verifica se uma funcionalidade está ativa especificamente para um determinado cliente.
  • isFeatureEnabled(customer, name): Método combinado que primeiro verifica a flag específica do cliente e, se não houver, poderia (embora a implementação atual não mostre) verificar a flag global como fallback.
  • getEnabledCustomers(name): Retorna uma lista de todos os clientes para os quais uma determinada funcionalidade está ativa (excluindo a regra all_customers).

A tabela fee_settings_history funciona como um log de auditoria para todas as alterações feitas nas configurações de taxas (fee_settings). Cada vez que uma configuração de taxa é criada, ativada, desativada ou modificada, um registro é criado nesta tabela para manter um histórico completo das mudanças.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de histórico.Chave Primária
actionenumA ação que foi realizada (ex: CREATED, ACTIVATED, DEACTIVATED).Não Nulo
activedByIdintegerChave estrangeira para o administrador (user_admin) que realizou a ação.FK
settingjsonbUm snapshot (cópia) em JSON da configuração de taxa (FeeSetting) no momento da ação.Não Nulo
modifiedAttimestampData e hora em que a modificação ocorreu.Gerado Automaticamente
  • user_admin: (n:1) Cada registro de histórico é associado a um usuário administrador que realizou a alteração.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela fee_settings armazena diferentes conjuntos de configurações de taxas. Cada registro representa um “pacote” de regras de taxação que pode ser aplicado aos clientes. O sistema garante que apenas um conjunto de configurações de taxas possa estar ativo por vez.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do conjunto de configurações de taxa.Chave Primária
descriptionvarcharUma descrição para identificar o conjunto de taxas (ex: “Plano Padrão 2024”).Não Nulo, Único
isActivebooleanIndica se este conjunto de configurações de taxa é o que está atualmente em vigor.Não Nulo, default: false
createdByIdintegerChave estrangeira para o administrador (user_admin) que criou este conjunto de taxas.FK
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • user_admin: (n:1) Cada conjunto de taxas é criado por um usuário administrador.
  • fee_transaction_settings: (1:n) Cada conjunto de taxas (FeeSetting) possui várias regras de taxação específicas por tipo de transação (FeeTransactionSetting).
  • unique_is_active: Índice único na coluna isActive com a condição WHERE is_active = true. Isso garante em nível de banco de dados que apenas um único registro pode ter isActive como true, prevenindo a ativação de múltiplos conjuntos de taxas simultaneamente.
  • unique_description: Índice único na coluna description para garantir que cada conjunto de taxas tenha um nome exclusivo.

A tabela fee_transaction_settings detalha as regras de taxação para transações específicas. Cada registro define o valor da taxa e a isenção mensal para uma combinação única de operação (crédito/débito), tipo de transação (PIX, TED, etc.) e o conjunto de taxas (fee_setting) ao qual pertence.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da regra de taxa.Chave Primária
operationOperationA operação da transação (CREDIT ou DEBIT).Não Nulo
transactionTypeTRANSACTION_TYPE_ENUMO tipo da transação (ex: PIX, TED, BILLET).Não Nulo
feeAmountTypeFEE_AMOUNT_TYPE_ENUMO tipo de cálculo da taxa (FIXED ou PERCENTAGE).Não Nulo, default: 'FIXED'
feeAmountfloatO valor (fixo ou percentual) da taxa a ser aplicada.Não Nulo
monthlyFreeintegerO número de transações deste tipo que são isentas de taxa por mês.Não Nulo
feeSettingIdintegerChave estrangeira que referencia o conjunto de taxas (fee_settings) ao qual esta regra pertence.FK
  • fee_settings: (n:1) Cada regra de taxa pertence a um conjunto de configurações de taxa.
  • unique_fee_transaction_setting: Índice único composto pelas colunas operation, transactionType e feeSettingId. Isso garante que não exista mais de uma regra de taxa para a mesma combinação de operação e tipo de transação dentro do mesmo conjunto de configurações de taxa.

A tabela ip_allow_list é uma lista de permissões (whitelist) específica para endereços IP. Ela permite que um cliente (customer) restrinja o acesso a determinadas funcionalidades ou APIs apenas aos endereços IP listados.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro.Chave Primária
listNamevarchar(100)O nome da lista de permissões à qual este IP pertence (ex: api-access, dashboard-login).Não Nulo
ipvarchar(100)O endereço IP que está sendo permitido.Não Nulo
customerIdintegerChave estrangeira que referencia o cliente (customer) dono desta regra.FK
  • customers: (n:1) Cada registro de IP permitido pertence a um cliente.
  • isIpAllowed(customer, ip, listName): Método estático que verifica se um determinado endereço ip está na lista de permissões (listName) para um customer específico. Retorna true se o IP for encontrado, e false caso contrário.

A tabela notifications armazena as notificações que são enviadas aos clientes. Ela é usada para comunicação dentro da plataforma, como avisos, alertas ou mensagens informativas.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da notificação.Chave Primária
customer_idintegerChave estrangeira que referencia o cliente (customer) que receberá a notificação.Não Nulo, FK
readbooleanIndica se a notificação já foi lida pelo cliente.default: false
titlevarcharO título da notificação.Não Nulo
messagetextO conteúdo da mensagem da notificação.Não Nulo
createdAttimestampData e hora de criação da notificação.Gerado Automaticamente
updatedAttimestampData e hora da última atualização (ex: quando foi lida).Gerado Automaticamente
  • customers: (n:1) Cada notificação pertence a um único cliente.
  • notifications_idx_user: Índice composto nas colunas customer_id, createdAt e read. Otimiza a busca por notificações de um cliente, permitindo filtrar por lidas/não lidas e ordenar por data de forma eficiente.

A tabela payers armazena informações sobre os pagadores (sacados) de transações, especialmente em contextos como a emissão de boletos. Ela contém os dados cadastrais da pessoa ou empresa que deve realizar o pagamento.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do pagador.Chave Primária
namevarchar(200)Nome completo ou razão social do pagador.Não Nulo
tradeNamevarchar(200)Nome fantasia do pagador.Pode ser Nulo
emailvarchar(100)Endereço de e-mail do pagador.Pode ser Nulo
phoneNumbervarchar(100)Número de telefone do pagador.Pode ser Nulo
documentvarchar(14)CPF ou CNPJ do pagador.Não Nulo
addressLine1varchar(100)Endereço principal do pagador.Pode ser Nulo
cityvarchar(100)Cidade do pagador.Pode ser Nulo
statevarchar(20)Estado do pagador.Pode ser Nulo
zipCodevarchar(10)CEP do pagador.Pode ser Nulo
customerIdintegerChave estrangeira que referencia o cliente (customer) que cadastrou este pagador.FK
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • customers: (n:1) Cada registro de pagador é associado a um cliente que o cadastrou.
  • billets: A tabela payers é referenciada pela tabela billets para identificar quem é o pagador de um boleto.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela permission_admin define as permissões individuais que podem ser concedidas a usuários administradores. Cada registro representa uma ação ou acesso específico no painel de administração (ex: “visualizar usuários”, “editar configurações”). Essas permissões são então agrupadas em papéis (roles).

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da permissão.Chave Primária
namevarchar(255)O nome de código da permissão (ex: users:read, settings:write).Pode ser Nulo
titlevarchar(255)Um título amigável para a permissão (ex: “Visualizar Usuários”).Pode ser Nulo
descriptionvarchar(255)Uma descrição detalhada do que a permissão concede.Pode ser Nulo
visualizationbooleanFlag que pode ser usada para controlar a visibilidade da permissão na interface.default: false
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • role_admin: (n:m) Uma permissão pode ser atribuída a múltiplos papéis, e um papel pode ter múltiplas permissões. A relação é gerenciada por uma tabela de junção (roles_permissions_admin).

Não há índices customizados definidos na entidade, além da chave primária.


A tabela pix_key_info funciona como um cache para os dados de chaves PIX consultadas. Quando uma chave PIX é validada, os dados do destinatário (nome, documento, dados bancários) são armazenados aqui para acelerar consultas futuras e reduzir a necessidade de consultar repetidamente o DICT (Diretório de Identificadores de Contas Transacionais).

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de cache.Chave Primária
typevarchar(100)O tipo da chave PIX (ex: CPF, EMAIL).Não Nulo
keyvarchar(100)O valor da chave PIX.Não Nulo
bankIspbvarchar(100)ISPB do banco do destinatário.Não Nulo
agencyvarchar(100)Agência da conta do destinatário.Não Nulo
accountNumbervarchar(100)Número da conta do destinatário.Não Nulo
accountTypevarchar(100)Tipo da conta do destinatário (ex: CACC para Conta Corrente).Não Nulo
documentvarchar(100)Documento (CPF/CNPJ) do titular da chave.Não Nulo
namevarchar(100)Nome do titular da chave.Não Nulo

Esta tabela não possui relacionamentos diretos com outras tabelas do sistema, mas é fundamental para o funcionamento das transações PIX.

  • getCreditParty(pixKey): Método estático que busca os dados de um destinatário (credit party) no cache a partir de uma chave PIX.
  • setOne(pixKey, pixKeyInfo): Método estático que salva no cache os dados de um destinatário (pixKeyInfo) associados a uma chave PIX (pixKey).

A tabela pix_profit_distribution_item armazena os itens individuais de uma distribuição de lucros via PIX. Cada registro representa uma parcela da distribuição, detalhando para quem o lucro foi enviado, os custos associados e o status da transação de pagamento.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do item de distribuição.Chave Primária
pixProfitDistributionIdintegerChave estrangeira que referencia o lote de distribuição de lucros (pix_profit_distribution) ao qual este item pertence.FK
namevarcharNome do participante ou da finalidade deste item de distribuição.Não Nulo
datajsonDados adicionais sobre o participante ou a distribuição (ex: chave PIX, dados bancários).Pode ser Nulo
costsdouble precisionCustos associados a este item da distribuição.default: 0.0
profitdouble precisionValor do lucro a ser distribuído neste item.default: 0.0
statusintegerStatus da transação de pagamento deste item (ex: 0 para pendente, 2 para pago).default: 0
responseMetajsonMetadados da resposta da transação de pagamento.Pode ser Nulo
endToEndIdvarcharEnd-to-End ID da transação PIX que efetivou o pagamento deste item.Pode ser Nulo
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • pix_profit_distribution: (n:1) Cada item pertence a um lote de distribuição de lucros.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela pix_profit_distribution representa um lote de distribuição de lucros. Ela serve como um registro mestre que agrupa vários itens de distribuição (pix_profit_distribution_item), totalizando os valores de cash-in, cash-out, custos e lucros para um período de referência (baseDate).

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do lote de distribuição.Chave Primária
checkingAccountIdintegerChave estrangeira para a conta corrente (checking_account) de onde os lucros estão sendo distribuídos.FK
baseDatedateA data de referência para o cálculo e a distribuição dos lucros.Não Nulo
totalCashIndouble precisionSoma total do cash-in no período de referência.default: 0.0
totalCashOutdouble precisionSoma total do cash-out no período de referência.default: 0.0
totalCostsdouble precisionSoma total dos custos associados à operação.default: 0.0
totalProfitdouble precisionLucro total a ser distribuído neste lote.default: 0.0
cashInCountintegerNúmero de transações de cash-in no período.default: 0
cashOutCountintegerNúmero de transações de cash-out no período.default: 0
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • checking_accounts: (n:1) Cada lote de distribuição está associado a uma conta corrente.
  • pix_profit_distribution_item: (1:n) Um lote de distribuição (PixProfitDistribution) contém múltiplos itens de distribuição (PixProfitDistributionItem).

Não há índices customizados definidos na entidade, além da chave primária.


A tabela pix_profit_participant define os participantes em um modelo de compartilhamento de lucros (profit sharing) via PIX. Cada registro especifica um participante, sua chave PIX de destino e a regra de como sua parcela do lucro deve ser calculada.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do participante.Chave Primária
namevarchar(100)Nome para identificar o participante.Não Nulo
pixKeyIdintegerChave estrangeira para pix_key_info, indicando a chave PIX para onde o lucro será enviado.Não Nulo, FK
profitShareTypeenumO tipo de cálculo da parcela do lucro (percentage ou fixed).default: 'percentage'
profitSharedouble precisionO valor (percentual ou fixo) da parcela do lucro.default: 0.0
isProfitOverGrossAmountbooleanSe true, a parcela é calculada sobre o valor bruto da transação, não sobre o lucro líquido.default: false
pixSettingsIdintegerChave estrangeira que referencia o conjunto de configurações (pix_settings) ao qual este participante pertence.Pode ser Nulo, FK
  • pix_key_info: (n:1) Cada participante tem uma chave PIX de destino para receber os pagamentos.
  • pix_settings: (n:1) Cada participante está associado a um conjunto de configurações de PIX, definindo um modelo de compartilhamento de lucros.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela pix_settings armazena as configurações de transações PIX para os clientes. Ela define as taxas, limites de valor, horários de operação noturna e as contas para cobrança de taxas. Cada cliente (customer) pode ter um conjunto de configurações PIX associado.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do conjunto de configurações.Chave Primária
descriptionvarcharDescrição do conjunto de configurações (ex: “TARIFA PADRÃO”).default: 'TARIFA PADRÃO'
profitPercentagedouble precisionPercentual de lucro retido pela plataforma.default: 0.0
feeTypeenumTipo de taxa aplicada (percentage ou fixed).default: 'percentage'
cashInFeedouble precisionTaxa para transações de entrada (crédito).default: 0.0
cashOutFeedouble precisionTaxa para transações de saída (débito).default: 0.0
cashInMaxAmountdouble precisionValor máximo para transações de cash-in.default: 0.0
cashOutMaxAmountdouble precisionValor máximo para transações de cash-out durante o dia.default: 0.0
cashOutNightMaxAmountdouble precisionValor máximo para transações de cash-out durante o período noturno.default: 0.0
nightTimeStartintegerHora de início do período noturno (ex: 20 para 20:00).
nightTimeEndintegerHora de fim do período noturno (ex: 6 para 06:00).
createPixTransactionsbooleanFlag que habilita ou desabilita a criação de transações PIX.default: true
participantsjsonCampo JSON para armazenar regras de participantes em modelos de split.Pode ser Nulo
cashOutDailyAmountdouble precisionLimite de valor diário para cash-out.default: 0.0
feeChargePixKeyIdintegerFK para pix_key_info, indicando a chave PIX para onde as taxas cobradas devem ser enviadas.FK
feeChargeCheckingAccountIdintegerFK para checking_accounts, indicando a conta de onde as taxas devem ser debitadas.FK
createdAttimestampData de criação do registro.Gerado Automaticamente
updatedAttimestampData da última atualização.Gerado Automaticamente
  • customers: (1:n) Um conjunto de configurações pode ser aplicado a múltiplos clientes.
  • pix_key_info: (n:1) Aponta para a chave PIX usada para centralizar a cobrança de taxas.
  • checking_accounts: (n:1) Aponta para a conta corrente usada para debitar as taxas.
  • getFeeSum(baseValue, operation, monetaryFraction): Calcula o valor total da taxa para uma transação com base no valor (baseValue) e na operação (CREDIT ou DEBIT). Pode retornar o valor em centavos ou reais.

A tabela plan_transaction_settings define as regras de isenção de transações para planos de assinatura (subscription_plans). Cada registro especifica a quantidade de transações mensais gratuitas que um cliente tem direito para uma combinação de operação e tipo de transação, como parte de seu plano.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da regra do plano.Chave Primária
operationOperationA operação da transação (CREDIT ou DEBIT).Não Nulo
transactionTypeTRANSACTION_TYPE_ENUMO tipo da transação (ex: PIX, TED, BILLET).Não Nulo
monthlyFreeintegerO número de transações deste tipo que são isentas de taxa por mês, conforme o plano.Não Nulo
planIdintegerChave estrangeira que referencia o plano de assinatura (subscription_plans) ao qual esta regra pertence.FK
  • subscription_plans: (n:1) Cada regra de isenção pertence a um plano de assinatura.
  • unique_plan_transaction_setting: Índice único composto pelas colunas operation, transactionType e planId. Garante que não exista mais de uma regra de isenção para a mesma combinação de operação e tipo de transação dentro do mesmo plano.

A tabela qrcode_bank funciona como um “pool” ou banco de QR Codes PIX pré-gerados para valores específicos. O objetivo é otimizar o tempo de resposta em operações que necessitam de um QR Code, fornecendo um que já foi gerado e está pronto para uso, em vez de gerar um novo a cada requisição.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro do QR Code.Chave Primária
amountfloatO valor monetário associado a este QR Code.default: 0.0
qrCodeIdvarcharO ID do QR Code, que contém os dados para o pagamento PIX.Não Nulo
checkingAccountIdintegerChave estrangeira para a conta corrente (checking_account) que receberá o pagamento.FK
conciliationIdvarchar(100)Um ID de conciliação associado a este QR Code.Não Nulo
expirationDatetimestampData e hora em que o QR Code expira e não pode mais ser usado.Pode ser Nulo
  • checking_accounts: (n:1) Cada QR Code está associado a uma conta corrente de destino.
  • IDX_checkingAccount_amount: Índice nas colunas checkingAccountId e amount para otimizar a busca por um QR Code disponível para um valor e conta específicos.
  • IDX_expirationDate: Índice na coluna expirationDate para otimizar a busca por QR Codes expirados.
  • createQrCode(qrcode): Método estático para adicionar um novo QR Code pré-gerado ao banco.
  • getExpiredQrcodes(): Método estático que busca todos os QR Codes que já expiraram.
  • getQrcodeByAmount(amount, checkingAccount): Método estático crucial que busca um QR Code disponível para um amount e checkingAccount específicos. Importante: Esta operação é atômica e deleta o registro do banco de dados ao mesmo tempo que o retorna, garantindo que o mesmo QR Code não seja usado mais de uma vez.

A tabela question_checks gerencia um processo de verificação de identidade baseado em questionário (provavelmente como parte de um fluxo de KYC - Know Your Customer). Ela armazena os dados do usuário, as perguntas feitas, as respostas fornecidas e o resultado da verificação.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da verificação.Chave Primária
cpfvarchar(60)CPF do usuário que está sendo verificado.Não Nulo
namevarchar(255)Nome do usuário.Pode ser Nulo
phonevarchar(60)Telefone do usuário.Pode ser Nulo
emailvarchar(255)E-mail do usuário.Pode ser Nulo
birth_datedateData de nascimento do usuário.Pode ser Nulo
ticket_idvarchar(60)ID único do “ticket” ou sessão de verificação, provavelmente de um serviço externo.Não Nulo, Único
result_codeintegerCódigo numérico do resultado da verificação.default: 0
result_messagevarcharMensagem textual descrevendo o resultado.Pode ser Nulo
verified_attimestampData e hora em que a verificação foi concluída.Pode ser Nulo
questionsjsonObjeto JSON contendo as perguntas que foram feitas ao usuário.Pode ser Nulo
answersjsonObjeto JSON contendo as respostas fornecidas pelo usuário.Pode ser Nulo
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
user_idintegerChave estrangeira que referencia o usuário (user) associado a esta verificação.FK
  • users: (n:1) Cada verificação por questionário está associada a um usuário.
  • A coluna ticket_id possui um índice único para garantir a unicidade de cada sessão de verificação.

A tabela refresh_tokens armazena os “refresh tokens” utilizados no fluxo de autenticação OAuth 2.0. Um refresh token é um token de longa duração que pode ser usado para obter um novo “access token” (de curta duração) sem que o usuário precise se autenticar novamente.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do refresh token.Chave Primária
tokenvarchar(255)O valor do refresh token.Não Nulo
accessTokenvarchar(255)O último access token que foi gerado por este refresh token.Pode ser Nulo
expiresAttimestampData e hora em que o refresh token expira e se torna inválido.Não Nulo
accessTokenExpiresAttimestampData e hora de expiração do access token associado.Pode ser Nulo
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente

Esta tabela não possui chaves estrangeiras diretas, mas está logicamente ligada à sessão de um usuário. A validação e o uso do token são feitos na camada de aplicação.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela role_admin define os papéis (funções) que podem ser atribuídos a usuários administradores. Cada papel agrupa um conjunto de permissões (permission_admin) que determinam o que um usuário com aquele papel pode fazer no painel de administração.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do papel.Chave Primária
namevarchar(255)O nome do papel (ex: “Administrador”, “Suporte Nível 1”).Pode ser Nulo
createdByvarchar(100)Identificação de quem criou o papel.Pode ser Nulo
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • user_admin: (1:n) Um papel pode ser atribuído a múltiplos usuários administradores.
  • permission_admin: (n:m) Um papel pode ter múltiplas permissões, e uma permissão pode pertencer a múltiplos papéis. A relação é gerenciada por uma tabela de junção chamada roles_permissions_admin.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela subscription_plan_config armazena configurações globais para o sistema de planos de assinatura. Atualmente, ela define a lista de dias de pagamento permitidos que os clientes podem escolher ao assinar um plano.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da configuração.Chave Primária
paymentDaysjsonUm array de números representando os dias do mês que estão disponíveis para serem escolhidos como dia de pagamento da assinatura.Não Nulo, default: '[]'
isActivebooleanIndica se esta configuração está ativa.Não Nulo, default: true
createdByIdintegerChave estrangeira para o administrador (user_admin) que criou a configuração.FK
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • user_admin: (n:1) Cada configuração é criada por um usuário administrador.

Não há índices customizados definidos na entidade, além da chave primária.


SubscriptionPlanEntitiesModule não é uma tabela do banco de dados, mas sim um módulo do NestJS. Sua função é agrupar e exportar todas as entidades do TypeORM que são relacionadas à funcionalidade de planos de assinatura.

O objetivo deste módulo é simplificar a importação de dependências. Em vez de importar cada entidade (SubscriptionPlan, CustomerSubscription, etc.) individualmente em outros módulos que precisam delas, pode-se importar apenas o SubscriptionPlanEntitiesModule. Isso melhora a organização e a manutenibilidade do código.

O módulo importa e reexporta o TypeOrmModule.forFeature() com as seguintes entidades:

  • SubscriptionPlan: Define os planos de assinatura disponíveis.
  • CustomerSubscription: Vincula um cliente a um plano de assinatura.
  • Transaction: Usada para registrar os pagamentos das assinaturas.
  • PlanTransactionSetting: Define as regras de isenção de transações para cada plano.

Qualquer outro módulo do NestJS que precise interagir com as tabelas de planos de assinatura pode simplesmente adicionar SubscriptionPlanEntitiesModule à sua lista de imports.


A tabela subscription_plans define os diferentes planos de assinatura que podem ser oferecidos aos clientes. Cada registro representa um plano com seu nome, descrição, preço e as regras de transação associadas.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do plano.Chave Primária
namevarcharNome do plano de assinatura (ex: “Plano Básico”, “Plano Premium”).Não Nulo
descriptionvarcharDescrição detalhada dos benefícios e características do plano.Não Nulo
pricePerMonthfloatO preço mensal do plano.default: 0
customerTypevarchar(1)O tipo de cliente ao qual o plano se destina (‘F’ para Pessoa Física, ‘J’ para Pessoa Jurídica).Pode ser Nulo
publishedAttimestampData em que o plano foi publicado e se tornou disponível para assinatura.Pode ser Nulo
createdByIdintegerChave estrangeira para o administrador (user_admin) que criou o plano.FK
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • user_admin: (n:1) Cada plano é criado por um usuário administrador.
  • plan_transaction_settings: (1:n) Um plano de assinatura contém várias regras de isenção de taxas para diferentes tipos de transação.
  • customer_subscriptions: A tabela subscription_plans é referenciada por customer_subscriptions para indicar qual plano um cliente assinou.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela systems funciona como um sistema de configuração de parâmetros para toda a aplicação. É um repositório genérico de chave-valor que permite armazenar e gerenciar configurações diversas do sistema (ex: limites globais, chaves de API de serviços de terceiros, etc.) sem a necessidade de alterar o código-fonte.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do parâmetro.Chave Primária
parametervarchar(255)O nome (chave) único do parâmetro de sistema.Único
valuejsonbO valor do parâmetro, armazenado como JSON para flexibilidade.Não Nulo
statusenumO status do parâmetro (ACTIVE ou INACTIVE).default: 'ACTIVE'
created_attimestamp with time zoneData e hora de criação do registro.Gerado Automaticamente
updated_attimestamp with time zoneData e hora da última atualização do registro.Gerado Automaticamente

Esta tabela não possui relacionamentos diretos com outras tabelas. Ela é consultada pela lógica de negócios em vários pontos da aplicação para obter valores de configuração.

  • A coluna parameter possui um índice único para garantir que cada parâmetro de sistema tenha um nome exclusivo.

A tabela terms_acceptance_versions é uma tabela de lookup que armazena as diferentes versões dos Termos de Serviço da plataforma. Cada registro representa uma versão única dos termos que foi publicada.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da versão.Chave Primária
versionvarcharO identificador da versão (ex: “v1.0.0”, “2024-09-23”).Único
createdAttimestampData e hora de criação do registro da versão.Gerado Automaticamente
  • terms_acceptance: (1:n) Uma versão dos termos pode ser aceita por múltiplos usuários, e cada registro de aceite (terms_acceptance) aponta para uma única versão.
  • A coluna version possui um índice único para garantir que não haja identificadores de versão duplicados.

A tabela terms_acceptance registra o aceite dos Termos de Serviço por parte dos usuários. Cada registro representa o momento em que um usuário específico (userId) aceitou uma determinada versão dos termos (termsAcceptanceVersion).

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de aceite.Chave Primária
userIdintegerO ID do usuário que aceitou os termos.Pode ser Nulo
termsVersionvarcharO identificador da versão dos termos que foi aceita.Pode ser Nulo
acceptedAttimestampData e hora em que os termos foram aceitos.Pode ser Nulo
termsAcceptanceVersionIdintegerChave estrangeira que referencia a versão (terms_acceptance_versions) que foi aceita.FK
  • terms_acceptance_versions: (n:1) Cada registro de aceite está vinculado a uma versão específica dos Termos de Serviço.
  • users: Embora userId não seja uma chave estrangeira formal na entidade, ele representa a ligação lógica com a tabela users.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela tokens é um repositório genérico para armazenar diferentes tipos de tokens de uso único ou de curta duração. Eles são usados para processos como verificação de e-mail, redefinição de senha, ou outras operações que exigem uma confirmação segura.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do token.Chave Primária
tokenvarchar(500)O valor do token, que deve ser único.Não Nulo, Único
typevarchar(60)O tipo do token, que define sua finalidade (ex: EMAIL_VERIFICATION, PASSWORD_RESET).Não Nulo
isActivebooleanIndica se o token ainda pode ser usado.default: true
expires_intimestampData e hora em que o token expira.default: CURRENT_TIMESTAMP
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
user_idintegerChave estrangeira que referencia o usuário (user) ao qual o token está associado.FK
  • users: (n:1) Cada token é gerado para e pertence a um único usuário.
  • A coluna token possui um índice único para garantir que cada token seja exclusivo e para otimizar as buscas.

A tabela transaction_bank_conciliation é usada para mapear uma transação interna do sistema a um identificador de conciliação externo, geralmente fornecido por um banco ou outro parceiro financeiro. Isso é essencial para reconciliar registros entre os sistemas.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de conciliação.Chave Primária
transactionIdintegerChave estrangeira que referencia a transação (transactions) interna.FK, Relação 1:1
externalConciliationvarchar(100)O identificador de conciliação fornecido pelo sistema externo (banco).Não Nulo
checkingAccountIdintegerChave estrangeira que referencia a conta corrente (checking_accounts) envolvida.FK
  • transactions: (1:1) Cada registro de conciliação está ligado a uma única transação interna.
  • checking_accounts: (n:1) Cada registro de conciliação está associado a uma conta corrente.
  • IDX_checkingAccount_externalConciliation: Índice único composto pelas colunas checkingAccountId e externalConciliation. Garante que um ID de conciliação externo seja único para cada conta.
  • IDX_transactionId: Índice na coluna transactionId.
  • IDX_externalConciliation: Índice na coluna externalConciliation.
  • set(bankConciliation): Método estático para criar um novo registro de conciliação, vinculando uma transação interna a um ID externo.

A tabela transaction_custom_conciliation oferece um mecanismo flexível para conciliação de transações usando identificadores customizados. Ela permite que um conciliationId (que pode ser usado na transação principal) seja mapeado para um ou mais pares de chave-valor (name, value) específicos de um cliente.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro.Chave Primária
customerIdintegerChave estrangeira que referencia o cliente (customer) dono deste mapeamento.FK
conciliationIdvarchar(100)O ID de conciliação principal, que será usado na transação.Não Nulo
namevarchar(100)O nome (chave) do identificador customizado (ex: “pedido_id”, “fatura_id”).Não Nulo
valuevarchar(100)O valor do identificador customizado.Não Nulo
  • customers: (n:1) Cada registro de conciliação customizada pertence a um cliente.
  • IDX_customer_conciliationId_name_value: Índice único composto por todas as colunas principais. Garante que a combinação de cliente, ID de conciliação e par chave-valor seja única.
  • IDX_name_value: Índice nas colunas name e value para otimizar a busca pelo conciliationId a partir de um identificador customizado.
  • set(customIdentifier): Método estático para criar um novo registro de mapeamento de conciliação.
  • getConciliationId(name, value): Método estático que busca o conciliationId principal a partir de um par de name e value de um identificador customizado.
  • getTransactionIdentification(conciliationId): Método estático que busca o valor de um identificador customizado específico (com name igual a ‘transactionIdentification’) a partir do conciliationId principal.

A tabela transaction_fee_settings define as regras de taxação para transações, associando um valor de taxa e uma franquia mensal a uma combinação de operação, tipo de transação e um conjunto de taxas (fee_setting).

Nota: Esta entidade parece ter uma funcionalidade muito similar ou sobreposta à fee_transaction_settings. A principal diferença é a ausência da coluna feeAmountType nesta entidade.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da regra de taxa.Chave Primária
operationOperationA operação da transação (CREDIT ou DEBIT).Não Nulo
transactionTypeTRANSACTION_TYPE_ENUMO tipo da transação (ex: PIX, TED, BILLET).Não Nulo
feeAmountfloatO valor fixo da taxa a ser aplicada.Não Nulo
monthlyFreeintegerO número de transações deste tipo que são isentas de taxa por mês.Não Nulo
feeSettingIdintegerChave estrangeira que referencia o conjunto de taxas (fee_settings) ao qual esta regra pertence.FK
  • fee_settings: (n:1) Cada regra de taxa pertence a um conjunto de configurações de taxa.
  • unique_transaction_fee_setting: Índice único composto pelas colunas operation, transactionType e feeSettingId. Garante que não exista mais de uma regra de taxa para a mesma combinação de operação e tipo de transação dentro do mesmo conjunto de configurações de taxa.

A tabela transaction_fees é uma tabela de associação que vincula uma transação original (a transação que incorreu na taxa) a uma segunda transação que representa a cobrança da taxa em si. Isso permite rastrear qual taxa foi gerada por qual operação.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de taxa de transação.Chave Primária
parentTransactionIdintegerChave estrangeira para a transação (transactions) que originou a cobrança da taxa.Não Nulo, FK
feeTransactionIdintegerChave estrangeira para a transação (transactions) que representa a cobrança da taxa.Não Nulo, FK, Único
  • transactions (como parentTransaction): (n:1) Aponta para a transação principal.
  • transactions (como feeTransaction): (1:1) Aponta para a transação que é a própria taxa.
  • A coluna feeTransactionId possui uma restrição UNIQUE, garantindo que uma transação de taxa não possa ser associada a mais de uma transação principal.

A tabela transaction_limit_requests gerencia as solicitações de alteração de limites de transação feitas pelos clientes. Cada registro representa uma solicitação para aumentar ou diminuir um limite específico, rastreando seu valor e status.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da solicitação.Chave Primária
transactionLimitIdintegerChave estrangeira para o limite (transactions_limit) que está sendo solicitado para alteração.FK
valuefloatO novo valor de limite que está sendo solicitado.Não Nulo
statusenumO status atual da solicitação (pending, completed, failed, recused, canceled).default: 'pending'
scheduledFortimestampData e hora para quando a alteração do limite está agendada para entrar em vigor, se aplicável.Pode ser Nulo
createdAttimestampData e hora de criação da solicitação.Gerado Automaticamente
  • transactions_limit: (n:1) Cada solicitação de alteração refere-se a um limite de transação específico (ex: limite diurno de PIX para um cliente).

Não há índices customizados definidos na entidade, além da chave primária.


A tabela transaction_reprocess é usada para gerenciar e rastrear o reprocessamento de transações que falharam ou precisam de uma nova tentativa por algum motivo. Cada registro contém uma referência à transação original e armazena metadados sobre as tentativas de reprocessamento.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de reprocessamento.Chave Primária
transactionIdintegerChave estrangeira para a transação (transactions) que está sendo reprocessada.FK
responseMetajsonMetadados da resposta da última tentativa de reprocessamento. (Não selecionável por padrão)Pode ser Nulo
authenticationCodevarchar(100)Código de autenticação usado na tentativa de reprocessamento. (Não selecionável por padrão)Pode ser Nulo
idempotencyKeyvarchar(100)Chave de idempotência usada na tentativa de reprocessamento. (Não selecionável por padrão)Pode ser Nulo
xCorrelationIdvarchar(100)ID de correlação usado na tentativa de reprocessamento. (Não selecionável por padrão)Pode ser Nulo
refundMetajsonMetadados específicos para reprocessamento de estornos. (Não selecionável por padrão)Pode ser Nulo
cancelMetajsonMetadados específicos para reprocessamento de cancelamentos. (Não selecionável por padrão)Pode ser Nulo
statusintegerCódigo de status da tentativa de reprocessamento.default: 0
paymentAmountfloatValor do pagamento na tentativa de reprocessamento.Pode ser Nulo
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • transactions: (n:1) Cada registro de reprocessamento está associado a uma transação original.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela transaction_request gerencia um fluxo de aprovação para transações. Ela permite que um usuário solicite a criação de uma transação que, dependendo das regras de negócio, pode precisar da aprovação de outro usuário antes de ser efetivamente processada e se tornar uma transação real na tabela transactions.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da solicitação.Chave Primária
typeenumO tipo de transação solicitada (ex: KEY, TED, BILLET).Não Nulo
amountfloatO valor da transação solicitada.default: 0.0
statusenumO status atual da solicitação (PENDENTE, APROVADO, REPROVADO).default: 'PENDENTE'
descriptionvarchar(200)Descrição ou justificativa para a transação.Pode ser Nulo
checkingAccountIdintegerFK para a conta (checking_account) de origem da transação.FK
requested_byintegerFK para o usuário (user) que fez a solicitação.Não Nulo, FK
approvedOrRepprovedByintegerFK para o usuário (user) que aprovou ou reprovou.Pode ser Nulo, FK
transactionIdintegerFK para a transação (transaction) criada após a aprovação.Pode ser Nulo, FK

Dados Específicos por Tipo de Transação

Section titled “Dados Específicos por Tipo de Transação”
ColunaTipo de DadosDescrição
pixKeyTypevarchar(20)Tipo da chave PIX (para type='KEY').
pixKeyValuevarchar(60)Valor da chave PIX (para type='KEY').
accountNumbervarchar(20)Número da conta (para type='TED' ou 'TEF').
bankIspbvarchar(20)ISPB do banco (para type='TED' ou 'TEF').
agencyvarchar(20)Agência (para type='TED' ou 'TEF').
documentvarchar(20)Documento do destinatário (para type='TED' ou 'TEF').
accountTypevarchar(20)Tipo da conta do destinatário (para type='TED' ou 'TEF').
namevarchar(60)Nome do destinatário (para type='TED' ou 'TEF').
digitablevarchar(100)Linha digitável (para type='BILLET').
barCodevarchar(100)Código de barras (para type='BILLET').
emvvarchar(600)Payload do QR Code (para type='QRCODE').
dueDatedateData de vencimento (para type='BILLET').
ColunaTipo de DadosDescrição
createdAttimestampData e hora de criação da solicitação.
updatedAttimestampData e hora da última atualização.
  • users (como requestedBy): (n:1) Cada solicitação é feita por um usuário.
  • users (como approvedOrRepprovedBy): (n:1) Cada solicitação pode ser aprovada/reprovada por um usuário.
  • checking_accounts: (n:1) Cada solicitação está associada a uma conta de origem.
  • transactions: (1:1) Uma solicitação aprovada resulta em uma transação.

A tabela transactions é o coração do sistema financeiro, registrando todas as movimentações de fundos. Cada registro representa uma transação única, seja ela um PIX, TED, TEF, pagamento de boleto, ou uma operação interna. Ela contém todos os detalhes da transação, desde o valor e as partes envolvidas até o status e metadados de resposta.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da transação.Chave Primária
checkingAccountIdintegerFK para a conta corrente (checking_account) associada à transação.FK
typevarchar(10)O tipo da transação (ex: PIX, TED, BILLET).default: 'TED'
operationvarchar(10)A natureza da operação: CREDIT (entrada) ou DEBIT (saída).default: 'DEBIT'
amountfloatO valor principal da transação.default: 0.0
descriptionvarchar(200)Descrição da transação.Pode ser Nulo
initializationTypevarchar(20)Como a transação foi iniciada (ex: manual, key, fee).default: 'manual'
ColunaTipo de DadosDescrição
recipientjsonObjeto JSON com os dados do destinatário (quem recebe).
senderjsonObjeto JSON com os dados do remetente (quem envia).
ColunaTipo de DadosDescrição
statusintegerCódigo numérico do status da transação (0: PENDING, 2: CLOSED, 3: REVERTED, 4: CANCELED).
paymentAmountfloatO valor efetivamente pago, que pode incluir taxas ou juros.
paymentDatetimestampData e hora em que a transação foi liquidada.
isConfirmedbooleanIndica se a transação foi confirmada.
ColunaTipo de DadosDescrição
endToEndIdvarchar(100)Identificador de ponta a ponta da transação (padrão PIX).
endToEndIdOriginalvarchar(100)endToEndId da transação original (usado em estornos).
conciliationIdvarchar(100)ID de conciliação interno.
authenticationCodevarchar(100)Código de autenticação da transação.
idempotencyKeyvarchar(100)Chave de idempotência para evitar processamento duplicado. (Não selecionável por padrão)
qrCodeIdvarcharID do QR Code usado para iniciar a transação.
ColunaTipo de DadosDescrição
metajsonMetadados gerais da transação. (Não selecionável por padrão)
responseMetajsonMetadados da resposta do provedor de serviços de pagamento.
cancelMetajsonMetadados relacionados ao cancelamento da transação.
refundMetajsonMetadados relacionados ao estorno da transação. (Não selecionável por padrão)
refundAmountfloatValor do estorno, se aplicável.
refundConciliationIdvarchar(100)ID de conciliação para a transação de estorno.
ColunaTipo de DadosDescrição
createdAttimestampData e hora de criação do registro.
updatedAttimestampData e hora da última atualização.
  • checking_accounts: (n:1) Cada transação pertence a uma conta corrente.
  • billets: (n:1) Uma transação pode ser o pagamento de um boleto.
  • É referenciada por várias outras tabelas, como transaction_reprocess, transaction_fee, transaction_bank_conciliation.
  • getOne(...): Busca uma única transação com base em um critério.
  • updateCashout(...) / updateRefunded(...): Métodos estáticos para atualizar o status de transações de cash-out e estorno.
  • generateConciliationId(): Gera um ID de conciliação único.
  • getByConciliationId(...): Busca uma transação pelo seu ID de conciliação.
  • getFee(...): Calcula a taxa aplicável a uma transação com base nas PixSettings.
  • getNetAmount(...): Calcula o valor líquido de uma transação após a dedução da taxa.
  • populateRefundTransaction(...): Cria uma nova instância de transação populada com os dados para um estorno.
  • Múltiplos índices para otimizar consultas por checkingAccount, createdAt, status, operation, conciliationId, e qrCodeId.
  • transaction_textsearch_idx: Um índice tsvector para buscas full-text em campos como endToEndId, nome do remetente, conciliationId, etc.

A tabela transactions_limits_ranges serve como um gabarito ou modelo para os limites de transação padrão. Ela define os valores de limite com base no tipo de cliente (‘F’ para Físico, ‘J’ para Jurídico), no período (diurno ou noturno) e no tipo de transação (PIX, TEF, etc.).

ColunaTipo de DadosDescriçãoRestrições
idvarcharIdentificador único do registro de faixa de limite.Chave Primária
customerTypevarchar(1)O tipo de cliente ao qual esta faixa de limite se aplica (‘F’ ou ‘J’).Não Nulo
periodenumO período do dia ao qual o limite se aplica (day ou night).Não Nulo
transactionsTypeenumO tipo de transação (ex: PIX, TEF, BILLET).Não Nulo
valuefloatO valor padrão do limite para esta combinação de fatores.Não Nulo
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente

Esta tabela não possui relacionamentos diretos. Ela é usada como uma fonte de dados pela lógica de negócios, por exemplo, ao criar um novo cliente, para popular os limites iniciais na tabela transactions_limit.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela transactions_limit armazena os limites de transação específicos para cada cliente. Diferente da transactions_limits_ranges (que é um modelo), esta tabela contém os valores de limite que estão efetivamente em vigor para um cliente, para um tipo de transação e período (diurno/noturno).

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do limite.Chave Primária
customerIdintegerChave estrangeira para o cliente (customer) ao qual este limite se aplica.FK
valuefloatO valor monetário do limite.default: 5000.0
transactionsTypeenumO tipo de transação ao qual este limite se aplica (ex: PIX, TEF, BILLET).Não Nulo
periodenumO período do dia ao qual o limite se aplica (day ou night).Não Nulo
  • customers: (n:1) Cada registro de limite pertence a um cliente específico.
  • transaction_limit_requests: É referenciada por esta tabela quando um cliente solicita uma alteração de limite.
  • createAllLimitsForCustomer(customer, manager?): Método estático que cria todos os limites padrão para um novo cliente com base em seu tipo (‘F’ ou ‘J’), usando os valores definidos em LIMITS_RANGES. Permite o uso de um EntityManager para operações transacionais.
  • getLimitForCustomer(customerType, period, transactionsType): Método estático que busca o valor de limite padrão para uma combinação de tipo de cliente, período e tipo de transação a partir da constante LIMITS_RANGES.
  • A coluna customerId é indexada para otimizar a busca de todos os limites de um cliente.

A tabela transactions_monthly_usage rastreia o uso mensal de transações por cliente de forma granular. Diferente da customer_txs_monthly_usage, esta tabela separa a contagem por operation (crédito/débito) e transactionType. Isso é fundamental para lógicas de negócio como a aplicação de taxas após um certo número de transações gratuitas por mês, conforme definido em fee_transaction_settings ou plan_transaction_settings.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de uso.Chave Primária
customerIdintegerChave estrangeira para o cliente (customer).FK
monthYeardateO mês e ano de referência para a contagem.Não Nulo
operationOperationA operação da transação (CREDIT ou DEBIT).Não Nulo
transactionTypeTRANSACTION_TYPE_ENUMO tipo da transação (ex: PIX, TED).Não Nulo
countintegerNúmero de transações realizadas para esta combinação específica no mês.default: 0
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • customers: (n:1) Cada registro de uso mensal pertence a um cliente.
  • IDX_customer_monthYear_operation_transactionType: Índice único composto que garante a unicidade de cada registro de contagem. Não pode haver mais de um registro para o mesmo cliente, mês/ano, operação e tipo de transação.

A tabela user_account_audit_logs serve como um log de auditoria para registrar todas as alterações significativas feitas nos dados das contas de usuários (users) e clientes (customers). Cada registro captura o que foi alterado, os valores antes e depois da mudança, e o contexto da alteração (quem, quando e de onde).

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro de log.Chave Primária
user_idintegerFK para o usuário (user) que realizou a alteração.Não Nulo, FK
customer_idintegerFK para o cliente (customer) cuja conta foi alterada.Não Nulo, FK
changedFieldstextString JSON contendo os nomes dos campos que foram modificados.Não Nulo
oldValuestextString JSON contendo os valores dos campos antes da alteração.Pode ser Nulo
newValuestextString JSON contendo os valores dos campos depois da alteração.Pode ser Nulo
ipAddressvarchar(45)Endereço IP de onde a alteração foi originada.Pode ser Nulo
userAgentvarchar(500)User-Agent do navegador ou dispositivo que realizou a alteração.Pode ser Nulo
created_attimestampData e hora em que o log foi criado (momento da alteração).Gerado Automaticamente
  • users: (n:1) Cada log de auditoria é gerado por um usuário.
  • customers: (n:1) Cada log de auditoria refere-se a um cliente.
  • idx_user_account_audit_log_user_customer: Índice composto em user_id e customer_id para otimizar a busca de logs por usuário e cliente.
  • idx_user_account_audit_log_created_at: Índice em created_at para otimizar a ordenação e filtragem por data.

A tabela user_account é uma tabela de junção que estabelece uma relação muitos-para-muitos entre usuários (users) e clientes/contas (customers). Ela permite que um mesmo usuário tenha acesso a múltiplas contas de clientes e que uma conta de cliente possa ser acessada por múltiplos usuários (com diferentes papéis e permissões).

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da associação.Chave Primária
userIdintegerChave estrangeira para a tabela users.FK
customerIdintegerChave estrangeira para a tabela customers.FK
  • users: (n:1) Cada registro de user_account aponta para um usuário.
  • customers: (n:1) Cada registro de user_account aponta para um cliente/conta.
  • getUsersByCustomer(customer): Método estático que retorna todos os usuários associados a um determinado cliente.
  • getUserByUserIdAndCustomerId(userId, customerId): Método estático que busca uma associação específica entre um usuário e um cliente.
  • findByUser(user): Método estático que encontra a primeira associação (UserAccount) para um determinado usuário.

Não há índices customizados definidos na entidade, além das chaves estrangeiras.


A tabela user_admin armazena os dados dos usuários administradores da plataforma. São os usuários que têm acesso ao painel de administração para gerenciar clientes, configurações, usuários e outras operações internas.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do usuário administrador.Chave Primária
namevarchar(100)Nome do administrador.Não Nulo
emailvarchar(100)E-mail de login do administrador.Não Nulo, Único
passwordvarchar(255)Hash da senha do administrador.Não Nulo
isActivebooleanIndica se a conta do administrador está ativa.default: true
phoneNumbervarchar(30)Número de telefone do administrador.Pode ser Nulo
documentvarchar(14)Documento (CPF) do administrador.Pode ser Nulo
roleAdminIdintegerChave estrangeira para o papel (role_admin) que define as permissões deste usuário.FK
origin_ipvarcharIP de origem registrado para o usuário. (Não selecionável por padrão)Pode ser Nulo
lastPasswordUpdatetimestampData da última atualização de senha.Gerado Automaticamente
otp_secretvarcharO segredo para a geração de códigos de autenticação de dois fatores (2FA/OTP).Pode ser Nulo
otp_validatedbooleanIndica se o 2FA já foi validado e está ativo para o usuário.default: false
requires_2fabooleanIndica se o login deste usuário exige autenticação de dois fatores.default: true
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • role_admin: (n:1) Cada usuário administrador possui um papel que define suas permissões.
  • getUserOriginIp(user): Método estático que busca de forma segura o IP de origem registrado para um usuário administrador.

A tabela user_device gerencia os dispositivos (celulares, tablets, etc.) que um usuário utiliza para acessar o sistema. Ela é fundamental para a segurança, permitindo rastrear sessões, gerenciar dispositivos confiáveis e enviar notificações push.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do dispositivo associado.Chave Primária
isActivebooleanIndica se o dispositivo está atualmente ativo e autorizado para o usuário.default: true
deviceSecretvarchar(255)Um segredo único gerado para o dispositivo, usado para autenticação e segurança.Não Nulo, Único, Não Selecionável
deviceIdvarchar(255)O identificador único do dispositivo (ex: UDID, Android ID).Pode ser Nulo
userIdintegerChave estrangeira para o usuário (user) dono do dispositivo.FK
deviceNamevarchar(100)Nome do dispositivo (ex: “iPhone de João”).Pode ser Nulo
operatingSystemvarchar(50)Sistema operacional do dispositivo (ex: “iOS”, “Android”).Pode ser Nulo
lastIpvarchar(50)O último endereço IP registrado para este dispositivo.Pode ser Nulo
notification_tokenvarchar(50)O token usado para enviar notificações push para o dispositivo (ex: FCM, APNS).Pode ser Nulo
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • users: (n:1) Cada dispositivo registrado pertence a um único usuário.
  • IDX_isActive_user: Índice composto nas colunas isActive e userId. Otimiza a busca por todos os dispositivos ativos de um usuário.
  • IDX_user: Índice na coluna userId.

A tabela users armazena as contas dos usuários finais da plataforma. Um usuário pode ser um “master” de uma conta de cliente (customer) ou um usuário secundário com permissões específicas. Esta tabela contém suas credenciais de login, informações pessoais e de contato, e configurações de segurança.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do usuário.Chave Primária
emailvarchar(100)E-mail de login do usuário.Não Nulo
passwordvarchar(255)Hash da senha do usuário.Não Nulo, Não Selecionável
isActivebooleanIndica se a conta do usuário está ativa.default: true
must_change_passwordbooleanFlag que força o usuário a trocar a senha no próximo login.default: true, Não Selecionável
ColunaTipo de DadosDescrição
namevarchar(100)Nome completo do usuário.
documentvarchar(14)CPF do usuário.
birth_datedateData de nascimento do usuário.
mother_namevarchar(100)Nome da mãe do usuário.
is_politically_exposed_personbooleanIndica se o usuário é uma Pessoa Politicamente Exposta (PEP).
ColunaTipo de DadosDescrição
phoneNumbervarchar(30)Número de telefone do usuário.
country_phone_codevarchar(3)Código de país do telefone (ex: ‘55’ para Brasil).
addressLine1varchar(100)Logradouro e número.
addressLine2varchar(14)Complemento.
neighborhoodvarchar(100)Bairro.
cityvarchar(100)Cidade.
statevarchar(20)Estado.
postalCodevarchar(10)CEP.
countryCodevarchar(2)Código do país (ISO 3166-1 alpha-2).
ColunaTipo de DadosDescrição
typeintegerCódigo do tipo/papel do usuário (ex: 0: Administrador, 1: Consultor).
avatarvarchar(255)URL para a foto de perfil do usuário.
eneable_2fabooleanIndica se a autenticação de dois fatores está habilitada.
secret_2favarcharSegredo para a geração de códigos 2FA.
mutiple_mobile_accessbooleanPermite que o usuário acesse de múltiplos dispositivos móveis simultaneamente.
deviceIdvarchar(255)ID do último dispositivo usado.
origin_ipvarcharIP de origem do cadastro. (Não selecionável por padrão)
ColunaTipo de DadosDescrição
createdAttimestampData e hora de criação do registro.
updatedAttimestampData e hora da última atualização.
  • customers: (1:1) Um usuário pode ser o “master” de uma conta de cliente.
  • user_account: Através desta tabela, um usuário pode estar associado a múltiplas contas de cliente.
  • tokens, check_phone_numbers, user_device, etc.: Várias tabelas se relacionam com users para gerenciar segurança e verificações.
  • getUserPassword(user): Busca de forma segura o hash da senha de um usuário.
  • getUsersByDocument(document): Busca todos os usuários ativos com um determinado documento.
  • checkAllActiveUsersHaveSameEmail(users): Verifica se uma lista de usuários compartilha o mesmo e-mail.
  • getMasterUserByCustomerId(customerId): Encontra o usuário “master” associado a um ID de cliente.

A tabela wallet_balance rastreia o saldo de uma carteira (wallet) dentro de uma conta corrente (checking_account) específica. Isso permite que uma única carteira virtual tenha saldos segregados em diferentes contas, o que é útil para modelos de negócio com múltiplos “cofres” ou contas de liquidação.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do saldo da carteira.Chave Primária
walletIdintegerChave estrangeira para a carteira (wallet) à qual este saldo pertence.Não Nulo, FK
checkingAccountIdintegerChave estrangeira para a conta corrente (checking_account) onde este saldo está alocado.Não Nulo, FK
balancedouble precisionO valor do saldo atual.default: 0.0
  • wallets: (n:1) Cada registro de saldo pertence a uma carteira.
  • checking_accounts: (n:1) Cada registro de saldo está associado a uma conta corrente.
  • wallet_split_rule: (1:1) Pode haver uma regra de divisão de fundos associada a este saldo específico.
  • IDX_checkingAccount_wallet: Índice único composto pelas colunas checkingAccountId e walletId. Garante que uma carteira só pode ter um registro de saldo por conta corrente.
  • getSplitRules(): Busca a regra de divisão (WalletSplitRule) associada a este saldo.
  • incrementBalance(increment): Adiciona um valor ao saldo atual e salva a alteração.
  • setBalanceToZero(): Zera o saldo e salva a alteração.

A tabela wallet_transaction funciona como um extrato para uma carteira (wallet). Cada registro representa uma movimentação de fundos (crédito ou débito) na carteira, vinculada a uma transação principal do sistema. Ela registra o valor que foi efetivamente alocado na carteira, que pode ser diferente do valor original da transação devido a regras de divisão (split).

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da transação da carteira.Chave Primária
walletIdintegerChave estrangeira para a carteira (wallet) que foi movimentada.Não Nulo, FK
checkingAccountIdintegerChave estrangeira para a conta corrente (checking_account) onde a movimentação ocorreu.Não Nulo, FK
transactionIdintegerChave estrangeira para a transação (transactions) principal que originou esta movimentação.Não Nulo, FK
originalAmountdouble precisionO valor original da transação principal.default: 0.0
amountdouble precisionO valor que foi efetivamente creditado ou debitado da carteira.default: 0.0
operationenumO tipo de operação na carteira (CREDIT ou DEBIT).default: 'CREDIT'
paymentDatetimestampData e hora da movimentação.Pode ser Nulo
conciliationIdvarchar(100)ID de conciliação, geralmente herdado da transação principal.Não Nulo
senderjsonObjeto JSON com nome e documento do remetente da transação original.Não Nulo
  • wallets: (n:1) Cada transação de carteira pertence a uma carteira.
  • checking_accounts: (n:1) Cada transação de carteira ocorre no contexto de uma conta corrente.
  • transactions: (n:1) Cada transação de carteira é originada por uma transação principal do sistema.
  • IDX_wallet_conciliationId: Índice único composto em walletId e conciliationId.
  • IDX_wallet_paymentDate_checkingAccount: Índice composto para otimizar a busca de transações de uma carteira por data e conta.
  • saveWalletTransaction(amount, wallet, transaction): Método estático para criar e salvar uma nova transação de carteira, populando os dados a partir da transação principal.
  • getTransactions(wallet, queryParams): Método estático para buscar o extrato de transações de uma carteira, com opções de filtro por data e paginação.

A tabela wallet define as carteiras virtuais do sistema. Cada carteira pertence a um cliente (customer), possui um código único e pode ter uma chave PIX designada para operações de cash-out. A carteira é a entidade central para funcionalidades de split de pagamentos e saldos virtuais.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da carteira.Chave Primária
codevarchar(8)Um código único de 8 caracteres para identificar a carteira.Não Nulo, Único
customerIdintegerChave estrangeira para o cliente (customer) que é o dono da carteira.Não Nulo, FK, Relação 1:1
cashoutPixKeyIdintegerChave estrangeira para a chave PIX (pix_key_info) padrão para operações de cash-out desta carteira.Não Nulo, FK, Relação 1:1
  • customers: (1:1) Cada carteira pertence a um único cliente.
  • pix_key_info: (1:1) Cada carteira tem uma chave PIX designada para saques.
  • wallet_balance: (1:n) Uma carteira pode ter múltiplos registros de saldo, um para cada conta corrente (checking_account) em que opera.
  • splitTransaction(transaction): Método estático que implementa a lógica de divisão (split) de uma transação. Ele encontra os saldos de carteira (WalletBalance) associados à conta da transação, calcula a parcela de cada um com base nas regras (WalletSplitRule), cria a transação da carteira (WalletTransaction) e atualiza o saldo.
  • getWallet(customer): Método estático para buscar a carteira de um determinado cliente.
  • getBalance(wallet): Método estático que calcula e retorna o saldo total de uma carteira, somando os saldos de todos os WalletBalance associados a ela.

A tabela wallet_split_rule define a regra de divisão (split) de fundos para um saldo de carteira (wallet_balance) específico. Ela determina qual porção de uma transação deve ser alocada naquele saldo, seja como um valor fixo ou um percentual do total.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da regra de split.Chave Primária
walletBalanceIdintegerChave estrangeira para o saldo de carteira (wallet_balance) ao qual esta regra se aplica.FK, Relação 1:1, Único
sharedouble precisionO valor da parcela (seja fixo ou percentual).default: 0.0
shareTypeenumO tipo de cálculo da parcela (PERCENTAGE ou FIXED).default: 'FIXED'
  • wallet_balance: (1:1) Cada regra de split está associada a um único registro de saldo de carteira, definindo como os fundos chegam até ele.
  • getShare(amount): Calcula o valor da parcela a ser dividida com base no valor total de uma transação (amount), aplicando a regra de share e shareType.
  • A coluna walletBalanceId possui um índice único, garantindo que cada saldo de carteira tenha no máximo uma regra de split associada.

A tabela webhook_event_transaction é uma tabela de junção que cria uma relação entre um evento de webhook (webhook_event) e uma transação (transaction). Ela é usada para registrar qual transação (ou quais transações) está associada a um determinado disparo de webhook.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da associação.Chave Primária
transactionIdintegerChave estrangeira para a tabela transactions.Não Nulo, FK
webhookEventIdintegerChave estrangeira para a tabela webhook_events.Não Nulo, FK
  • transactions: (n:1) Cada registro de associação aponta para uma transação.
  • webhook_events: (n:1) Cada registro de associação aponta para um evento de webhook.

Não há índices customizados definidos na entidade, além das chaves estrangeiras.


A tabela webhook_events funciona como um log detalhado de todas as tentativas de envio de webhooks. Cada registro representa um disparo de um evento para um endpoint configurado, armazenando o payload, a resposta, o status e o histórico de tentativas.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do evento de webhook.Chave Primária
eventIdvarchar(100)Um ID único para o evento específico que está sendo notificado.Não Nulo
methodvarchar(10)O método HTTP usado para enviar o webhook (ex: POST).Não Nulo
endpointvarchar(255)A URL de destino para a qual o webhook foi enviado.Não Nulo
statusintegerO código de status HTTP retornado pelo endpoint (ex: 200, 404, 500).default: 0
bodyjsonO corpo (payload) da requisição que foi enviada no webhook.Pode ser Nulo
responsetextO corpo da resposta retornada pelo endpoint.Pode ser Nulo
webhookIdintegerChave estrangeira para a configuração de webhook (webhooks) que gerou este evento.FK
retriesintegerO número de tentativas de reenvio para este evento.default: 0
retriesMetajsonMetadados sobre as tentativas de reenvio (ex: datas, erros).Pode ser Nulo
authenticationCodevarchar(100)Código de autenticação ou assinatura enviado nos headers do webhook.Pode ser Nulo
createdAttimestampData e hora de criação do evento.Gerado Automaticamente
  • webhooks: (n:1) Cada evento de webhook é gerado a partir de uma configuração de webhook específica.
  • webhook_event_transaction: (1:n) Um evento de webhook pode estar associado a uma ou mais transações.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela webhooks armazena as configurações de webhooks para os clientes. Cada registro define um endpoint para o qual o sistema deve enviar uma notificação HTTP quando um evento específico (eventId) ocorrer para o cliente associado.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único da configuração do webhook.Chave Primária
methodvarchar(50)O método HTTP a ser usado na chamada do webhook (ex: POST, PUT).default: 'post'
endpointvarchar(255)A URL de destino para a qual a notificação do evento será enviada.Não Nulo
eventIdvarchar(100)O nome do evento que dispara este webhook (ex: transaction.paid, customer.updated).Não Nulo
customerIdintegerChave estrangeira para o cliente (customer) dono desta configuração.FK
createdAttimestampData e hora de criação do registro.Gerado Automaticamente
updatedAttimestampData e hora da última atualização do registro.Gerado Automaticamente
  • customers: (n:1) Cada configuração de webhook pertence a um cliente.
  • webhook_events: (1:n) Uma configuração de webhook pode gerar múltiplos eventos (disparos) ao longo do tempo.

Não há índices customizados definidos na entidade, além da chave primária.


A tabela whitelist é uma lista de permissões (whitelist) simples, baseada em documentos. Ela armazena uma lista de documentos (CPF/CNPJ) que têm permissão para realizar certas ações ou acessar funcionalidades restritas.

ColunaTipo de DadosDescriçãoRestrições
idintegerIdentificador único do registro na whitelist.Chave Primária
namevarchar(255)Um nome opcional para identificar a pessoa ou empresa na lista.Pode ser Nulo
documentvarchar(255)O número do documento (CPF/CNPJ) que está sendo permitido.Não Nulo
allowedbooleanUm booleano que indica se o documento está efetivamente permitido.default: false
created_attimestamp with time zoneData e hora de criação do registro.Gerado Automaticamente
updated_attimestamp with time zoneData e hora da última atualização do registro.Gerado Automaticamente

Esta tabela não possui relacionamentos diretos com outras tabelas. Ela é consultada pela lógica de negócios para verificar se um determinado documento está na lista de permissões.

Não há índices customizados definidos na entidade, além da chave primária.