contaazul_list_accounts
Lista as empresas Conta Azul vinculadas a este install (company_id, label).
account
io.github.douglacPublished by GitHub account douglacv0.1.0Updated Oct 27, 2026
Conta Azul ERP MCP — sales, customers, finance and NF-e via OAuth 2.0. Read + write, 35 tools.
The publisher's own server: Azul CR — Costa Rica Local Business Data
Connects an assistant to Conta Azul ERP over OAuth 2.0 to read and write sales, customers, products, finance and invoices.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.douglac%2Fcontaazul-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Add this to your client's mcpServers config.
{
"mcpServers": {
"conta-azul": {
"type": "http",
"url": "https://api.mcp.ai/contaazul"
}
}
}This repository has no README.
Lista as empresas Conta Azul vinculadas a este install (company_id, label).
accountDados da empresa Conta Azul ativa (CNPJ, razão social, regime tributário).
accountLista pessoas (clientes, fornecedores, vendedores, transportadores) cadastradas. Filtros via params: tamanho_pagina, pagina, busca (nome/documento), tipo_perfil, ativo.
ativobuscapaginaaccounttipo_perfiltamanho_paginaDetalhe de uma pessoa por id. Bulk support: accepts ids for batched execution.
idrequiredidsaccountCria ou atualiza uma pessoa. action=create: requer nome, tipo_pessoa e (cpf|cnpj) — passe os campos via `data` (JSON). action=update: requer id e APENAS os campos a alterar em `data` (JSON) — é update PARCIAL: o resto do cadastro fica intacto e campo que o registro não tem NÃO é exigido (dá pra trocar só o email). Enums de escrita: tipo_pessoa = Física|Jurídica|Estrangeira; perfis = [{"tipo_perfil":"Cliente"|"Fornecedor"|"Transportadora"}] (variações de caixa/acento são normalizadas). Único campo fora do update parcial é `outros_contatos`: mudá-lo obriga a substituição integral do cadastro, e aí o Conta Azul exige codigo, data_nascimento, observacao, telefone_celular e telefone_comercial preenchidos — o erro retornado diz qual falta; inclua-o no `data`. [Flattened action: create] Bulk support: accepts ids for batched execution.
ididsdatarequiredaccountCria ou atualiza uma pessoa. action=create: requer nome, tipo_pessoa e (cpf|cnpj) — passe os campos via `data` (JSON). action=update: requer id e APENAS os campos a alterar em `data` (JSON) — é update PARCIAL: o resto do cadastro fica intacto e campo que o registro não tem NÃO é exigido (dá pra trocar só o email). Enums de escrita: tipo_pessoa = Física|Jurídica|Estrangeira; perfis = [{"tipo_perfil":"Cliente"|"Fornecedor"|"Transportadora"}] (variações de caixa/acento são normalizadas). Único campo fora do update parcial é `outros_contatos`: mudá-lo obriga a substituição integral do cadastro, e aí o Conta Azul exige codigo, data_nascimento, observacao, telefone_celular e telefone_comercial preenchidos — o erro retornado diz qual falta; inclua-o no `data`. [Flattened action: update] Bulk support: accepts ids for batched execution.
ididsdatarequiredaccountRemove uma pessoa por id. Operação destrutiva — confirme antes. Bulk support: accepts ids for batched execution.
idrequiredidsaccountLista produtos cadastrados. Filtros: tamanho_pagina, pagina, busca, ativo.
ativobuscapaginaaccounttamanho_paginaCria um produto (nome + valor_venda obrigatórios em `data` JSON). A API v2 do Conta Azul não expõe atualização nem GET de produto por id — para consultar, use contaazul_list_products (/produto/busca) com filtro.
datarequiredaccountLista serviços cadastrados.
buscapaginaaccounttamanho_paginaCria um serviço. `data` é JSON com nome, valor, etc.
datarequiredaccountLista vendas (GET /venda/busca). Filtros: data_inicio/data_fim (emissão, AAAA-MM-DD), data_criacao_de/ate (AAAA-MM-DD), data_alteracao_de/ate (AAAA-MM-DDTHH:MM:SS), ids_clientes, ids_vendedores, ids_categorias, ids_produtos, numeros, situacoes (enum de BUSCA: in_process, approved, invoiced, canceled, proposal, proposal_accepted, proposal_refused, scheduled, committed; sinônimos em_andamento, aprovado, faturado, cancelado, orcamento, orcamento_aceito, orcamento_recusado e agendado são convertidos), termo_busca, ordenação por numero/cliente/data. Paginação: pagina + tamanho_pagina; a resposta traz total_itens, totais e quantidades por situação. data_alteracao_de e data_alteracao_ate só valem juntos na API: informe os dois; se vier só um, o outro é completado (sem _ate = agora; sem _de = 30 dias antes do _ate). Bulk support: accepts cliente_ids for batched execution.
tipospaginatotaisaccountnumerosorigensdata_fimsituacoescliente_idcliente_idsdata_iniciotermo_busca+12 moreItens (produtos/serviços, quantidade, valor) de uma ou mais vendas. Passe ids_venda (até 50); devolve um resultado por venda.
paginaaccountids_vendarequiredtamanho_paginaDetalhe de uma venda por id. Bulk support: accepts ids for batched execution.
idrequiredidsaccountCria ou atualiza venda. `data` é o payload da venda em JSON. action=create (POST /venda) — OBRIGATÓRIOS: id_cliente (UUID, via contaazul_list_people), situacao (EM_ANDAMENTO ou APROVADO), data_venda (AAAA-MM-DD), itens[] e condicao_pagamento; `numero` é obrigatório na API mas, se omitido, usamos o próximo número livre da empresa. action=update (PUT /venda/{id}, substitui a venda) — passe `id` e os mesmos campos do create; `versao` (inteiro, controle de concorrência) é obrigatório na API e, se omitido, é lido da venda atual, assim como numero, id_cliente e situacao. situacao de escrita: EM_ANDAMENTO, APROVADO, FATURADO, CANCELADO (valores da busca como approved/invoiced são convertidos). [Flattened action: create] Bulk support: accepts ids for batched execution.
ididsdatarequiredaccountCria ou atualiza venda. `data` é o payload da venda em JSON. action=create (POST /venda) — OBRIGATÓRIOS: id_cliente (UUID, via contaazul_list_people), situacao (EM_ANDAMENTO ou APROVADO), data_venda (AAAA-MM-DD), itens[] e condicao_pagamento; `numero` é obrigatório na API mas, se omitido, usamos o próximo número livre da empresa. action=update (PUT /venda/{id}, substitui a venda) — passe `id` e os mesmos campos do create; `versao` (inteiro, controle de concorrência) é obrigatório na API e, se omitido, é lido da venda atual, assim como numero, id_cliente e situacao. situacao de escrita: EM_ANDAMENTO, APROVADO, FATURADO, CANCELADO (valores da busca como approved/invoiced são convertidos). [Flattened action: update] Bulk support: accepts ids for batched execution.
ididsdatarequiredaccountCancela uma venda. Operação destrutiva — confirme antes. Bulk support: accepts ids for batched execution.
idrequiredidsaccountLista contratos no intervalo de data de início (data_inicio/data_fim, YYYY-MM-DD — obrigatórios na API; se omitidos, usa janela ampla = listar todos). Filtros: pagina, tamanho_pagina (máx 50), cliente_id, busca_textual. A API v2 não tem GET contrato por id nem cancelar/excluir. Bulk support: accepts cliente_ids for batched execution.
paginaaccountdata_fimcliente_idcliente_idsdata_iniciobusca_textualtamanho_paginaCria um contrato. `data` é o payload em JSON.
datarequiredaccountLista contas a receber (parcelas de receita). Filtros: tamanho_pagina, pagina, data_vencimento_de, data_vencimento_ate (YYYY-MM-DD; se omitidas, lista todas), status (PERDIDO, RECEBIDO, EM_ABERTO, RENEGOCIADO, RECEBIDO_PARCIAL, ATRASADO), ids_clientes (UUID do cliente).
paginastatusaccountids_clientestamanho_paginadata_vencimento_dedata_vencimento_ateCria um evento financeiro de conta a receber. `data` é o JSON do EventoFinanceiroRequest. OBRIGATÓRIOS (a chamada é recusada antes de ir à API se faltar algum): id_cliente (UUID do cliente, via contaazul_list_people; `contato` é aceito como alias), conta_financeira (UUID, via contaazul_list_financial_accounts), data_competencia (YYYY-MM-DD), descricao, valor (number > 0), rateio[] com {id_categoria (UUID, via contaazul_list_categories), valor} (rateio_centro_custo[] opcional dentro de cada item; um `id_categoria` na raiz vira rateio de 100%), condicao_pagamento.parcelas[] (cada: data_vencimento YYYY-MM-DD; descricao e conta_financeira, se omitidas, herdam as do lançamento; nota opcional; detalhe_valor:{valor_bruto obrigatório; valor_liquido derivado se omitido} — os aliases de leitura valor_composicao (o que contaazul_get_installment devolve) e de baixa composicao_valor são normalizados automaticamente pro detalhe_valor, metodo_pagamento com o enum EXATO da API: PIX_PAGAMENTO_INSTANTANEO, BOLETO_BANCARIO, TRANSFERENCIA_BANCARIA, CARTAO_CREDITO, CARTAO_DEBITO, DINHEIRO, DEPOSITO_BANCARIO, DEBITO_AUTOMATICO etc — formas curtas comuns como PIX/BOLETO/TED são normalizadas). observacao é opcional. Retorna 202 + {protocolId,status} (processamento assíncrono).
datarequiredaccountLista contas a pagar (parcelas de despesa). Filtros: tamanho_pagina, pagina, data_vencimento_de, data_vencimento_ate (YYYY-MM-DD; se omitidas, lista todas), status (PERDIDO, RECEBIDO, EM_ABERTO, RENEGOCIADO, RECEBIDO_PARCIAL, ATRASADO). O Conta Azul usa os MESMOS status de contas a receber (RECEBIDO aqui = pago) e o mesmo formato de item — parecido com list_receivables, mas são despesas.
paginastatusaccounttamanho_paginadata_vencimento_dedata_vencimento_ateCria um evento financeiro de conta a pagar. `data` é o JSON do EventoFinanceiroRequest. OBRIGATÓRIOS (a chamada é recusada antes de ir à API se faltar algum): id_fornecedor (UUID do fornecedor, via contaazul_list_people; `contato` é aceito como alias), conta_financeira (UUID, via contaazul_list_financial_accounts), data_competencia (YYYY-MM-DD), descricao, valor (number > 0), rateio[] com {id_categoria (UUID, via contaazul_list_categories), valor} (um `id_categoria` na raiz vira rateio de 100%) e condicao_pagamento.parcelas[] (cada: data_vencimento YYYY-MM-DD e detalhe_valor:{valor_bruto obrigatório; valor_liquido derivado se omitido}; descricao e conta_financeira da parcela, se omitidas, herdam as do lançamento; os aliases valor_composicao e composicao_valor são normalizados automaticamente). metodo_pagamento da parcela usa o enum EXATO da API (PIX_PAGAMENTO_INSTANTANEO, BOLETO_BANCARIO, TRANSFERENCIA_BANCARIA, CARTAO_CREDITO, CARTAO_DEBITO, DINHEIRO etc — formas curtas como PIX/BOLETO/TED são normalizadas). Retorna 202 + {protocolId,status} (assíncrono).
datarequiredaccountLista as parcelas de UM evento financeiro (passe `id_evento`). A API v2 não tem listagem chapada de todas as parcelas — pra varrer contas a receber/pagar use contaazul_list_receivables / contaazul_list_payables.
accountid_eventorequiredDetalhe de uma parcela por id. Bulk support: accepts ids for batched execution.
idrequiredidsaccountAtualiza campos de uma parcela (PATCH). Campos editáveis em `data` JSON: nota, descricao, vencimento (YYYY-MM-DD), composicao_valor:{valor_bruto,multa,juros,desconto,taxa,valor_liquido}, data_pagamento_esperado, metodo_pagamento, perda, nsu, pagamento_agendado, id_conta_financeira. O campo `versao` (controle de concorrência) é buscado automaticamente — não precisa passar. NÃO é editável aqui: `rateio`/`rateio_centro_custo` (categoria e centro de custo só entram na CRIAÇÃO do lançamento, via rateio[] do contaazul_payable_create / contaazul_receivable_create; o Conta Azul não deixa alterar depois). Campo fora da lista é RECUSADO com erro em vez de ser enviado, porque a API responde 200 e incrementa a versão descartando o campo em silêncio. Para registrar pagamento/baixa use contaazul_settle_installment e para estornar use contaazul_delete_settlement. Bulk support: accepts ids for batched execution.
idrequiredidsdatarequiredaccountLista contas financeiras (banco, caixa, cartão). Filtre por `tipos`: APLICACAO, CAIXINHA, CONTA_CORRENTE, CARTAO_CREDITO, INVESTIMENTO, OUTROS, MEIOS_RECEBIMENTO, POUPANCA, COBRANCAS_CONTA_AZUL, RECEBA_FACIL_CARTAO. Para achar a conta que recebe cobranças (contaazul_generate_charge) use tipos=["COBRANCAS_CONTA_AZUL"].
nometipospaginaaccountapenas_ativotamanho_paginaSaldo atual de uma conta financeira por id (banco/caixa/cartão). Pegue o id em contaazul_list_financial_accounts. Bulk support: accepts ids for batched execution.
idrequiredidsaccountLista categorias financeiras (DRE).
tipopaginaaccounttamanho_paginaLista centros de custo.
paginaaccounttamanho_paginaLista NF-e (notas fiscais de produto) EMITIDAS ou CORRIGIDAS COM SUCESSO (a API não filtra por status). data_inicial e data_final (AAAA-MM-DD) são OBRIGATÓRIAS na API e a janela máxima dela é de 15 dias: se omitidas, usamos os últimos 15 dias; se vier só uma, a outra fica a 15 dias de distância; janela maior (ex.: um mês) é consultada em partes de 15 dias e devolvida junta (todas as páginas, campo `janelas`). Outros filtros: documento_tomador (CPF/CNPJ), numero_nota, id_venda. Paginação (só em janela de até 15 dias): pagina + tamanho_pagina (10, 20, 50 ou 100).
paginaaccountid_vendadata_finalnumero_notadata_inicialtamanho_paginadata_emissao_fimdocumento_tomadordata_emissao_inicioDetalhe de uma NF-e por id. Bulk support: accepts ids for batched execution.
idrequiredidsaccountLista NFS-e (notas fiscais de serviço) por filtro. Exige data_competencia_de e data_competencia_ate (YYYY-MM-DD), com janela máxima de 15 dias (se omitidas, usa os últimos 15 dias; se vier só uma, a outra fica a 15 dias de distância). Outros filtros: id_cliente, numero_venda, status (PENDENTE, PRONTA_ENVIO, EMITIDA, CANCELADA…), tipo_negociacao (VENDA, CONTRATO), numero_nfse_inicial, numero_nfse_final, numero_rps_inicial, numero_rps_final.
paginastatusaccountid_clientenumero_vendatamanho_paginatipo_negociacaonumero_rps_finalnumero_nfse_finalnumero_rps_inicialdata_competencia_denumero_nfse_inicial+1 moreRegistra a baixa (recebimento/pagamento) de uma parcela. `id` é o UUID da PARCELA (via contaazul_list_receivables / _list_payables / _get_installment). `data` é o JSON da baixa: data_pagamento (YYYY-MM-DD), composicao_valor {valor_bruto, multa, juros, desconto, taxa, valor_liquido}, conta_financeira (UUID em string, via contaazul_list_financial_accounts) e metodo_pagamento, enum EXATO da API: DINHEIRO, PIX_PAGAMENTO_INSTANTANEO, BOLETO_BANCARIO, TRANSFERENCIA_BANCARIA, CARTAO_CREDITO, CARTAO_DEBITO, CARTAO_CREDITO_VIA_LINK, CHEQUE, DEPOSITO_BANCARIO, CARTEIRA_DIGITAL, CASHBACK, CREDITO_LOJA, CREDITO_VIRTUAL, OUTRO (formas curtas como PIX, BOLETO, CARTAO ou TRANSFERENCIA dão 400); observacao é opcional. O campo `versao` (controle de concorrência) é buscado automaticamente. Retorna a baixa com id_reconciliacao. Bulk support: accepts ids for batched execution.
idrequiredidsdatarequiredaccountLista as baixas de uma parcela. `id` é o UUID da parcela. Bulk support: accepts ids for batched execution.
idrequiredidsaccountDetalhe de uma baixa por id. `id` é o UUID da baixa. Bulk support: accepts ids for batched execution.
idrequiredidsaccountAtualiza uma baixa (PATCH). `id` é o UUID da baixa. `data` é o JSON com os campos a alterar (data_pagamento, composicao_valor, conta_financeira em UUID string, metodo_pagamento com o mesmo enum de contaazul_settle_installment, observacao). O campo `versao` é buscado automaticamente. Bulk support: accepts ids for batched execution.
idrequiredidsdatarequiredaccountEstorna (remove) uma baixa por id. Operação destrutiva, confirme antes. `id` é o UUID da baixa. Bulk support: accepts ids for batched execution.
idrequiredidsaccountLista transferências entre contas financeiras por período (conciliação). data_inicio e data_fim (YYYY-MM-DD) com janela máxima de 1 ano (se omitidas, usa os últimos 365 dias). Paginado.
paginaaccountdata_fimdata_iniciotamanho_paginaSaldos iniciais das contas financeiras por período. data_inicio e data_fim (YYYY-MM-DD ou ISO date-time; datas simples são normalizadas). Se omitidas, usa uma janela ampla.
accountdata_fimdata_inicioLista os IDs de eventos financeiros alterados num período (para sync incremental / conciliação). data_inicio e data_fim (YYYY-MM-DD ou ISO date-time). Paginado. Retorna só os IDs; use contaazul_get_installment para o detalhe.
paginaaccountdata_fimdata_iniciotamanho_paginaGera cobrança (boleto, pix ou link de pagamento) para uma ou mais PARCELAS de contas a receber. Aceita até 50 parcelas por chamada; cada uma é emitida separadamente e uma falha não aborta o lote. `tipo` (obrigatório) aceita EXATAMENTE: BOLETO, PIX_COBRANCA ou LINK_PAGAMENTO (cartão de crédito sai por LINK_PAGAMENTO); formas comuns como boleto/pix/cartão são normalizadas. `ids_parcelas` são UUIDs de PARCELA — pegue em contaazul_list_receivables (campo `id` de cada item) ou contaazul_get_installment, NÃO o id do evento financeiro. `conta_bancaria`, `descricao_fatura` e `data_vencimento` são exigidos pela API mas resolvidos automaticamente quando omitidos: a conta de cobranças ativa da empresa (passe `conta_bancaria` se houver mais de uma, via contaazul_list_financial_accounts com tipos=COBRANCAS_CONTA_AZUL) e a descrição/vencimento da própria parcela. Parcela que já tem cobrança ativa é PULADA (sai em `ignoradas`) — use forcar=true para emitir mesmo assim. `maximo_parcelas` só vale para LINK_PAGAMENTO. Retorna {solicitadas, emitidas:[{id_parcela,id,url,status}], ignoradas, erros} — `url` é o link da cobrança. Para consultar depois use contaazul_get_charge e para cancelar contaazul_cancel_charge. A API NÃO envia o e-mail de notificação da cobrança: isso só na tela do Conta Azul.
datatiporequiredforcaraccountid_parcelaids_parcelasconta_bancariadata_vencimentomaximo_parcelasdescricao_faturadesconto_antecipadoDetalhe de uma cobrança emitida por id (o `id` devolvido em contaazul_generate_charge). Retorna {id, url, status} — status vai de AGUARDANDO_CONFIRMACAO/REGISTRADO até PAGO, CANCELADO, EXPIRADO ou FALHA_EMISSAO. Bulk support: accepts ids for batched execution.
idrequiredidsaccountCANCELA uma cobrança já emitida (boleto/pix/link deixa de ser pagável). Use quando a cobrança foi gerada errada e ainda não foi paga. Passe o `id` da cobrança (de contaazul_generate_charge ou contaazul_get_charge), NÃO o id da parcela. Bulk support: accepts ids for batched execution.
idrequiredidsaccountDetalhe de um contrato por id (cliente, termos, condição de pagamento, composição de valor). Bulk support: accepts ids for batched execution.
idrequiredidsaccountRetorna o próximo número de contrato disponível.
accountEncerra um contrato por id. Operação sensível, confirme antes. Bulk support: accepts ids for batched execution.
idrequiredidsaccountRemove um contrato por id. Operação destrutiva, confirme antes. Bulk support: accepts ids for batched execution.
idrequiredidsaccountLista orçamentos (cliente, número, total, situação, versão). Paginado.
paginaaccounttamanho_paginaDetalhe de um orçamento por id (itens, cliente, composição de valor). Bulk support: accepts ids for batched execution.
idrequiredidsaccountCria um orçamento. `data` é o JSON com id_cliente (obrigatório, UUID de uma pessoa com perfil Cliente), data_orcamento (obrigatório, YYYY-MM-DD), itens[] (cada item exige id do produto/serviço + tipo/quantidade/valor), data_validade, id_vendedor e composicao_de_valor (frete, desconto).
datarequiredaccountExclui orçamentos em lote por id. Operação destrutiva, confirme antes. `ids` é a lista de UUIDs de orçamento (a API v2 não tem exclusão por id única).
idsrequiredaccountShow Version
Show the current MCP platform and adapter versions.
Takes no parameters.
Report Bug
Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.
contextmessagerequiredconversationConnection Status
Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.
Takes no parameters.
Toolkit Info
Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.
Takes no parameters.
Marketplace
The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like "find an MCP that does X", "consulta um CPF", "is there a tool for Y". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/<slug> link that opens without login.
limitqueryactionmcp_idmessagetool_idargumentsimmediatetier_slugprompt_bodyprompt_slugprompt_tool+11 moreAuthenticate
MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <token>` for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: "<jwt>" } after the user pastes, or with no args to get the link.
token75% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.
Declare a license in the repository or the registry entry.
cr.azulOfficial publisher
Read-only MCP access to a Costa Rica local business directory: search businesses, jobs, events and specials, with optional keyed contact details.

Published by GitHub account codespar
Local MCP server that connects an assistant to Conta Azul ERP for accounting, invoicing, customers, products, sales and financial summaries.