Skip to main content
ContaAzul is a financial management platform designed for small businesses in Brazil. It provides tools for invoicing, expense tracking, cash flow management, and integration with banks and accountants to simplify business finances. The ContaAzul API enables access to your financial data including payables, receivables, sales, products, services, and contacts.

Configuring ContaAzul as a Source

In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the ContaAzul option from the list of connectors. Click Next and you’ll be prompted to add your access.

1. Add account access

You’ll need to authorize Nekt to access your ContaAzul data. Click on the ContaAzul Authorization button and log in with your ContaAzul account. Grant the necessary permissions for the company you want to extract data from. The following configurations are available:
  • Start Date: The earliest date from which records will be synced. Used as the starting point for incremental streams and as a date filter for financial events.
Make sure your ContaAzul account has the necessary permissions to access the data you want to extract. The connector requires access to financial, sales, product, and contact APIs depending on which streams you select.
Once you’re done, click Next.

2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.
Tip: The stream can be found more easily by typing its name.
Select the streams and click Next.

3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.
  • Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
  • Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
    • Incremental: every time the extraction happens, we’ll get only the new data - which is good if, for example, you want to keep every record ever fetched.
    • Full table: every time the extraction happens, we’ll get the current state of the data - which is good if, for example, you don’t want to have deleted data in your catalog.
Once you are done configuring, click Next.

4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:
  • Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
Once you are ready, click Next to finalize the setup.

5. Check your new source

You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

Below you’ll find all available data streams from ContaAzul and their corresponding fields:
Accounts payable / expense records with status, amounts, and due dates.
FieldTypeDescription
idStringUnique identifier
descricaoStringDescription of the expense
data_vencimentoDateDue date
statusStringPayment status
totalNumberTotal amount
nao_pagoNumberUnpaid amount
pagoNumberPaid amount
data_criacaoDateTimeCreation date
data_alteracaoDateTimeLast modification date (replication key)
Accounts receivable / revenue records with status, amounts, and due dates.
FieldTypeDescription
idStringUnique identifier
descricaoStringDescription of the receivable
data_vencimentoDateDue date
statusStringPayment status
totalNumberTotal amount
nao_pagoNumberUnpaid amount
pagoNumberPaid amount
data_criacaoDateTimeCreation date
data_alteracaoDateTimeLast modification date (replication key)
Detailed installment data for both payables (despesas) and receivables (receitas). Includes payment breakdowns, financial account info, billing requests, and attachments. This is a child stream fetched for each parent expense or receivable record.
FieldTypeDescription
idStringInstallment identifier
eventoObjectParent financial event with competence date, payment conditions, reference, apportionment details, and type
versaoIntegerRecord version
referenciaStringReference code
indiceIntegerInstallment index
conciliadoBooleanWhether the installment is reconciled
statusStringInstallment status
valor_pagoNumberAmount paid
perdaObjectLoss details with date and value
nao_pagoNumberUnpaid amount
data_vencimentoStringDue date
data_pagamento_previstoStringExpected payment date
descricaoStringDescription
notaStringNotes
conta_financeiraObjectFinancial account details (bank, name, type, branch, number)
id_conta_financeiraStringFinancial account ID
valor_composicaoObjectValue breakdown with penalty, interest, gross value, discount, fee, and net value
metodo_pagamentoStringPayment method
nsuStringNSU (unique sequential number)
baixa_agendadaBooleanWhether write-off is scheduled
baixasArrayArray of write-off records with payment date, value composition, financial account, and attachments
anexosArrayArray of attachments with name, description, type, and URL
solicitacoes_cobrancasArrayArray of billing requests with status, values, due date, billing notifications, and payment details
faturaObjectInvoice details with number, RPS, and invoice type
data_alteracaoStringLast modification date (replication key)
valor_total_liquidoNumberTotal net value
renegociacaoObjectRenegotiation details with ID and value
Bank accounts and financial accounts registered in ContaAzul.
FieldTypeDescription
idStringAccount identifier
bancoStringBank name
codigo_bancoIntegerBank code
nomeStringAccount name
ativoBooleanWhether the account is active
tipoStringAccount type
conta_padraoBooleanWhether this is the default account
possui_config_boleto_bancarioBooleanWhether boleto (bank slip) configuration is set up
agenciaStringBranch number
numeroStringAccount number
Financial categories used to classify transactions.
FieldTypeDescription
idStringCategory identifier
versaoIntegerRecord version
nomeStringCategory name
categoria_paiStringParent category ID
tipoStringCategory type
entrada_dreStringIncome statement (DRE) entry
considera_custo_dreBooleanWhether it’s considered a cost in the income statement
Hierarchical income statement (DRE) categories with sub-items and linked financial categories.
FieldTypeDescription
idStringCategory identifier
descricaoStringDescription
codigoStringCategory code
posicaoIntegerPosition in the statement
indica_totalizadorBooleanWhether this is a totalizer row
representa_soma_custo_medioBooleanWhether it represents average cost sum
subitensArrayArray of sub-items with their own ID, description, code, position, and linked financial categories
categorias_financeirasArrayArray of linked financial categories with ID, code, name, and active status
Cost centers used to allocate expenses and revenues.
FieldTypeDescription
idStringCost center identifier
codigoStringCost center code
nomeStringCost center name
ativoBooleanWhether it is active
Product catalog with inventory, pricing, and variant information.
FieldTypeDescription
idStringProduct identifier
id_legadoIntegerLegacy product ID
nomeStringProduct name
codigo_skuStringSKU code
codigo_eanStringEAN barcode
tipoStringProduct type
statusStringProduct status
estoqueNumberCurrent stock quantity
valor_vendaNumberSale price
custo_medioNumberAverage cost
filhosArrayArray of product variants/children with their own ID, name, SKU, stock, pricing, and parent reference
variacaoIntegerVariation identifier
nivel_estoqueStringStock level indicator
estoque_minimoNumberMinimum stock threshold
estoque_maximoNumberMaximum stock threshold
movimentadoBooleanWhether the product has had stock movement
id_paiStringParent product ID (for variants)
integracao_ecommerce_ativaBooleanWhether e-commerce integration is active
Service catalog with pricing and type information.
FieldTypeDescription
idStringService identifier
id_servicoIntegerLegacy service ID
nomeStringService name
codigoStringService code
descricaoStringService description
precoNumberService price
custoNumberService cost
statusStringService status
tipo_servicoStringService type
List of contacts (customers, suppliers, etc.) with basic information and address.
FieldTypeDescription
uuidStringUnique identifier
nomeStringContact name
documentoStringDocument number (CPF/CNPJ)
inscricao_estadualStringState registration number
emailStringEmail address
telefoneStringPhone number
ativoBooleanWhether the contact is active
id_legadoIntegerLegacy ID
uuid_legadoStringLegacy UUID
perfisArrayArray of profile types (e.g. customer, supplier)
tipo_pessoaStringPerson type (individual or company)
enderecoObjectAddress with zip code, street, number, complement, neighborhood, city, state, and country
Detailed contact information including financial summaries, multiple addresses, additional contacts, tax data, and custom fields. This is a child stream — one detail record is fetched per contact in the People List.
FieldTypeDescription
uuidStringUnique identifier
nomeStringContact name
documentoStringDocument number (CPF/CNPJ)
atrasos_recebimentosNumberOverdue receivables amount
recebimentos_mes_atualNumberCurrent month receivables
atrasos_pagamentosNumberOverdue payables amount
pagamentos_mes_atualNumberCurrent month payables
emailStringEmail address
telefone_comercialStringBusiness phone
celularStringMobile phone
criado_emDateTimeCreation date
codigoStringContact code
perfisArrayArray of profile types
pessoas_legadoArrayArray of legacy person records with ID, UUID, and profile
enderecosArrayArray of addresses with zip code, street, number, complement, neighborhood, city, state, and country
observacoes_geraisStringGeneral notes
optante_simples_nacionalBooleanWhether opted into Simples Nacional tax regime
orgao_publicoBooleanWhether it is a public institution
nome_empresaStringCompany name
tipo_pessoaStringPerson type (individual or company)
lembretes_vencimentoArrayArray of due date reminders with email and status
informacoes_adicionaisArrayArray of custom fields with label, value, and type
outros_contatosArrayArray of additional contacts with name, email, phone, and office
informacoes_fiscaisArrayArray of tax information with state registration, national registration, and SUFRAMA registration
Supplier records with contact information and address.
FieldTypeDescription
idStringSupplier identifier
nameStringSupplier name
company_nameStringCompany name
emailStringEmail address
business_phoneStringBusiness phone
mobile_phoneStringMobile phone
person_typeStringPerson type (NATURAL or LEGAL)
documentStringDocument number (CPF/CNPJ)
identity_documentStringIdentity document (RG)
state_registration_numberStringState registration number
state_registration_typeStringState registration type
city_registration_numberStringCity registration number
date_of_birthDateTimeDate of birth
notesStringNotes
foreignIdStringForeign/external ID
contactNameStringContact person name
addressObjectAddress with street, number, complement, zip code, neighborhood, city, and state
List of sales with summary information, customer data, and status.
FieldTypeDescription
idStringSale identifier
totalNumberTotal sale amount
id_legadoIntegerLegacy sale ID
dataStringSale date
criado_emDateTimeCreation date
data_alteracaoDateTimeLast modification date (replication key)
tipoStringSale type
itensStringItems summary
condicao_pagamentoBooleanPayment condition flag
numeroIntegerSale number
clienteObjectCustomer info with ID, name, email, phone, address, city, state, country, and zip code
situacaoObjectStatus with status code, description, and date
versaoIntegerRecord version
status_emailObjectEmail notification status with status and sent date
Full sale details including customer, financial event, operation type, payment conditions, value breakdown, and pending status. This is a child stream — one detail record is fetched per sale in the Sales List.
FieldTypeDescription
sales_idStringSale identifier (primary key)
data_alteracao_vendaDateTimeSale last modification date (replication key)
data_alteracaoDateTimeRecord modification date
clienteObjectCustomer with UUID, person type, document, and name
evento_financeiroObjectLinked financial event with ID
notificacaoObjectEmail notification with reference ID, recipient, sent date, opened date, and status
natureza_operacaoObjectOperation type with UUID, operation type, template, label, financial impact, and stock change
vendaObjectDetailed sale data with ID, status, legacy ID, negotiation type, sale number, category ID, commitment date, discount settings, value composition (gross, discount, freight, taxes, insurance, net), payment conditions (type, account, installments, card payment details), item counts, notes, and pending status
Individual line items for each sale. This is a child stream — items are fetched per sale in the Sales List.
FieldTypeDescription
sales_idStringParent sale identifier
idStringItem record identifier
id_itemStringProduct/service identifier
nomeStringItem name
descricaoStringItem description
tipoStringItem type (product or service)
quantidadeNumberQuantity
valorNumberItem value
data_alteracao_vendaDateTimeSale last modification date (replication key)

Use Cases for Data Analysis

This guide outlines valuable business intelligence use cases when consolidating ContaAzul data, along with ready-to-use SQL queries that you can run on Explorer.

1. Cash Flow Overview

Analyze payables vs. receivables to understand your cash flow position. Business Value:
  • Monitor outstanding payables and receivables
  • Identify overdue payments
  • Track payment efficiency
WITH payables AS (
   SELECT
      'PAYABLE' AS type,
      status,
      COUNT(*) AS record_count,
      SUM(total) AS total_amount,
      SUM(nao_pago) AS unpaid_amount,
      SUM(pago) AS paid_amount
   FROM
      nekt_raw.contaazul_despesas
   GROUP BY
      status
),
receivables AS (
   SELECT
      'RECEIVABLE' AS type,
      status,
      COUNT(*) AS record_count,
      SUM(total) AS total_amount,
      SUM(nao_pago) AS unpaid_amount,
      SUM(pago) AS paid_amount
   FROM
      nekt_raw.contaazul_receitas
   GROUP BY
      status
)
SELECT * FROM payables
UNION ALL
SELECT * FROM receivables
ORDER BY
   type, record_count DESC
typestatusrecord_counttotal_amountunpaid_amountpaid_amount
PAYABLEPAGO456234,567.890.00234,567.89
PAYABLEPENDENTE8945,230.0045,230.000.00
PAYABLEVENCIDO128,900.008,900.000.00
RECEIVABLEPAGO780567,890.120.00567,890.12
RECEIVABLEPENDENTE13498,450.0098,450.000.00
RECEIVABLEVENCIDO2315,670.0015,670.000.00

2. Sales Performance by Customer

Analyze sales volume and revenue by customer to identify top accounts. Business Value:
  • Identify highest-value customers
  • Track sales trends by customer
  • Support customer segmentation
SELECT
   v.cliente.nome AS customer_name,
   v.cliente.email AS customer_email,
   COUNT(*) AS total_sales,
   SUM(v.total) AS total_revenue,
   ROUND(AVG(v.total), 2) AS avg_sale_value,
   MIN(v.data) AS first_sale,
   MAX(v.data) AS last_sale
FROM
   nekt_raw.contaazul_vendas_lista v
WHERE
   v.situacao.status != 'CANCELADO'
GROUP BY
   v.cliente.nome, v.cliente.email
ORDER BY
   total_revenue DESC
LIMIT 20
customer_namecustomer_emailtotal_salestotal_revenueavg_sale_valuefirst_salelast_sale
Empresa ABC Ltdacontato@abc.com.br45123,456.782,743.482025-01-152026-03-08
Distribuidora XYZvendas@xyz.com.br3289,234.502,788.582025-03-202026-03-10
Comércio Silvasilva@email.com2867,890.002,424.642025-02-012026-02-28
Tech Solutions SAcompras@tech.com.br1945,670.002,403.682025-06-102026-03-05

3. Product Inventory Status

Monitor product stock levels and identify items that need replenishment. Business Value:
  • Identify low-stock products before they run out
  • Track inventory turnover
  • Optimize purchasing decisions
SELECT
   nome AS product_name,
   codigo_sku AS sku,
   status,
   estoque AS current_stock,
   estoque_minimo AS min_stock,
   estoque_maximo AS max_stock,
   valor_venda AS sale_price,
   custo_medio AS avg_cost,
   CASE
      WHEN estoque <= estoque_minimo THEN 'CRITICAL'
      WHEN estoque <= estoque_minimo * 1.5 THEN 'LOW'
      ELSE 'OK'
   END AS stock_status
FROM
   nekt_raw.contaazul_produtos
WHERE
   status = 'ATIVO'
   AND estoque_minimo IS NOT NULL
ORDER BY
   estoque ASC
product_nameskustatuscurrent_stockmin_stockmax_stocksale_priceavg_coststock_status
Cabo USB-C 1mSKU-001ATIVO51010029.9012.50CRITICAL
Carregador 20WSKU-042ATIVO12108089.9038.00LOW
Película ProtetoraSKU-103ATIVO81520019.905.20CRITICAL
Mouse Sem FioSKU-078ATIVO452015079.9032.00OK

Implementation Notes

Several streams follow a parent-child pattern where a list endpoint provides summary records, and a detail endpoint is called for each individual record:
  • Pessoas Lista → Pessoas Detalhes: The people list provides basic contact info; the detail stream fetches full contact data per person.
  • Vendas Lista → Vendas Detalhes: The sales list provides summary data; the detail stream fetches full sale info per sale.
  • Vendas Lista → Vendas Itens: Line items are fetched per sale from the sales list.
  • Despesas → Parcelas: Installment details are fetched for each expense.
  • Receitas → Parcelas: Installment details are fetched for each receivable.
The connector supports incremental sync for:
  • Despesas: Uses data_alteracao as the replication key
  • Receitas: Uses data_alteracao as the replication key
  • Vendas Lista / Detalhes / Itens: Uses data_alteracao as the replication key
Streams without a replication key (Categorias, Categorias DRE, Centros de Custos, Contas Financeiras, Produtos, Pessoas, Servico, Suppliers) are always synced as full table.
The ContaAzul API enforces rate limits. The connector automatically handles 429 Too Many Requests responses by waiting 60 seconds before retrying. If you experience frequent rate limit errors, consider reducing the number of streams synced concurrently or adjusting your trigger frequency.
The connector automatically manages OAuth access token refresh to prevent authentication failures:
  • Access tokens are refreshed proactively before expiration
  • Refresh tokens are stored securely and rotated automatically
  • Basic authentication headers are derived from your client ID and secret
ContaAzul data contains nested structures. When querying:
  • Use dot notation to access nested fields (e.g., cliente.nome in the sales list)
  • Use UNNEST to flatten arrays (e.g., parcelas in sales details, filhos in products)
Example for product variants:
-- AWS Athena
SELECT p.nome, v.nome AS variant_name, v.estoque, v.valor_venda
FROM contaazul_produtos p
CROSS JOIN UNNEST(p.filhos) AS t(v)

-- GCP BigQuery
SELECT p.nome, v.nome AS variant_name, v.estoque, v.valor_venda
FROM `contaazul_produtos` p, UNNEST(p.filhos) AS v

Skills for agents

Download ContaAzul skills file

ContaAzul connector documentation as plain markdown, for use in AI agent contexts.