Documentation Index
Fetch the complete documentation index at: https://docs.useaira.com/llms.txt
Use this file to discover all available pages before exploring further.
A importação em lote permite criar ou substituir faturas a partir de uma planilha XLSX, seguindo um modelo padrão com colunas fixas. É indicada para carga inicial, migrações de sistemas anteriores e ajustes operacionais em grande volume.
Visão geral
- Entidade importada: faturas.
- Formato aceito: somente arquivos
.xlsx. - Tamanho máximo: 50 MB por arquivo.
- Resultado esperado: todas as faturas importadas entram com status Em revisão e origem Importação. Nenhuma fatura é emitida automaticamente pela importação.
- Idempotência: cada fatura é identificada pela
chaveIdempotencia. Reimportar com a mesma chave substitui a fatura anterior, desde que ela não esteja travada. - Múltiplas linhas por fatura: várias linhas da planilha com a mesma
chaveIdempotenciaformam uma única fatura, onde cada linha da planilha corresponde a uma linha de cobrança.
A importação não emite faturas para o cliente. Após a importação, as faturas ficam disponíveis na listagem com status Em revisão para conferência antes da emissão.
Como abrir a tela de importação
Abrir o modal de importação
Clique em Ações → seção Importar → opção Importar faturas. Abre o modal “Importar faturas a partir de um arquivo”.
Baixar o modelo
Na descrição do modal, clique em modelo padrão para baixar o arquivo XLSX. O cabeçalho está na primeira linha e quatro linhas de exemplo já vêm preenchidas. Quando há um único modelo disponível, ele já vem pré-selecionado em “Selecione o modelo do arquivo”.
Preencher e enviar
Da segunda linha em diante, adicione uma linha por linha de cobrança. Use os nomes de coluna exatamente como estão no modelo — eles não podem ser renomeados ou reordenados. Faça upload do arquivo: assim que o upload é validado, o botão Enviar muda para Importar.
Colunas extras não listadas no dicionário abaixo fazem o arquivo ser rejeitado — o schema não aceita propriedades adicionais.
Dicionário de colunas
A planilha tem 18 colunas na primeira linha (cabeçalho), nesta ordem e com estes nomes exatos:| # | Coluna | Obrigatoriedade |
|---|---|---|
| 1 | chaveIdempotencia | Obrigatória |
| 2 | idExternoCliente | Obrigatória |
| 3 | dataEmissao | Obrigatória |
| 4 | dataVencimento | Opcional |
| 5 | memorando | Opcional |
| 6 | cnpjCpf | Opcional |
| 7 | unidadePeriodo | Opcional |
| 8 | chaveIdempotenciaGrupo | Opcional |
| 9 | dataInicioGrupo | Condicional |
| 10 | dataFimGrupo | Condicional |
| 11 | idProduto | Condicional |
| 12 | nomeProduto | Condicional |
| 13 | idItem | Condicional |
| 14 | nomeItem | Condicional |
| 15 | dataInicioItem | Obrigatória |
| 16 | dataFimItem | Obrigatória |
| 17 | quantidade | Obrigatória |
| 18 | valorUnitario | Obrigatória |
chaveIdempotencia
- Obrigatoriedade: obrigatória.
- Tipo: texto, de 1 a 100 caracteres.
- O que representa: identificador único da fatura.
- Regra: múltiplas linhas com a mesma
chaveIdempotenciaformam uma única fatura — cada linha é uma linha de cobrança. Reimportar com a mesma chave substitui a fatura anterior, a menos que ela esteja travada. - Exemplo:
fatura-exemplo-1.
idExternoCliente
- Obrigatoriedade: obrigatória.
- Tipo: texto, de 1 a 100 caracteres.
- O que representa: ID externo do cliente já cadastrado na Aira.
- Regra: o cliente precisa existir. Se não existir, a linha falha com Cliente não encontrado pelo customerExternalId.
- Exemplo:
cliente-externo-1.
dataEmissao
- Obrigatoriedade: obrigatória.
- Tipo: data no formato
dd/mm/aaaaou célula de data do Excel. - O que representa: data de emissão da fatura.
- Regra: vazia ou inválida → Data da fatura inválida. Datas anteriores a 01/01/2000 são rejeitadas.
- Exemplo:
01/05/2026.
dataVencimento
- Obrigatoriedade: opcional.
- Tipo: data no formato
dd/mm/aaaaou célula de data do Excel. - O que representa: data de vencimento da fatura.
- Regra: se preenchida e inválida → Data de vencimento inválida. Só pode ser preenchida se o módulo de Pagamentos estiver habilitado — caso contrário → Data de vencimento não permitida: módulo de pagamentos desativado.
- Exemplo:
10/05/2026.
memorando
- Obrigatoriedade: opcional.
- Tipo: texto até 1000 caracteres.
- O que representa: observação livre da fatura, exibida na fatura.
- Exemplo:
Mensalidade de maio.
cnpjCpf
- Obrigatoriedade: opcional.
- Tipo: texto até 30 caracteres.
- O que representa: CNPJ ou CPF usado para escolher a conta de pagamento entre o cliente e suas subsidiárias. A comparação ignora pontuação.
- Regra: quando vazia, usa a primeira conta de pagamento do próprio cliente. Quando preenchida, procura match exato (após remover não-numéricos) entre as contas do cliente e das suas subsidiárias.
- Exemplo:
12.345.678/0001-90.
unidadePeriodo
- Obrigatoriedade: opcional.
- Tipo: texto, um dos valores
semanal,mensalouanual. - O que representa: unidade de período de faturamento da linha.
- Regra: maiúsculas/minúsculas indiferentes. Vazia é aceita (a fatura fica sem unidade de período). Qualquer outro valor → Unidade de período inválida (semanal, mensal, anual).
- Exemplo:
mensal.
chaveIdempotenciaGrupo
- Obrigatoriedade: opcional.
- Tipo: texto até 100 caracteres.
- O que representa: identificador de um grupo de linhas de cobrança dentro da fatura.
- Regra: linhas com a mesma
chaveIdempotenciaGrupodentro da mesmachaveIdempotenciaformam um grupo. Quando preenchida, exigedataInicioGrupoedataFimGrupoválidas e referência consistente ao mesmo produto entre todas as linhas do grupo. - Exemplo:
grupo-implantacao-1.
dataInicioGrupo
- Obrigatoriedade: condicional — obrigatória quando
chaveIdempotenciaGrupoestiver preenchida. - Tipo: data no formato
dd/mm/aaaaou célula de data do Excel. - O que representa: início do período coberto pelo grupo.
- Regra: em branco ou inválida, com
chaveIdempotenciaGrupopreenchida → Data de início do grupo inválida. - Exemplo:
01/05/2026.
dataFimGrupo
- Obrigatoriedade: condicional — obrigatória quando
chaveIdempotenciaGrupoestiver preenchida. - Tipo: data no formato
dd/mm/aaaaou célula de data do Excel. - O que representa: fim do período coberto pelo grupo.
- Regra: em branco ou inválida, com
chaveIdempotenciaGrupopreenchida → Data de término do grupo inválida. - Exemplo:
31/05/2026.
idProduto
- Obrigatoriedade: condicional — obrigatória apenas se
nomeProdutoestiver vazio. - Tipo: texto até 100 caracteres.
- O que representa: ID do produto na Aira ao qual a linha de cobrança está vinculada.
- Regra: pelo menos uma das colunas
idProdutoounomeProdutoprecisa estar preenchida. Quando ambas estão preenchidas, oidProdutotem prioridade. Se o ID não existir → Produto não encontrado. Se ambas estiverem vazias → Informe o idProduto ou o nomeProduto. - Exemplo:
uuid-do-produto-assinatura.
nomeProduto
- Obrigatoriedade: condicional — obrigatória apenas se
idProdutoestiver vazio. - Tipo: texto até 200 caracteres.
- O que representa: nome do produto na Aira ao qual a linha de cobrança está vinculada.
- Regra: usada quando
idProdutoestá vazio. A busca ignora maiúsculas/minúsculas, acentos e espaços extras nas pontas. Se nenhum produto bate → Produto não encontrado. - Exemplo:
Serviço de Implantação.
idItem
- Obrigatoriedade: condicional — obrigatória apenas se
nomeItemestiver vazio. - Tipo: texto até 100 caracteres.
- O que representa: ID de um item do catálogo ao qual a linha de cobrança está vinculada.
- Regra: pelo menos uma das colunas
idItemounomeItemprecisa estar preenchida. Quando ambas estão preenchidas, oidItemtem prioridade. Se o ID não existir → Item não encontrado. Se ambas estiverem vazias → Informe o idItem ou o nomeItem. - Exemplo:
uuid-do-item-onboarding.
nomeItem
- Obrigatoriedade: condicional — obrigatória apenas se
idItemestiver vazio. - Tipo: texto até 200 caracteres.
- O que representa: nome do item do catálogo ao qual a linha de cobrança está vinculada.
- Regra: usada quando
idItemestá vazio. A busca ignora maiúsculas/minúsculas, acentos e espaços extras nas pontas. Se nenhum item bate → Item não encontrado. Esta coluna não é um nome de exibição livre — o nome exibido da linha de cobrança vem sempre do item resolvido. - Exemplo:
Onboarding.
Os valores de
idProduto e idItem correspondem aos identificadores internos dos produtos e itens do catálogo na Aira. Antes de rodar a importação, entre em contato com o time da Aira para receber o mapeamento correto dos IDs a utilizar — os valores variam conforme o caso de uso e o cadastro da sua conta. Como alternativa, use nomeProduto e nomeItem para resolver pelo nome.dataInicioItem
- Obrigatoriedade: obrigatória em toda linha.
- Tipo: data no formato
dd/mm/aaaaou célula de data do Excel. - O que representa: início do período coberto pela linha de cobrança.
- Regra: em branco ou inválida → Data de início do item inválida.
- Exemplo:
01/05/2026.
dataFimItem
- Obrigatoriedade: obrigatória em toda linha.
- Tipo: data no formato
dd/mm/aaaaou célula de data do Excel. - O que representa: fim do período coberto pela linha de cobrança.
- Regra: em branco ou inválida → Data de término do item inválida.
- Exemplo:
31/05/2026.
quantidade
- Obrigatoriedade: obrigatória.
- Tipo: número decimal (aceita
.ou,como separador). Sem separador de milhar. - O que representa: quantidade cobrada na linha.
- Regra: maior ou igual a zero. Vazia, não numérica ou negativa → Quantidade inválida.
- Exemplo:
8.
valorUnitario
- Obrigatoriedade: obrigatória.
- Tipo: número decimal em reais (não em centavos). Aceita
.ou,como separador. Sem separador de milhar. - O que representa: valor unitário da linha em reais.
- Regra: maior ou igual a zero. Vazio, não numérico ou negativo → Valor unitário inválido. O total da linha é
quantidade × valorUnitario. - Exemplo:
499,00.
Regras de agrupamento e idempotência
Uma fatura por chaveIdempotencia
Linhas que compartilham a mesmachaveIdempotencia formam uma única fatura. Para isso, os campos de cabeçalho abaixo precisam ser idênticos em todas as linhas da fatura — se algum diferir, a segunda linha (e as seguintes) é rejeitada com Campos da fatura inconsistentes entre linhas do mesmo idempotencyKey:
idExternoClientedataEmissaodataVencimentomemorandocnpjCpfunidadePeriodo
Grupos de linhas de cobrança
Um grupo é um agrupador de linhas de cobrança dentro da mesma fatura, sob um mesmo produto. Use quando um produto é faturado em várias linhas — por exemplo, as etapas de uma implantação (Onboarding + Treinamento) — e você quer exibi-las agrupadas na fatura, com um período único para o conjunto. Linhas com a mesmachaveIdempotenciaGrupo, dentro da mesma chaveIdempotencia, formam um grupo. Dentro de um grupo:
- Todas as linhas devem apontar para o mesmo produto — senão Todas as linhas de um grupo devem ter o mesmo productId. Linhas que usam
idProdutoe linhas que usamnomeProdutoapontando para o mesmo produto resolvido são compatíveis; referências literais diferentes contam como diferença. - Os campos
dataInicioGrupoedataFimGrupodevem ser idênticos entre as linhas — senão Campos do grupo inconsistentes entre linhas do mesmo groupIdempotencyKey. dataInicioGrupoedataFimGruposão obrigatórias quandochaveIdempotenciaGrupoestiver preenchida.
chaveIdempotenciaGrupo é opcional: fatura com linhas soltas (sem grupo) também é válida. Uma mesma fatura pode misturar linhas agrupadas e linhas soltas.
Substituição por reimportação
Reimportar um arquivo com umachaveIdempotencia já existente substitui a fatura anterior. Se a fatura existente estiver travada (já emitida, paga, cancelada ou sincronizada), a linha falha com Fatura alvo está travada e não pode ser substituída e nada é alterado.
Formatos aceitos
- Datas
- Números decimais
- Comparação de nomes
Aceitamos dois formatos:
- Texto no formato
dd/mm/aaaa. - Células de data do Excel — o formato nativo quando você digita a data diretamente na célula formatada como data.
aaaa-mm-dd não é aceito. Datas anteriores a 01/01/2000 são rejeitadas como inválidas.Resolução automática no processamento
Para cada linha, a Aira faz as seguintes buscas e associações:Cliente
Busca o cliente pelo
idExternoCliente. Se não existir → Cliente não encontrado pelo customerExternalId.Conta de pagamento
- Se
cnpjCpfestiver vazio: usa a primeira conta de pagamento do cliente. Se o cliente não tiver nenhuma → Cliente não possui conta de pagamento. - Se
cnpjCpfestiver preenchido: normaliza removendo caracteres não numéricos e procura match exato entre as contas de pagamento do cliente e das suas subsidiárias. Sem match → taxId não encontrado entre o cliente e suas subsidiárias.
Produto
- Se
idProdutoestiver preenchido, busca o produto por ID. - Senão, busca pelo
nomeProduto(ignorando maiúsculas/minúsculas, acentos e espaços extras). - Se nada bate → Produto não encontrado. Se ambas estiverem vazias → Informe o idProduto ou o nomeProduto.
Item
- Se
idItemestiver preenchido, busca o item por ID. - Senão, busca pelo
nomeItem(mesma comparação acima). - Se nada bate → Item não encontrado. Se ambas estiverem vazias → Informe o idItem ou o nomeItem.
Comportamento após importar
Toda fatura criada pela importação entra com estado fixo, não configurável pela planilha:- Status: Em revisão.
- Origem: Importação.
- Alocação: a fatura é alocada inteiramente ao cliente do cabeçalho.
- Nome exibido do grupo: vem sempre do nome do produto resolvido.
- Nome exibido da linha de cobrança: vem sempre do nome do item resolvido.
Mensagens de erro
| Mensagem | Quando ocorre |
|---|---|
| Linha duplicada para a mesma fatura | Duplicidade de linhas de cobrança dentro da mesma fatura. |
| Data da fatura inválida | dataEmissao vazia ou não reconhecida. |
| Data de vencimento inválida | dataVencimento preenchida e não reconhecida. |
| Data de vencimento não permitida: módulo de pagamentos desativado | dataVencimento preenchida sem o módulo de pagamentos habilitado. |
| Data de início do item inválida | dataInicioItem vazia ou inválida. |
| Data de término do item inválida | dataFimItem vazia ou inválida. |
| Unidade de período inválida (semanal, mensal, anual) | unidadePeriodo com valor diferente de semanal, mensal ou anual. |
| Data de início do grupo inválida | chaveIdempotenciaGrupo preenchida sem dataInicioGrupo válida. |
| Data de término do grupo inválida | chaveIdempotenciaGrupo preenchida sem dataFimGrupo válida. |
| Quantidade inválida | quantidade vazia, não numérica ou negativa. |
| Valor unitário inválido | valorUnitario vazio, não numérico ou negativo. |
| Campos da fatura inconsistentes entre linhas do mesmo idempotencyKey | Linhas com mesma chaveIdempotencia divergem em algum dos campos: idExternoCliente, dataEmissao, dataVencimento, memorando, cnpjCpf, unidadePeriodo. |
| Campos do grupo inconsistentes entre linhas do mesmo groupIdempotencyKey | Linhas com mesma chaveIdempotenciaGrupo divergem em dataInicioGrupo ou dataFimGrupo. |
| Todas as linhas de um grupo devem ter o mesmo productId | Linhas no mesmo grupo apontam para produtos diferentes (por id ou por nome). |
| Cliente não encontrado pelo customerExternalId | idExternoCliente não corresponde a nenhum cliente. |
| Cliente não possui conta de pagamento | cnpjCpf vazio e o cliente não tem nenhuma conta de pagamento ativa. |
| taxId não encontrado entre o cliente e suas subsidiárias | cnpjCpf preenchido mas não bate com nenhuma conta de pagamento do cliente nem das subsidiárias. |
| Fatura alvo está travada e não pode ser substituída | Já existe fatura com aquela chaveIdempotencia em estado travado. |
| Produto não encontrado | idProduto não existe ou nomeProduto não bate com nenhum produto. |
| Informe o idProduto ou o nomeProduto | Linha com idProduto e nomeProduto ambos vazios. |
| Item não encontrado | idItem não existe ou nomeItem não bate com nenhum item. |
| Informe o idItem ou o nomeItem | Linha com idItem e nomeItem ambos vazios. |
Exemplos do modelo
O modelo baixável já vem preenchido com quatro linhas de exemplo, cobrindo os cenários mais comuns: fatura simples resolvida por ID, fatura com grupo resolvida por nome, e fatura semdataVencimento misturando ID e nome.
Linha 1 — Fatura simples, produto e item por ID
Uma fatura avulsa com uma única linha de cobrança (mensalidade). Resolve produto e item pelo ID.| Coluna | Valor |
|---|---|
chaveIdempotencia | fatura-exemplo-1 |
idExternoCliente | cliente-externo-1 |
dataEmissao | 01/05/2026 |
dataVencimento | 10/05/2026 |
memorando | Mensalidade de maio |
cnpjCpf | (vazio) |
unidadePeriodo | mensal |
chaveIdempotenciaGrupo | (vazio) |
dataInicioGrupo | (vazio) |
dataFimGrupo | (vazio) |
idProduto | uuid-do-produto-assinatura |
nomeProduto | (vazio) |
idItem | uuid-do-item-assinatura |
nomeItem | (vazio) |
dataInicioItem | 01/05/2026 |
dataFimItem | 31/05/2026 |
quantidade | 1 |
valorUnitario | 499,00 |
Linha 2 — Fatura com grupo, primeira linha (Onboarding)
Primeira linha de uma fatura com grupo de implantação. OcnpjCpf é usado para escolher a conta de pagamento entre o cliente e suas subsidiárias. Produto e item resolvidos pelo nome.
| Coluna | Valor |
|---|---|
chaveIdempotencia | fatura-exemplo-2 |
idExternoCliente | cliente-externo-2 |
dataEmissao | 01/05/2026 |
dataVencimento | 15/05/2026 |
memorando | Setup inicial do cliente |
cnpjCpf | 12.345.678/0001-90 |
unidadePeriodo | mensal |
chaveIdempotenciaGrupo | grupo-implantacao-1 |
dataInicioGrupo | 01/05/2026 |
dataFimGrupo | 31/05/2026 |
idProduto | (vazio) |
nomeProduto | Serviço de Implantação |
idItem | (vazio) |
nomeItem | Onboarding |
dataInicioItem | 01/05/2026 |
dataFimItem | 15/05/2026 |
quantidade | 1 |
valorUnitario | 2500,00 |
Linha 3 — Mesma fatura, segunda linha do grupo (Treinamento)
Segunda linha da faturafatura-exemplo-2, dentro do mesmo grupo grupo-implantacao-1. Todos os campos de cabeçalho (idExternoCliente, dataEmissao, dataVencimento, memorando, cnpjCpf, unidadePeriodo) e os campos de grupo (dataInicioGrupo, dataFimGrupo, referência ao produto) coincidem com a Linha 2.
| Coluna | Valor |
|---|---|
chaveIdempotencia | fatura-exemplo-2 |
idExternoCliente | cliente-externo-2 |
dataEmissao | 01/05/2026 |
dataVencimento | 15/05/2026 |
memorando | Setup inicial do cliente |
cnpjCpf | 12.345.678/0001-90 |
unidadePeriodo | mensal |
chaveIdempotenciaGrupo | grupo-implantacao-1 |
dataInicioGrupo | 01/05/2026 |
dataFimGrupo | 31/05/2026 |
idProduto | (vazio) |
nomeProduto | Serviço de Implantação |
idItem | (vazio) |
nomeItem | Treinamento da equipe |
dataInicioItem | 16/05/2026 |
dataFimItem | 31/05/2026 |
quantidade | 8 |
valorUnitario | 350,00 |
Linha 4 — Fatura sem dataVencimento, produto por ID e item por nome
Fatura avulsa, sem grupo, comdataVencimento em branco e unidadePeriodo em branco. Mistura: produto pelo ID e item pelo nome.
| Coluna | Valor |
|---|---|
chaveIdempotencia | fatura-exemplo-3 |
idExternoCliente | cliente-externo-3 |
dataEmissao | 05/05/2026 |
dataVencimento | (vazio) |
memorando | (vazio) |
cnpjCpf | (vazio) |
unidadePeriodo | (vazio) |
chaveIdempotenciaGrupo | (vazio) |
dataInicioGrupo | (vazio) |
dataFimGrupo | (vazio) |
idProduto | uuid-do-produto-consumo |
nomeProduto | (vazio) |
idItem | (vazio) |
nomeItem | Horas adicionais |
dataInicioItem | 01/04/2026 |
dataFimItem | 30/04/2026 |
quantidade | 12 |
valorUnitario | 180,00 |
Limitações conhecidas
- Somente arquivos
.xlsxsão aceitos — outros formatos (.csv,.xls,.ods) não são suportados. - O tamanho máximo por arquivo é 50 MB.
- Os nomes das colunas em português (camelCase) são fixos — não podem ser renomeados ou reordenados.
- Colunas extras não previstas pelo schema fazem o arquivo ser rejeitado.
Próximos passos
- Ciclo de vida da fatura — entenda as transições a partir de Em revisão.
- Descontos e alocações — ajuste valores e distribua cobranças após a importação.
- Documentos fiscais — emissão de NFSe e geração de PDFs.