Esquemas e layouts de exportação
Veja os campos que o ScanToExcel extrai e como aparecem nos ficheiros. Um campo suportado não garante que exista no documento ou que a extração o preencha.
Em todos os planos, os modelos de exportação usam cabeçalhos e nomes de campos em inglês. O texto extraído e os cabeçalhos das tabelas de origem geralmente permanecem no idioma do documento. Alterar o idioma do site não traduz os arquivos baixados. As chaves JSON, os rótulos predefinidos das planilhas e os cabeçalhos dos modelos contábeis permanecem fixos. Datas, números, códigos de moeda e algumas categorias podem ser padronizados; confira o resultado.
Escolha a saída
- JSON
- JSON mantém dados aninhados, incluindo listas de itens e transações. O ficheiro contém o objeto do documento, sem metadados de quota ou transferência. A opção plana não altera JSON.
- Plano
- Os exports planos usam uma grelha retangular de linhas e colunas uniformes. Cada linha representa um item ou transação, repetindo dados do documento quando necessário. Cada tabela tem uma estrutura fixa de colunas. Excel pode conter várias folhas; CSV contém uma grelha.
- Não plano
- Os exports Excel e CSV não planos colocam tabelas separadas lado a lado, cada uma com função e colunas próprias: dados do documento, itens, impostos, totais ou avisos. Não formam uma tabela uniforme única. Word empilha estas tabelas verticalmente. Recibos de vencimento e imagens de tabelas usam layouts próprios.
| Documento | JSON | Layout | Xero CSV | QuickBooks CSV |
|---|---|---|---|---|
| Recibo | Sim | Plano / Não plano | Sim | Não |
| Fatura/Conta | Sim | Plano / Não plano | Sim | Não |
| Extrato Bancário | Sim | Plano / Não plano | Sim | Sim |
| Extrato de Cartão de Crédito | Sim | Plano / Não plano | Sim | Sim |
| Recibo de Vencimento | Sim | Layout próprio | Não | Não |
| Imagem de Tabela | Sim | Layout próprio | Não | Não |
Os CSV contabilísticos são opções Premium com modelos próprios. Produzem ficheiros, não uma ligação direta ao Xero ou QuickBooks. Reveja campos e associações contabilísticas antes de importar. Preços
Recibo
Comerciante, data, moeda, número, quantidades, preços, impostos, pagamento e totais. As taxas são frações: 0.20 significa 20%.
Campos JSON
Os tipos descrevem JSON serializado. Objetos e arrays precedem os seus campos; [] indica entradas repetidas. Campos predefinidos não têm de ser fornecidos pela extração. Os decimais são serializados como cadeias de texto. Os ficheiros mantêm os campos predefinidos; um valor não extraído não equivale a uma chave JSON omitida.
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
vendor | string | null | Com valor predefinido |
date | string | null | Com valor predefinido |
currency | string | null | Com valor predefinido |
document_number | string | null | Com valor predefinido |
subtotal | string | null | Com valor predefinido |
tax | string | null | Com valor predefinido |
tax_inclusive | boolean | null | Com valor predefinido |
tip | string | null | Com valor predefinido |
payment_method | string | null | Com valor predefinido |
total | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
line_items | array<object> | Com valor predefinido |
line_items[].description | string | null | Com valor predefinido |
line_items[].quantity | string | null | Com valor predefinido |
line_items[].unit_price | string | null | Com valor predefinido |
line_items[].total | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
taxes | array<object> | Com valor predefinido |
taxes[].name | string | null | Com valor predefinido |
taxes[].rate | string | null | Com valor predefinido |
taxes[].base | string | null | Com valor predefinido |
taxes[].amount | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
reconciliation_warnings | array<string> | Com valor predefinido |
Plano
O layout plano inclui itens e um resumo separado em Excel. CSV contém apenas itens. Ajustes de impostos e gorjetas podem adicionar linhas: line_total vem de tax, taxes[].amount ou tip; description é gerada e quantity, unit_price e line_no ficam vazios.
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| doc_id | doc_id |
| source_filename | source_filename |
| vendor | vendor |
| date | date |
| currency | currency |
| document_number | document_number |
| line_no | index(line_items[]) + 1 |
| description | line_items[].description |
| quantity | line_items[].quantity |
| unit_price | line_items[].unit_price |
| line_total | line_items[].total |
| row_type | line | adjustment |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| doc_id | doc_id |
| source_filename | source_filename |
| vendor | vendor |
| date | date |
| currency | currency |
| document_number | document_number |
| subtotal | subtotal |
| tax | tax |
| tax_inclusive | tax_inclusive |
| tip | tip |
| payment_method | payment_method |
| total | total |
| tax_breakdown | join(taxes[].name, taxes[].rate, taxes[].amount) |
| warnings | join(reconciliation_warnings[]) |
Não plano
O layout não plano coloca estas tabelas lado a lado. Dados e totais usam linhas campo/valor; itens e impostos usam colunas. Os avisos aparecem quando existem. unit_price não está na tabela não plana de itens.
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(line_items[]) + 1 |
| Description | line_items[].description |
| Qty | line_items[].quantity |
| Line total | line_items[].total |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Doc ID | doc_id |
| Source | source_filename |
| Vendor | vendor |
| Date | date |
| Currency | currency |
| Document # | document_number |
| Payment method | payment_method |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Name | taxes[].name |
| Rate | taxes[].rate |
| Base | taxes[].base |
| Amount | taxes[].amount |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Subtotal | subtotal |
| Tax | tax |
| Tax inclusive | tax_inclusive |
| Tip | tip |
| Total | total |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Xero CSV
Uma linha resumida por recibo. Campos sem origem ficam vazios, incluindo AccountCode e TaxType. Complete as associações necessárias antes de importar.
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| *ContactName | vendor || "Unknown vendor" |
| EmailAddress | Vazio |
| POAddressLine1 | Vazio |
| POAddressLine2 | Vazio |
| POAddressLine3 | Vazio |
| POAddressLine4 | Vazio |
| POCity | Vazio |
| PORegion | Vazio |
| POPostalCode | Vazio |
| POCountry | Vazio |
| *InvoiceNumber | document_number || "RCP-" + doc_id |
| Reference | "Receipt" |
| *InvoiceDate | date → DD/MM/YYYY |
| *DueDate | date → DD/MM/YYYY |
| Total | Vazio |
| InventoryItemCode | Vazio |
| *Description | join(line_items[].description) || vendor || "Receipt"; tip → "(incl. tip)" |
| *Quantity | 1 |
| *UnitAmount | subtotal / total / tax / tax_inclusive / tip |
| Discount | Vazio |
| *AccountCode | Vazio |
| *TaxType | Vazio |
| TaxAmount | tax (0 → blank) |
| TrackingName1 | Vazio |
| TrackingOption1 | Vazio |
| TrackingName2 | Vazio |
| TrackingOption2 | Vazio |
| Currency | currency |
| BrandingTheme | Vazio |
UnitAmount usa total, ou subtotal como alternativa, se tax_inclusive for true. Caso contrário usa subtotal ou total menos tax se faltar subtotal. Montantes ausentes podem passar a zero. Depois adiciona tip. Reveja impostos e gorjetas antes de importar.
QuickBooks CSV
Não
Fatura/Conta
Datas e referências, remetente e destinatário, itens, impostos, descontos, retenções e totais. unit é a unidade impressa; tax_rate é uma fração.
Campos JSON
Os tipos descrevem JSON serializado. Objetos e arrays precedem os seus campos; [] indica entradas repetidas. Campos predefinidos não têm de ser fornecidos pela extração. Os decimais são serializados como cadeias de texto. Os ficheiros mantêm os campos predefinidos; um valor não extraído não equivale a uma chave JSON omitida.
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
invoice_number | string | null | Com valor predefinido |
issue_date | string | null | Com valor predefinido |
due_date | string | null | Com valor predefinido |
currency | string | null | Com valor predefinido |
payment_terms | string | null | Com valor predefinido |
purchase_order | string | null | Com valor predefinido |
notes | string | null | Com valor predefinido |
subtotal | string | null | Com valor predefinido |
discount | string | null | Com valor predefinido |
tax | string | null | Com valor predefinido |
tax_inclusive | boolean | null | Com valor predefinido |
withholdings | string | null | Com valor predefinido |
total | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
sender | object | null | Com valor predefinido |
sender.name | string | null | Com valor predefinido |
sender.address | object | null | Com valor predefinido |
sender.address.line1 | string | null | Com valor predefinido |
sender.address.line2 | string | null | Com valor predefinido |
sender.address.city | string | null | Com valor predefinido |
sender.address.region | string | null | Com valor predefinido |
sender.address.postal_code | string | null | Com valor predefinido |
sender.address.country | string | null | Com valor predefinido |
sender.address.raw | string | null | Com valor predefinido |
sender.tax_id | string | null | Com valor predefinido |
sender.email | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
receiver | object | null | Com valor predefinido |
receiver.name | string | null | Com valor predefinido |
receiver.address | object | null | Com valor predefinido |
receiver.address.line1 | string | null | Com valor predefinido |
receiver.address.line2 | string | null | Com valor predefinido |
receiver.address.city | string | null | Com valor predefinido |
receiver.address.region | string | null | Com valor predefinido |
receiver.address.postal_code | string | null | Com valor predefinido |
receiver.address.country | string | null | Com valor predefinido |
receiver.address.raw | string | null | Com valor predefinido |
receiver.tax_id | string | null | Com valor predefinido |
receiver.email | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
line_items | array<object> | Com valor predefinido |
line_items[].description | string | null | Com valor predefinido |
line_items[].quantity | string | null | Com valor predefinido |
line_items[].unit | string | null | Com valor predefinido |
line_items[].unit_price | string | null | Com valor predefinido |
line_items[].total | string | null | Com valor predefinido |
line_items[].tax_rate | string | null | Com valor predefinido |
line_items[].tax_amount | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
taxes | array<object> | Com valor predefinido |
taxes[].name | string | null | Com valor predefinido |
taxes[].rate | string | null | Com valor predefinido |
taxes[].base | string | null | Com valor predefinido |
taxes[].amount | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
reconciliation_warnings | array<string> | Com valor predefinido |
As tabelas associam campos de saída a caminhos JSON. || indica o primeiro valor não vazio; ?? um valor alternativo para null. Numeração, descrições combinadas e formatação são regras de exportação. Valores em falta tornam-se geralmente células vazias.
O layout plano contém itens com dados repetidos da fatura. O não plano agrupa dados, partes, itens, impostos, totais e avisos; Word dispõe as secções verticalmente.
Plano
Lines contém uma linha por item com dados da fatura repetidos. As linhas de ajuste usam −discount, taxes[].amount (ou tax) quando tax_inclusive não é true, e −withholdings. As descrições são geradas; line_no, quantity, unit e unit_price ficam vazios. Uma fatura sem itens também produz uma linha de documento.
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| doc_id | doc_id |
| source_filename | source_filename |
| invoice_number | invoice_number |
| issue_date | issue_date |
| due_date | due_date |
| currency | currency |
| sender | sender.name |
| receiver | receiver.name |
| line_no | index(line_items[]) + 1 |
| description | line_items[].description |
| quantity | line_items[].quantity |
| unit | line_items[].unit |
| unit_price | line_items[].unit_price |
| line_total | line_items[].total |
| tax_rate | line_items[].tax_rate |
| tax_amount | line_items[].tax_amount |
| row_type | line | adjustment |
Não plano
Estas tabelas ficam lado a lado no Excel e CSV; o Word empilha-as. A tabela de itens do Excel omite atualmente Line total. CSV e Word incluem-no. Os dados do documento e totais usam linhas campo/valor. Os avisos aparecem apenas quando existem.
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(line_items[]) + 1 |
| Description | line_items[].description |
| Qty | line_items[].quantity |
| Unit | line_items[].unit |
| Unit price | line_items[].unit_price |
| Tax rate | line_items[].tax_rate |
| Tax amount | line_items[].tax_amount |
| Line total | line_items[].total |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Doc ID | doc_id |
| Source | source_filename |
| Invoice # | invoice_number |
| Issue date | issue_date |
| Due date | due_date |
| Currency | currency |
| Payment terms | payment_terms |
| PO # | purchase_order |
| Sender | sender.name |
| Sender tax ID | sender.tax_id |
| Sender address | sender.address.raw || join(sender.address.line1, line2, city, region, postal_code, country) |
| Receiver | receiver.name |
| Receiver tax ID | receiver.tax_id |
| Receiver address | receiver.address.raw || join(receiver.address.line1, line2, city, region, postal_code, country) |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Name | taxes[].name |
| Rate | taxes[].rate |
| Base | taxes[].base |
| Amount | taxes[].amount |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Subtotal | subtotal |
| Discount | discount |
| Tax | tax |
| Tax inclusive | tax_inclusive |
| Withholdings | withholdings |
| Total | total |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Xero CSV
Uma linha por item com dados do destinatário repetidos. Sem itens, uma linha alternativa usa notes (ou “Invoice”) como Description, 1 como Quantity, total (ou subtotal) como UnitAmount e tax como TaxAmount. TaxAmount igual a zero fica vazio. As colunas sem correspondência ficam vazias; não são adicionados ajustes separados de descontos ou retenções.
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| *ContactName | receiver.name || "Unknown customer" |
| EmailAddress | receiver.email |
| POAddressLine1 | receiver.address.line1 |
| POAddressLine2 | receiver.address.line2 |
| POAddressLine3 | Vazio |
| POAddressLine4 | Vazio |
| POCity | receiver.address.city |
| PORegion | receiver.address.region |
| POPostalCode | receiver.address.postal_code |
| POCountry | receiver.address.country |
| *InvoiceNumber | invoice_number || "INV-" + doc_id |
| Reference | purchase_order |
| *InvoiceDate | issue_date → DD/MM/YYYY |
| *DueDate | (due_date || issue_date) → DD/MM/YYYY |
| Total | Vazio |
| InventoryItemCode | Vazio |
| *Description | line_items[].description |
| *Quantity | line_items[].quantity ?? 1 |
| *UnitAmount | line_items[].unit_price ?? (line_items[].total / (line_items[].quantity || 1)) |
| Discount | Vazio |
| *AccountCode | Vazio |
| *TaxType | Vazio |
| TaxAmount | line_items[].tax_amount (0 → "") |
| TrackingName1 | Vazio |
| TrackingOption1 | Vazio |
| TrackingName2 | Vazio |
| TrackingOption2 | Vazio |
| Currency | currency |
| BrandingTheme | Vazio |
QuickBooks CSV
Não
Extrato Bancário
Emissor, período e contas com identificação, saldos, totais e transações. trnamt é negativo para saídas e positivo para entradas. dtposted é a data contabilística; dtuser a data-valor.
Campos JSON
Os tipos descrevem JSON serializado. Objetos e arrays precedem os seus campos; [] indica entradas repetidas. Campos predefinidos não têm de ser fornecidos pela extração. Os decimais são serializados como cadeias de texto. Os ficheiros mantêm os campos predefinidos; um valor não extraído não equivale a uma chave JSON omitida.
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
issuer | object | Com valor predefinido |
issuer.name | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
statement | object | Com valor predefinido |
statement.statement_date | string | null | Com valor predefinido |
statement.period_start | string | null | Com valor predefinido |
statement.period_end | string | null | Com valor predefinido |
statement.currency_default | string | null | Com valor predefinido |
statement.page_count | integer | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
accounts | array<object> | Com valor predefinido |
accounts[].holder | object | Com valor predefinido |
accounts[].holder.name | string | null | Com valor predefinido |
accounts[].account | object | Com valor predefinido |
accounts[].account.account_number | string | null | Com valor predefinido |
accounts[].account.account_number_masked | string | null | Com valor predefinido |
accounts[].account.iban | string | null | Com valor predefinido |
accounts[].account.bic | string | null | Com valor predefinido |
accounts[].account.sort_code | string | null | Com valor predefinido |
accounts[].account.account_type | string | null | Com valor predefinido |
accounts[].account.account_name | string | null | Com valor predefinido |
accounts[].account.currency | string | null | Com valor predefinido |
accounts[].account.card_last4 | string | null | Com valor predefinido |
accounts[].balances | object | Com valor predefinido |
accounts[].balances.opening | object | Com valor predefinido |
accounts[].balances.opening.amount | string | null | Com valor predefinido |
accounts[].balances.opening.as_of | string | null | Com valor predefinido |
accounts[].balances.closing | object | Com valor predefinido |
accounts[].balances.closing.amount | string | null | Com valor predefinido |
accounts[].balances.closing.as_of | string | null | Com valor predefinido |
accounts[].balances.available | string | null | Com valor predefinido |
accounts[].totals | object | Com valor predefinido |
accounts[].totals.credits_count | integer | null | Com valor predefinido |
accounts[].totals.credits_amount | string | null | Com valor predefinido |
accounts[].totals.debits_count | integer | null | Com valor predefinido |
accounts[].totals.debits_amount | string | null | Com valor predefinido |
accounts[].totals.fees_charged | string | null | Com valor predefinido |
accounts[].totals.interest_paid | string | null | Com valor predefinido |
accounts[].totals.interest_charged | string | null | Com valor predefinido |
accounts[].transactions | array<object> | Com valor predefinido |
accounts[].transactions[].trntype | string | null | Com valor predefinido |
accounts[].transactions[].dtposted | string | null | Com valor predefinido |
accounts[].transactions[].dtuser | string | null | Com valor predefinido |
accounts[].transactions[].trnamt | string | null | Com valor predefinido |
accounts[].transactions[].name | string | null | Com valor predefinido |
accounts[].transactions[].memo | string | null | Com valor predefinido |
accounts[].transactions[].running_balance | string | null | Com valor predefinido |
accounts[].transactions[].fitid | string | null | Com valor predefinido |
accounts[].transactions[].refnum | string | null | Com valor predefinido |
accounts[].transactions[].checknum | string | null | Com valor predefinido |
accounts[].transactions[].card_last4 | string | null | Com valor predefinido |
accounts[].transactions[].fee | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
reconciliation_warnings | array<string> | Com valor predefinido |
As tabelas associam campos de saída a caminhos JSON. || indica o primeiro valor não vazio; ?? um valor alternativo para null. Numeração, descrições combinadas e formatação são regras de exportação. Valores em falta tornam-se geralmente células vazias.
O layout plano contém transações com dados repetidos do extrato e da conta. O não plano agrupa dados do extrato e transações, saldos e totais por conta. As secções dependem do documento.
Plano
Transactions repete os dados do documento e da conta por transação. Se faltarem transações ou contas, a exportação plana cria ainda uma linha de identificação com campos de transação vazios.
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| doc_id | doc_id |
| source_filename | source_filename |
| bank | issuer.name |
| account_holder | accounts[].holder.name |
| account_number | accounts[].account.account_number_masked || accounts[].account.account_number || accounts[].account.iban |
| account_type | accounts[].account.account_type |
| currency | accounts[].account.currency || statement.currency_default |
| period_start | statement.period_start |
| period_end | statement.period_end |
| txn_no | index(accounts[].transactions[]) + 1 |
| date | accounts[].transactions[].dtposted |
| value_date | accounts[].transactions[].dtuser |
| description | joinDistinct(accounts[].transactions[].name, accounts[].transactions[].memo, " - ") |
| reference | accounts[].transactions[].refnum |
| check_number | accounts[].transactions[].checknum |
| type | accounts[].transactions[].trntype |
| amount | accounts[].transactions[].trnamt |
| fee | accounts[].transactions[].fee |
| running_balance | accounts[].transactions[].running_balance |
Não plano
Cada conta tem tabelas próprias de transações e detalhes, lado a lado no Excel e CSV. Os dados do extrato acompanham a primeira conta; os avisos aparecem apenas quando existem. O Word empilha as secções. As linhas campo/valor estão detalhadas abaixo.
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(accounts[].transactions[]) + 1 |
| Date | accounts[].transactions[].dtposted |
| Value date | accounts[].transactions[].dtuser |
| Description | joinDistinct(accounts[].transactions[].name, accounts[].transactions[].memo, " - ") |
| Reference | accounts[].transactions[].refnum |
| Check # | accounts[].transactions[].checknum |
| Type | accounts[].transactions[].trntype |
| Amount | accounts[].transactions[].trnamt |
| Running balance | accounts[].transactions[].running_balance |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Holder | accounts[].holder.name |
| Account name | accounts[].account.account_name |
| Account number | accounts[].account.account_number_masked || accounts[].account.account_number |
| IBAN | accounts[].account.iban |
| BIC | accounts[].account.bic |
| Sort code | accounts[].account.sort_code |
| Card last 4 | accounts[].account.card_last4 |
| Account type | accounts[].account.account_type |
| Currency | accounts[].account.currency |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Opening | accounts[].balances.opening.amount |
| Opening as of | accounts[].balances.opening.as_of |
| Closing | accounts[].balances.closing.amount |
| Closing as of | accounts[].balances.closing.as_of |
| Available | accounts[].balances.available |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Credits count | accounts[].totals.credits_count |
| Credits amount | accounts[].totals.credits_amount |
| Debits count | accounts[].totals.debits_count |
| Debits amount | accounts[].totals.debits_amount |
| Fees charged | accounts[].totals.fees_charged |
| Interest paid | accounts[].totals.interest_paid |
| Interest charged | accounts[].totals.interest_charged |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Doc ID | doc_id |
| Source | source_filename |
| Bank | issuer.name |
| Statement date | statement.statement_date |
| Period start | statement.period_start |
| Period end | statement.period_end |
| Page count | statement.page_count |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Ambas as exportações combinam transações de todas as contas. Xero ignora montantes null; QuickBooks ignora null e zero. QuickBooks prefere memo a name; uma descrição apenas numérica recebe o prefixo trntype, name ou “Txn”. Os montantes de cartão têm o sinal invertido. Não existe uma coluna separada para identificar a conta.
Xero CSV
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| *Date | accounts[].transactions[].dtposted → DD/MM/YYYY |
| *Amount | accounts[].transactions[].trnamt |
| Payee | accounts[].transactions[].name |
| Description | joinDistinct(accounts[].transactions[].name, accounts[].transactions[].memo, " - ") |
| Reference | accounts[].transactions[].refnum |
| Cheque Number | accounts[].transactions[].checknum |
| Account code* | Vazio |
| Tax Rate (Display Name)* | Vazio |
| Tracking1 | Vazio |
| Tracking2 | Vazio |
| Transaction Type | accounts[].transactions[].trntype |
| Analysis code | Vazio |
QuickBooks CSV
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Date | accounts[].transactions[].dtposted → DD/MM/YYYY |
| Description | accounts[].transactions[].memo || accounts[].transactions[].name || accounts[].transactions[].trntype || "Transaction" |
| Amount | accounts[].transactions[].trnamt |
Extrato de Cartão de Crédito
Emissor, período, contas, saldos, limites, resumos e transações. trnamt é positivo para encargos e negativo para pagamentos e reembolsos, ao contrário das compras bancárias.
Campos JSON
Os tipos descrevem JSON serializado. Objetos e arrays precedem os seus campos; [] indica entradas repetidas. Campos predefinidos não têm de ser fornecidos pela extração. Os decimais são serializados como cadeias de texto. Os ficheiros mantêm os campos predefinidos; um valor não extraído não equivale a uma chave JSON omitida.
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
issuer | object | Com valor predefinido |
issuer.name | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
statement | object | Com valor predefinido |
statement.statement_date | string | null | Com valor predefinido |
statement.period_start | string | null | Com valor predefinido |
statement.period_end | string | null | Com valor predefinido |
statement.currency_default | string | null | Com valor predefinido |
statement.page_count | integer | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
accounts | array<object> | Com valor predefinido |
accounts[].holder | object | Com valor predefinido |
accounts[].holder.name | string | null | Com valor predefinido |
accounts[].account | object | Com valor predefinido |
accounts[].account.account_number | string | null | Com valor predefinido |
accounts[].account.account_number_masked | string | null | Com valor predefinido |
accounts[].account.card_last4 | string | null | Com valor predefinido |
accounts[].account.bin | string | null | Com valor predefinido |
accounts[].account.card_network | string | null | Com valor predefinido |
accounts[].account.card_brand | string | null | Com valor predefinido |
accounts[].account.card_product | string | null | Com valor predefinido |
accounts[].account.card_type | string | null | Com valor predefinido |
accounts[].account.currency | string | null | Com valor predefinido |
accounts[].balances | object | Com valor predefinido |
accounts[].balances.previous_balance | object | Com valor predefinido |
accounts[].balances.previous_balance.amount | string | null | Com valor predefinido |
accounts[].balances.previous_balance.as_of | string | null | Com valor predefinido |
accounts[].balances.new_balance | object | Com valor predefinido |
accounts[].balances.new_balance.amount | string | null | Com valor predefinido |
accounts[].balances.new_balance.as_of | string | null | Com valor predefinido |
accounts[].balances.statement_balance | string | null | Com valor predefinido |
accounts[].balances.minimum_payment_due | string | null | Com valor predefinido |
accounts[].balances.payment_due_date | string | null | Com valor predefinido |
accounts[].balances.past_due_amount | string | null | Com valor predefinido |
accounts[].credit_limits | object | Com valor predefinido |
accounts[].credit_limits.credit_limit | string | null | Com valor predefinido |
accounts[].credit_limits.available_credit | string | null | Com valor predefinido |
accounts[].credit_limits.cash_advance_limit | string | null | Com valor predefinido |
accounts[].credit_limits.available_cash | string | null | Com valor predefinido |
accounts[].credit_limits.over_limit_amount | string | null | Com valor predefinido |
accounts[].summary | object | Com valor predefinido |
accounts[].summary.previous_balance | string | null | Com valor predefinido |
accounts[].summary.payments | string | null | Com valor predefinido |
accounts[].summary.credits_returns | string | null | Com valor predefinido |
accounts[].summary.purchases | string | null | Com valor predefinido |
accounts[].summary.cash_advances | string | null | Com valor predefinido |
accounts[].summary.balance_transfers | string | null | Com valor predefinido |
accounts[].summary.fees_charged | string | null | Com valor predefinido |
accounts[].summary.interest_charged | string | null | Com valor predefinido |
accounts[].summary.adjustments | string | null | Com valor predefinido |
accounts[].summary.new_balance | string | null | Com valor predefinido |
accounts[].transactions | array<object> | Com valor predefinido |
accounts[].transactions[].trntype | string | null | Com valor predefinido |
accounts[].transactions[].dtposted | string | null | Com valor predefinido |
accounts[].transactions[].dtuser | string | null | Com valor predefinido |
accounts[].transactions[].trnamt | string | null | Com valor predefinido |
accounts[].transactions[].name | string | null | Com valor predefinido |
accounts[].transactions[].memo | string | null | Com valor predefinido |
accounts[].transactions[].fitid | string | null | Com valor predefinido |
accounts[].transactions[].refnum | string | null | Com valor predefinido |
accounts[].transactions[].card_last4 | string | null | Com valor predefinido |
accounts[].transactions[].cardholder_name | string | null | Com valor predefinido |
accounts[].transactions[].is_foreign | boolean | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
reconciliation_warnings | array<string> | Com valor predefinido |
As tabelas associam campos de saída a caminhos JSON. || indica o primeiro valor não vazio; ?? um valor alternativo para null. Numeração, descrições combinadas e formatação são regras de exportação. Valores em falta tornam-se geralmente células vazias.
O layout plano contém transações com campos repetidos do extrato e da conta. O não plano inclui secções por conta para transações, saldos, limites e resumos. Várias contas alteram o número de secções.
Plano
Transactions repete os dados do documento e da conta por transação. Se faltarem transações ou contas, a exportação plana cria ainda uma linha de identificação com campos de transação vazios.
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| doc_id | doc_id |
| source_filename | source_filename |
| issuer | issuer.name |
| cardholder | accounts[].transactions[].cardholder_name || accounts[].holder.name |
| card_last4 | accounts[].transactions[].card_last4 || accounts[].account.card_last4 |
| card_network | accounts[].account.card_network |
| card_brand | accounts[].account.card_brand |
| currency | accounts[].account.currency || statement.currency_default |
| period_start | statement.period_start |
| period_end | statement.period_end |
| txn_no | index(accounts[].transactions[]) + 1 |
| date | accounts[].transactions[].dtposted |
| posted_date | accounts[].transactions[].dtuser |
| description | joinDistinct(accounts[].transactions[].name, accounts[].transactions[].memo, " - ") |
| reference | accounts[].transactions[].refnum |
| type | accounts[].transactions[].trntype |
| amount | accounts[].transactions[].trnamt |
| is_foreign | accounts[].transactions[].is_foreign → Yes / No / "" |
Não plano
Cada conta tem tabelas próprias de transações e detalhes, lado a lado no Excel e CSV. Os dados do extrato acompanham a primeira conta; os avisos aparecem apenas quando existem. O Word empilha as secções. As linhas campo/valor estão detalhadas abaixo.
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(accounts[].transactions[]) + 1 |
| Date | accounts[].transactions[].dtposted |
| Posted | accounts[].transactions[].dtuser |
| Description | joinDistinct(accounts[].transactions[].name, accounts[].transactions[].memo, " - ") |
| Reference | accounts[].transactions[].refnum |
| Type | accounts[].transactions[].trntype |
| Card last 4 | accounts[].transactions[].card_last4 || accounts[].account.card_last4 |
| Amount | accounts[].transactions[].trnamt |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Holder | accounts[].holder.name |
| Card last 4 | accounts[].account.card_last4 |
| Card network | accounts[].account.card_network |
| Card brand | accounts[].account.card_brand |
| Card product | accounts[].account.card_product |
| Card type | accounts[].account.card_type |
| Account number | accounts[].account.account_number_masked || accounts[].account.account_number |
| Currency | accounts[].account.currency |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Previous balance | accounts[].balances.previous_balance.amount |
| Previous balance as of | accounts[].balances.previous_balance.as_of |
| New balance | accounts[].balances.new_balance.amount |
| New balance as of | accounts[].balances.new_balance.as_of |
| Statement balance | accounts[].balances.statement_balance |
| Minimum payment | accounts[].balances.minimum_payment_due |
| Payment due date | accounts[].balances.payment_due_date |
| Past due | accounts[].balances.past_due_amount |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Credit limit | accounts[].credit_limits.credit_limit |
| Available credit | accounts[].credit_limits.available_credit |
| Cash advance limit | accounts[].credit_limits.cash_advance_limit |
| Available cash | accounts[].credit_limits.available_cash |
| Over limit | accounts[].credit_limits.over_limit_amount |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Previous balance | accounts[].summary.previous_balance |
| Payments | accounts[].summary.payments |
| Credits / returns | accounts[].summary.credits_returns |
| Purchases | accounts[].summary.purchases |
| Cash advances | accounts[].summary.cash_advances |
| Balance transfers | accounts[].summary.balance_transfers |
| Fees charged | accounts[].summary.fees_charged |
| Interest charged | accounts[].summary.interest_charged |
| Adjustments | accounts[].summary.adjustments |
| New balance | accounts[].summary.new_balance |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Doc ID | doc_id |
| Source | source_filename |
| Issuer | issuer.name |
| Statement date | statement.statement_date |
| Period start | statement.period_start |
| Period end | statement.period_end |
| Page count | statement.page_count |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Ambas as exportações combinam transações de todas as contas. Xero ignora montantes null; QuickBooks ignora null e zero. QuickBooks prefere memo a name; uma descrição apenas numérica recebe o prefixo trntype, name ou “Txn”. Os montantes de cartão têm o sinal invertido. Não existe uma coluna separada para identificar a conta.
Xero CSV
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| *Date | accounts[].transactions[].dtposted → DD/MM/YYYY |
| *Amount | −accounts[].transactions[].trnamt |
| Payee | accounts[].transactions[].name |
| Description | joinDistinct(accounts[].transactions[].name, accounts[].transactions[].memo, " - ") |
| Reference | accounts[].transactions[].refnum |
| Cheque Number | Vazio |
| Account code* | Vazio |
| Tax Rate (Display Name)* | Vazio |
| Tracking1 | Vazio |
| Tracking2 | Vazio |
| Transaction Type | accounts[].transactions[].trntype |
| Analysis code | Vazio |
QuickBooks CSV
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Date | accounts[].transactions[].dtposted → DD/MM/YYYY |
| Description | accounts[].transactions[].memo || accounts[].transactions[].name || accounts[].transactions[].trntype || "Transaction" |
| Amount | −accounts[].transactions[].trnamt |
Recibo de Vencimento
Período, trabalhador, empregador, taxas, rendimentos, deduções, impostos, contribuições e totais. current_amount refere-se ao período; ytd_amount ao acumulado anual.
Campos JSON
Os tipos descrevem JSON serializado. Objetos e arrays precedem os seus campos; [] indica entradas repetidas. Campos predefinidos não têm de ser fornecidos pela extração. Os decimais são serializados como cadeias de texto. Os ficheiros mantêm os campos predefinidos; um valor não extraído não equivale a uma chave JSON omitida.
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
statement | object | Com valor predefinido |
statement.issue_date | string | null | Com valor predefinido |
statement.pay_date | string | null | Com valor predefinido |
statement.period_start | string | null | Com valor predefinido |
statement.period_end | string | null | Com valor predefinido |
statement.period_type | string | null | Com valor predefinido |
statement.tax_year | integer | null | Com valor predefinido |
statement.currency | string | null | Com valor predefinido |
statement.country | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
employee | object | Com valor predefinido |
employee.name | string | null | Com valor predefinido |
employee.pay_frequency | string | null | Com valor predefinido |
employee.employment_type | string | null | Com valor predefinido |
employee.employment_status | string | null | Com valor predefinido |
employee.filing_status | string | null | Com valor predefinido |
employee.tax_code | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
employer | object | Com valor predefinido |
employer.name | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
rates | object | Com valor predefinido |
rates.base_pay_rate | string | null | Com valor predefinido |
rates.base_pay_unit | string | null | Com valor predefinido |
rates.annual_salary | string | null | Com valor predefinido |
rates.regular_hours_per_period | string | null | Com valor predefinido |
rates.overtime_multiplier | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
earnings | array<object> | Com valor predefinido |
earnings[].code | string | null | Com valor predefinido |
earnings[].description | string | null | Com valor predefinido |
earnings[].category | string | null | Com valor predefinido |
earnings[].jurisdiction | string | null | Com valor predefinido |
earnings[].hours | string | null | Com valor predefinido |
earnings[].rate | string | null | Com valor predefinido |
earnings[].current_amount | string | null | Com valor predefinido |
earnings[].ytd_amount | string | null | Com valor predefinido |
earnings[].employer_match | string | null | Com valor predefinido |
earnings[].employer_match_ytd | string | null | Com valor predefinido |
earnings[].is_taxable | boolean | null | Com valor predefinido |
earnings[].is_imputed | boolean | null | Com valor predefinido |
earnings[].memo | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
pre_tax_deductions | array<object> | Com valor predefinido |
pre_tax_deductions[].code | string | null | Com valor predefinido |
pre_tax_deductions[].description | string | null | Com valor predefinido |
pre_tax_deductions[].category | string | null | Com valor predefinido |
pre_tax_deductions[].jurisdiction | string | null | Com valor predefinido |
pre_tax_deductions[].hours | string | null | Com valor predefinido |
pre_tax_deductions[].rate | string | null | Com valor predefinido |
pre_tax_deductions[].current_amount | string | null | Com valor predefinido |
pre_tax_deductions[].ytd_amount | string | null | Com valor predefinido |
pre_tax_deductions[].employer_match | string | null | Com valor predefinido |
pre_tax_deductions[].employer_match_ytd | string | null | Com valor predefinido |
pre_tax_deductions[].is_taxable | boolean | null | Com valor predefinido |
pre_tax_deductions[].is_imputed | boolean | null | Com valor predefinido |
pre_tax_deductions[].memo | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
taxes | array<object> | Com valor predefinido |
taxes[].code | string | null | Com valor predefinido |
taxes[].description | string | null | Com valor predefinido |
taxes[].category | string | null | Com valor predefinido |
taxes[].jurisdiction | string | null | Com valor predefinido |
taxes[].hours | string | null | Com valor predefinido |
taxes[].rate | string | null | Com valor predefinido |
taxes[].current_amount | string | null | Com valor predefinido |
taxes[].ytd_amount | string | null | Com valor predefinido |
taxes[].employer_match | string | null | Com valor predefinido |
taxes[].employer_match_ytd | string | null | Com valor predefinido |
taxes[].is_taxable | boolean | null | Com valor predefinido |
taxes[].is_imputed | boolean | null | Com valor predefinido |
taxes[].memo | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
post_tax_deductions | array<object> | Com valor predefinido |
post_tax_deductions[].code | string | null | Com valor predefinido |
post_tax_deductions[].description | string | null | Com valor predefinido |
post_tax_deductions[].category | string | null | Com valor predefinido |
post_tax_deductions[].jurisdiction | string | null | Com valor predefinido |
post_tax_deductions[].hours | string | null | Com valor predefinido |
post_tax_deductions[].rate | string | null | Com valor predefinido |
post_tax_deductions[].current_amount | string | null | Com valor predefinido |
post_tax_deductions[].ytd_amount | string | null | Com valor predefinido |
post_tax_deductions[].employer_match | string | null | Com valor predefinido |
post_tax_deductions[].employer_match_ytd | string | null | Com valor predefinido |
post_tax_deductions[].is_taxable | boolean | null | Com valor predefinido |
post_tax_deductions[].is_imputed | boolean | null | Com valor predefinido |
post_tax_deductions[].memo | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
employer_contributions | array<object> | Com valor predefinido |
employer_contributions[].code | string | null | Com valor predefinido |
employer_contributions[].description | string | null | Com valor predefinido |
employer_contributions[].category | string | null | Com valor predefinido |
employer_contributions[].jurisdiction | string | null | Com valor predefinido |
employer_contributions[].hours | string | null | Com valor predefinido |
employer_contributions[].rate | string | null | Com valor predefinido |
employer_contributions[].current_amount | string | null | Com valor predefinido |
employer_contributions[].ytd_amount | string | null | Com valor predefinido |
employer_contributions[].employer_match | string | null | Com valor predefinido |
employer_contributions[].employer_match_ytd | string | null | Com valor predefinido |
employer_contributions[].is_taxable | boolean | null | Com valor predefinido |
employer_contributions[].is_imputed | boolean | null | Com valor predefinido |
employer_contributions[].memo | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
totals | object | Com valor predefinido |
totals.gross_pay_current | string | null | Com valor predefinido |
totals.gross_pay_ytd | string | null | Com valor predefinido |
totals.taxable_gross_current | string | null | Com valor predefinido |
totals.taxable_gross_ytd | string | null | Com valor predefinido |
totals.total_pre_tax_deductions_current | string | null | Com valor predefinido |
totals.total_pre_tax_deductions_ytd | string | null | Com valor predefinido |
totals.total_taxes_current | string | null | Com valor predefinido |
totals.total_taxes_ytd | string | null | Com valor predefinido |
totals.total_post_tax_deductions_current | string | null | Com valor predefinido |
totals.total_post_tax_deductions_ytd | string | null | Com valor predefinido |
totals.total_deductions_current | string | null | Com valor predefinido |
totals.total_deductions_ytd | string | null | Com valor predefinido |
totals.total_employer_contributions_current | string | null | Com valor predefinido |
totals.total_employer_contributions_ytd | string | null | Com valor predefinido |
totals.net_pay_current | string | null | Com valor predefinido |
totals.net_pay_ytd | string | null | Com valor predefinido |
totals.hours_worked_current | string | null | Com valor predefinido |
totals.hours_worked_ytd | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
reconciliation_warnings | array<string> | Com valor predefinido |
As tabelas associam campos de saída a caminhos JSON. || indica o primeiro valor não vazio; ?? um valor alternativo para null. Numeração, descrições combinadas e formatação são regras de exportação. Valores em falta tornam-se geralmente células vazias.
Sem escolha plano/não plano. A folha Paystub contém secções de período, trabalhador, empregador, taxas, rendimentos, deduções, impostos, contribuições e totais. CSV é uma grelha de secções; Word empilha-as.
Layout próprio
Estas são as secções do formato Paystub, lado a lado no Excel e CSV e empilhadas no Word. As descrições usam description ou code e acrescentam “imputed” quando is_imputed é true e “non-taxable” quando is_taxable é false. As colunas Rate usam formato percentual. Os totais associam Current e YTD para cada Metric. Os avisos aparecem apenas quando existem.
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Gross pay / Current | totals.gross_pay_current |
| Gross pay / YTD | totals.gross_pay_ytd |
| Taxable gross / Current | totals.taxable_gross_current |
| Taxable gross / YTD | totals.taxable_gross_ytd |
| Pre-tax deductions / Current | totals.total_pre_tax_deductions_current |
| Pre-tax deductions / YTD | totals.total_pre_tax_deductions_ytd |
| Taxes / Current | totals.total_taxes_current |
| Taxes / YTD | totals.total_taxes_ytd |
| Post-tax deductions / Current | totals.total_post_tax_deductions_current |
| Post-tax deductions / YTD | totals.total_post_tax_deductions_ytd |
| Total deductions / Current | totals.total_deductions_current |
| Total deductions / YTD | totals.total_deductions_ytd |
| Employer contributions / Current | totals.total_employer_contributions_current |
| Employer contributions / YTD | totals.total_employer_contributions_ytd |
| Net pay / Current | totals.net_pay_current |
| Net pay / YTD | totals.net_pay_ytd |
| Hours worked / Current | totals.hours_worked_current |
| Hours worked / YTD | totals.hours_worked_ytd |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Doc ID | doc_id |
| Source | source_filename |
| Issue date | statement.issue_date |
| Pay date | statement.pay_date |
| Period start | statement.period_start |
| Period end | statement.period_end |
| Period type | statement.period_type |
| Tax year | statement.tax_year |
| Currency | statement.currency |
| Country | statement.country |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Name | employee.name |
| Pay frequency | employee.pay_frequency |
| Employment type | employee.employment_type |
| Employment status | employee.employment_status |
| Filing status | employee.filing_status |
| Tax code | employee.tax_code |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Name | employer.name |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| Base pay rate | rates.base_pay_rate |
| Base pay unit | rates.base_pay_unit |
| Annual salary | rates.annual_salary |
| Regular hours/period | rates.regular_hours_per_period |
| Overtime multiplier | rates.overtime_multiplier |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(earnings[]) + 1 |
| Description | earnings[].description || earnings[].code |
| Code | earnings[].code |
| Hours | earnings[].hours |
| Rate | earnings[].rate |
| Current | earnings[].current_amount |
| YTD | earnings[].ytd_amount |
| Memo | earnings[].memo |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(pre_tax_deductions[]) + 1 |
| Description | pre_tax_deductions[].description || pre_tax_deductions[].code |
| Code | pre_tax_deductions[].code |
| Current | pre_tax_deductions[].current_amount |
| YTD | pre_tax_deductions[].ytd_amount |
| Memo | pre_tax_deductions[].memo |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(taxes[]) + 1 |
| Description | taxes[].description || taxes[].code |
| Code | taxes[].code |
| Jurisdiction | taxes[].jurisdiction |
| Rate | taxes[].rate |
| Current | taxes[].current_amount |
| YTD | taxes[].ytd_amount |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(post_tax_deductions[]) + 1 |
| Description | post_tax_deductions[].description || post_tax_deductions[].code |
| Code | post_tax_deductions[].code |
| Current | post_tax_deductions[].current_amount |
| YTD | post_tax_deductions[].ytd_amount |
| Memo | post_tax_deductions[].memo |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(employer_contributions[]) + 1 |
| Description | employer_contributions[].description || employer_contributions[].code |
| Code | employer_contributions[].code |
| Current | employer_contributions[].current_amount |
| YTD | employer_contributions[].ytd_amount |
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Xero CSV
Não
QuickBooks CSV
Não
Imagem de Tabela
Título, cabeçalhos, células e notas. headers e rows[].cells seguem as colunas de origem, sem esquema financeiro fixo. O tipo de linha distingue dados, subtotais e outras funções.
Campos JSON
Os tipos descrevem JSON serializado. Objetos e arrays precedem os seus campos; [] indica entradas repetidas. Campos predefinidos não têm de ser fornecidos pela extração. Os decimais são serializados como cadeias de texto. Os ficheiros mantêm os campos predefinidos; um valor não extraído não equivale a uma chave JSON omitida.
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
title | string | null | Com valor predefinido |
caption | string | null | Com valor predefinido |
source_type | string | null | Com valor predefinido |
border_style | string | null | Com valor predefinido |
language | string | null | Com valor predefinido |
header_rows | integer | null | Com valor predefinido |
notes | string | null | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
headers | array<array<any>> | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
rows | array<object> | Com valor predefinido |
rows[].type | string | null | Com valor predefinido |
rows[].cells | array<any> | Com valor predefinido |
| Caminho do campo | Tipo JSON | Presença |
|---|---|---|
reconciliation_warnings | array<string> | Com valor predefinido |
As tabelas associam campos de saída a caminhos JSON. || indica o primeiro valor não vazio; ?? um valor alternativo para null. Numeração, descrições combinadas e formatação são regras de exportação. Valores em falta tornam-se geralmente células vazias.
Sem escolha plano/não plano. A folha Table usa cabeçalhos e células extraídos. As colunas são dinâmicas; títulos, notas e avisos podem acrescentar linhas. CSV não preserva células unidas ou estilos Excel.
Layout próprio
Os nomes das colunas vêm de headers, não de uma lista fixa. As células mantêm a ordem; linhas curtas são preenchidas e null fica vazio. title e caption surgem acima da grelha, notes e avisos abaixo. O Excel une cabeçalhos adjacentes iguais. rows[].type controla o estilo Excel/Word, sem uma coluna adicional. CSV não tem estilo. Uma linha de aviso pode usar duas colunas mesmo com apenas uma coluna de dados.
| Campo de saída | Origem JSON ou regra de exportação |
|---|---|
| title | title |
| caption | caption |
| headers[][] | headers[][] |
| rows[].cells[] | rows[].cells[] |
| Formatação das linhas (Excel / Word) | rows[].type → DATA | HEADER | SECTION | SUBTOTAL | GRAND_TOTAL |
| Largura da grelha | max(length(headers[]), length(rows[].cells)) || 1 |
| Notes | notes |
| # | index(reconciliation_warnings[]) + 1 |
| Reconciliation warnings | reconciliation_warnings[] |
Xero CSV
Não
QuickBooks CSV
Não
Valores em falta e revisão
Os campos anuláveis podem conter null; listas ausentes recebem []. Objetos aninhados podem ter campos predefinidos. Os exportadores mostram frequentemente valores em falta como células vazias. Datas e montantes podem ser normalizados; a reconciliação pode calcular totais em falta ou acrescentar avisos. doc_id e source_filename são metadados de exportação, não campos financeiros extraídos.
Reveja a origem e os valores exportados. Uma lista reconciliation_warnings vazia não comprova exatidão.