Schémas et mises en page des exports
Découvrez les champs extraits par ScanToExcel et leur présentation dans les téléchargements. Un champ pris en charge ne garantit ni sa présence dans le document ni son extraction.
Dans toutes les offres, les modèles d’export utilisent des en-têtes et des noms de champs en anglais. Le texte extrait et les en-têtes des tableaux sources restent généralement dans la langue du document. Changer la langue du site ne traduit pas les fichiers téléchargés. Les clés JSON, les libellés de feuilles prédéfinis et les en-têtes des modèles comptables restent fixes. Les dates, les nombres, les codes de devise et certaines catégories peuvent être normalisés ; vérifiez le résultat.
Choisir la sortie
- JSON
- JSON conserve les données imbriquées, dont les listes de lignes et de transactions. Le fichier contient l’objet du document, sans métadonnées de quota ou de transfert. Le réglage à plat ne modifie pas JSON.
- À plat
- Les exports à plat utilisent une grille rectangulaire avec des colonnes uniformes. Chaque ligne représente un élément ou une transaction, avec répétition des données du document si nécessaire. Chaque tableau a sa propre structure fixe de colonnes. Excel peut contenir plusieurs feuilles ; CSV contient une grille.
- Non plat
- Les exports Excel et CSV non plats placent des tableaux distincts côte à côte, chacun avec son rôle et ses colonnes : document, lignes, taxes, totaux ou avertissements. Ils ne forment pas un tableau uniforme unique. Word les empile verticalement. Les bulletins de paie et les images de tableaux utilisent des mises en page dédiées.
| Document | JSON | Mise en page | Xero CSV | QuickBooks CSV |
|---|---|---|---|---|
| Reçu | Oui | À plat / Non plat | Oui | Non |
| Facture | Oui | À plat / Non plat | Oui | Non |
| Relevé bancaire | Oui | À plat / Non plat | Oui | Oui |
| Relevé carte de crédit | Oui | À plat / Non plat | Oui | Oui |
| Fiche de paie | Oui | Mise en page dédiée | Non | Non |
| Image de tableau | Oui | Mise en page dédiée | Non | Non |
Les CSV comptables sont des options Premium avec leurs propres modèles. Ils produisent des fichiers, sans connexion directe à Xero ou QuickBooks. Vérifiez les champs et les correspondances comptables avant l’import. Tarifs
Reçu
Commerçant, date, devise, numéro, quantités, prix, taxes, paiement et totaux. Les taux fiscaux sont des fractions : 0.20 signifie 20 %.
Champs JSON
Les types décrivent le JSON sérialisé. Les objets et tableaux précèdent leurs champs ; [] indique des entrées répétées. Les champs avec valeur par défaut ne doivent pas nécessairement être fournis par l’extraction. Les décimaux sont sérialisés en chaînes. Les téléchargements conservent les champs par défaut ; une valeur non extraite ne signifie pas une clé JSON omise.
| Chemin du champ | Type JSON | Présence |
|---|---|---|
vendor | string | null | Valeur par défaut |
date | string | null | Valeur par défaut |
currency | string | null | Valeur par défaut |
document_number | string | null | Valeur par défaut |
subtotal | string | null | Valeur par défaut |
tax | string | null | Valeur par défaut |
tax_inclusive | boolean | null | Valeur par défaut |
tip | string | null | Valeur par défaut |
payment_method | string | null | Valeur par défaut |
total | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
line_items | array<object> | Valeur par défaut |
line_items[].description | string | null | Valeur par défaut |
line_items[].quantity | string | null | Valeur par défaut |
line_items[].unit_price | string | null | Valeur par défaut |
line_items[].total | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
taxes | array<object> | Valeur par défaut |
taxes[].name | string | null | Valeur par défaut |
taxes[].rate | string | null | Valeur par défaut |
taxes[].base | string | null | Valeur par défaut |
taxes[].amount | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
reconciliation_warnings | array<string> | Valeur par défaut |
À plat
Le format à plat contient les lignes et un résumé séparé dans Excel. CSV contient seulement les lignes. Les ajustements de taxe et pourboire peuvent ajouter des lignes : line_total vient de tax, taxes[].amount ou tip ; description est générée, quantity, unit_price et line_no restent vides.
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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[]) |
Non plat
Le format non plat juxtapose ces tableaux. Les données et totaux utilisent des lignes champ/valeur ; les éléments et taxes utilisent des colonnes. Les avertissements apparaissent si présents. unit_price est absent du tableau non plat des lignes.
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | index(line_items[]) + 1 |
| Description | line_items[].description |
| Qty | line_items[].quantity |
| Line total | line_items[].total |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| Doc ID | doc_id |
| Source | source_filename |
| Vendor | vendor |
| Date | date |
| Currency | currency |
| Document # | document_number |
| Payment method | payment_method |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| Name | taxes[].name |
| Rate | taxes[].rate |
| Base | taxes[].base |
| Amount | taxes[].amount |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| Subtotal | subtotal |
| Tax | tax |
| Tax inclusive | tax_inclusive |
| Tip | tip |
| Total | total |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Xero CSV
Une ligne récapitulative par reçu. Les champs sans source restent vides, dont AccountCode et TaxType. Complétez les correspondances requises avant l’import.
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| *ContactName | vendor || "Unknown vendor" |
| EmailAddress | Vide |
| POAddressLine1 | Vide |
| POAddressLine2 | Vide |
| POAddressLine3 | Vide |
| POAddressLine4 | Vide |
| POCity | Vide |
| PORegion | Vide |
| POPostalCode | Vide |
| POCountry | Vide |
| *InvoiceNumber | document_number || "RCP-" + doc_id |
| Reference | "Receipt" |
| *InvoiceDate | date → DD/MM/YYYY |
| *DueDate | date → DD/MM/YYYY |
| Total | Vide |
| InventoryItemCode | Vide |
| *Description | join(line_items[].description) || vendor || "Receipt"; tip → "(incl. tip)" |
| *Quantity | 1 |
| *UnitAmount | subtotal / total / tax / tax_inclusive / tip |
| Discount | Vide |
| *AccountCode | Vide |
| *TaxType | Vide |
| TaxAmount | tax (0 → blank) |
| TrackingName1 | Vide |
| TrackingOption1 | Vide |
| TrackingName2 | Vide |
| TrackingOption2 | Vide |
| Currency | currency |
| BrandingTheme | Vide |
UnitAmount utilise total, ou subtotal à défaut, si tax_inclusive est true. Sinon il utilise subtotal ou total moins tax si subtotal manque. Les montants absents peuvent devenir zéro. L’export ajoute ensuite tip. Vérifiez taxes et pourboires avant l’import.
QuickBooks CSV
Non
Facture
Dates et références, émetteur et destinataire, lignes, taxes, remises, retenues et totaux. unit est l’unité imprimée ; tax_rate est une fraction.
Champs JSON
Les types décrivent le JSON sérialisé. Les objets et tableaux précèdent leurs champs ; [] indique des entrées répétées. Les champs avec valeur par défaut ne doivent pas nécessairement être fournis par l’extraction. Les décimaux sont sérialisés en chaînes. Les téléchargements conservent les champs par défaut ; une valeur non extraite ne signifie pas une clé JSON omise.
| Chemin du champ | Type JSON | Présence |
|---|---|---|
invoice_number | string | null | Valeur par défaut |
issue_date | string | null | Valeur par défaut |
due_date | string | null | Valeur par défaut |
currency | string | null | Valeur par défaut |
payment_terms | string | null | Valeur par défaut |
purchase_order | string | null | Valeur par défaut |
notes | string | null | Valeur par défaut |
subtotal | string | null | Valeur par défaut |
discount | string | null | Valeur par défaut |
tax | string | null | Valeur par défaut |
tax_inclusive | boolean | null | Valeur par défaut |
withholdings | string | null | Valeur par défaut |
total | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
sender | object | null | Valeur par défaut |
sender.name | string | null | Valeur par défaut |
sender.address | object | null | Valeur par défaut |
sender.address.line1 | string | null | Valeur par défaut |
sender.address.line2 | string | null | Valeur par défaut |
sender.address.city | string | null | Valeur par défaut |
sender.address.region | string | null | Valeur par défaut |
sender.address.postal_code | string | null | Valeur par défaut |
sender.address.country | string | null | Valeur par défaut |
sender.address.raw | string | null | Valeur par défaut |
sender.tax_id | string | null | Valeur par défaut |
sender.email | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
receiver | object | null | Valeur par défaut |
receiver.name | string | null | Valeur par défaut |
receiver.address | object | null | Valeur par défaut |
receiver.address.line1 | string | null | Valeur par défaut |
receiver.address.line2 | string | null | Valeur par défaut |
receiver.address.city | string | null | Valeur par défaut |
receiver.address.region | string | null | Valeur par défaut |
receiver.address.postal_code | string | null | Valeur par défaut |
receiver.address.country | string | null | Valeur par défaut |
receiver.address.raw | string | null | Valeur par défaut |
receiver.tax_id | string | null | Valeur par défaut |
receiver.email | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
line_items | array<object> | Valeur par défaut |
line_items[].description | string | null | Valeur par défaut |
line_items[].quantity | string | null | Valeur par défaut |
line_items[].unit | string | null | Valeur par défaut |
line_items[].unit_price | string | null | Valeur par défaut |
line_items[].total | string | null | Valeur par défaut |
line_items[].tax_rate | string | null | Valeur par défaut |
line_items[].tax_amount | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
taxes | array<object> | Valeur par défaut |
taxes[].name | string | null | Valeur par défaut |
taxes[].rate | string | null | Valeur par défaut |
taxes[].base | string | null | Valeur par défaut |
taxes[].amount | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
reconciliation_warnings | array<string> | Valeur par défaut |
Les tableaux relient les champs de sortie aux chemins JSON. || désigne la première valeur non vide ; ?? une valeur de remplacement pour null. Numérotation, descriptions combinées et mise en forme sont des règles d’export. Les valeurs absentes deviennent généralement des cellules vides.
Le format à plat contient les lignes avec les données de facture répétées. Le format non plat regroupe facture, parties, lignes, taxes, totaux et avertissements ; Word dispose les sections verticalement.
À plat
Lines contient une ligne par article avec les données de facture répétées. Les lignes d’ajustement utilisent −discount, taxes[].amount (ou tax) si tax_inclusive n’est pas true, et −withholdings. Leurs descriptions sont générées ; line_no, quantity, unit et unit_price restent vides. Une facture sans articles produit aussi une ligne de document.
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
Non plat
Ces tableaux sont côte à côte dans Excel et CSV ; Word les empile. Le tableau des articles Excel omet actuellement Line total. CSV et Word l’incluent. Les détails du document et les totaux utilisent des lignes champ/valeur. Les avertissements apparaissent seulement s’ils existent.
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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) |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| Name | taxes[].name |
| Rate | taxes[].rate |
| Base | taxes[].base |
| Amount | taxes[].amount |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| Subtotal | subtotal |
| Discount | discount |
| Tax | tax |
| Tax inclusive | tax_inclusive |
| Withholdings | withholdings |
| Total | total |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Xero CSV
Une ligne par article avec les coordonnées du destinataire répétées. Sans articles, une ligne de remplacement utilise notes (ou “Invoice”) pour Description, 1 pour Quantity, total (ou subtotal) pour UnitAmount et tax pour TaxAmount. TaxAmount égal à zéro reste vide. Les colonnes sans correspondance restent vides ; aucun ajustement distinct de remise ou de retenue n’est ajouté.
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| *ContactName | receiver.name || "Unknown customer" |
| EmailAddress | receiver.email |
| POAddressLine1 | receiver.address.line1 |
| POAddressLine2 | receiver.address.line2 |
| POAddressLine3 | Vide |
| POAddressLine4 | Vide |
| 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 | Vide |
| InventoryItemCode | Vide |
| *Description | line_items[].description |
| *Quantity | line_items[].quantity ?? 1 |
| *UnitAmount | line_items[].unit_price ?? (line_items[].total / (line_items[].quantity || 1)) |
| Discount | Vide |
| *AccountCode | Vide |
| *TaxType | Vide |
| TaxAmount | line_items[].tax_amount (0 → "") |
| TrackingName1 | Vide |
| TrackingOption1 | Vide |
| TrackingName2 | Vide |
| TrackingOption2 | Vide |
| Currency | currency |
| BrandingTheme | Vide |
QuickBooks CSV
Non
Relevé bancaire
Émetteur, période et comptes avec identité, soldes, totaux et transactions. trnamt est négatif pour les retraits, positif pour les dépôts. dtposted est la date comptable ; dtuser, la date de valeur.
Champs JSON
Les types décrivent le JSON sérialisé. Les objets et tableaux précèdent leurs champs ; [] indique des entrées répétées. Les champs avec valeur par défaut ne doivent pas nécessairement être fournis par l’extraction. Les décimaux sont sérialisés en chaînes. Les téléchargements conservent les champs par défaut ; une valeur non extraite ne signifie pas une clé JSON omise.
| Chemin du champ | Type JSON | Présence |
|---|---|---|
issuer | object | Valeur par défaut |
issuer.name | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
statement | object | Valeur par défaut |
statement.statement_date | string | null | Valeur par défaut |
statement.period_start | string | null | Valeur par défaut |
statement.period_end | string | null | Valeur par défaut |
statement.currency_default | string | null | Valeur par défaut |
statement.page_count | integer | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
accounts | array<object> | Valeur par défaut |
accounts[].holder | object | Valeur par défaut |
accounts[].holder.name | string | null | Valeur par défaut |
accounts[].account | object | Valeur par défaut |
accounts[].account.account_number | string | null | Valeur par défaut |
accounts[].account.account_number_masked | string | null | Valeur par défaut |
accounts[].account.iban | string | null | Valeur par défaut |
accounts[].account.bic | string | null | Valeur par défaut |
accounts[].account.sort_code | string | null | Valeur par défaut |
accounts[].account.account_type | string | null | Valeur par défaut |
accounts[].account.account_name | string | null | Valeur par défaut |
accounts[].account.currency | string | null | Valeur par défaut |
accounts[].account.card_last4 | string | null | Valeur par défaut |
accounts[].balances | object | Valeur par défaut |
accounts[].balances.opening | object | Valeur par défaut |
accounts[].balances.opening.amount | string | null | Valeur par défaut |
accounts[].balances.opening.as_of | string | null | Valeur par défaut |
accounts[].balances.closing | object | Valeur par défaut |
accounts[].balances.closing.amount | string | null | Valeur par défaut |
accounts[].balances.closing.as_of | string | null | Valeur par défaut |
accounts[].balances.available | string | null | Valeur par défaut |
accounts[].totals | object | Valeur par défaut |
accounts[].totals.credits_count | integer | null | Valeur par défaut |
accounts[].totals.credits_amount | string | null | Valeur par défaut |
accounts[].totals.debits_count | integer | null | Valeur par défaut |
accounts[].totals.debits_amount | string | null | Valeur par défaut |
accounts[].totals.fees_charged | string | null | Valeur par défaut |
accounts[].totals.interest_paid | string | null | Valeur par défaut |
accounts[].totals.interest_charged | string | null | Valeur par défaut |
accounts[].transactions | array<object> | Valeur par défaut |
accounts[].transactions[].trntype | string | null | Valeur par défaut |
accounts[].transactions[].dtposted | string | null | Valeur par défaut |
accounts[].transactions[].dtuser | string | null | Valeur par défaut |
accounts[].transactions[].trnamt | string | null | Valeur par défaut |
accounts[].transactions[].name | string | null | Valeur par défaut |
accounts[].transactions[].memo | string | null | Valeur par défaut |
accounts[].transactions[].running_balance | string | null | Valeur par défaut |
accounts[].transactions[].fitid | string | null | Valeur par défaut |
accounts[].transactions[].refnum | string | null | Valeur par défaut |
accounts[].transactions[].checknum | string | null | Valeur par défaut |
accounts[].transactions[].card_last4 | string | null | Valeur par défaut |
accounts[].transactions[].fee | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
reconciliation_warnings | array<string> | Valeur par défaut |
Les tableaux relient les champs de sortie aux chemins JSON. || désigne la première valeur non vide ; ?? une valeur de remplacement pour null. Numérotation, descriptions combinées et mise en forme sont des règles d’export. Les valeurs absentes deviennent généralement des cellules vides.
Le format à plat contient les transactions avec les données de relevé et de compte répétées. Le format non plat regroupe le relevé et les transactions, soldes et totaux de chaque compte. Les sections dépendent du document.
À plat
Transactions répète les données du document et du compte pour chaque transaction. Sans transactions ou comptes, l’export plat produit tout de même une ligne d’identification aux champs de transaction vides.
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
Non plat
Chaque compte a ses tableaux de transactions et de détails, côte à côte dans Excel et CSV. Les détails du relevé accompagnent le premier compte ; les avertissements apparaissent seulement s’ils existent. Word empile les sections. Les lignes champ/valeur sont détaillées ci-dessous.
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Les deux exports regroupent les transactions de tous les comptes. Xero ignore les montants null ; QuickBooks ignore null et zéro. QuickBooks privilégie memo à name ; une description purement numérique reçoit le préfixe trntype, name ou “Txn”. Les montants des cartes changent de signe. Aucune colonne distincte n’identifie le compte.
Xero CSV
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| *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* | Vide |
| Tax Rate (Display Name)* | Vide |
| Tracking1 | Vide |
| Tracking2 | Vide |
| Transaction Type | accounts[].transactions[].trntype |
| Analysis code | Vide |
QuickBooks CSV
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| Date | accounts[].transactions[].dtposted → DD/MM/YYYY |
| Description | accounts[].transactions[].memo || accounts[].transactions[].name || accounts[].transactions[].trntype || "Transaction" |
| Amount | accounts[].transactions[].trnamt |
Relevé carte de crédit
Émetteur, période, comptes, soldes, limites, résumés et transactions. trnamt est positif pour les débits, négatif pour les paiements et remboursements, contrairement aux achats bancaires.
Champs JSON
Les types décrivent le JSON sérialisé. Les objets et tableaux précèdent leurs champs ; [] indique des entrées répétées. Les champs avec valeur par défaut ne doivent pas nécessairement être fournis par l’extraction. Les décimaux sont sérialisés en chaînes. Les téléchargements conservent les champs par défaut ; une valeur non extraite ne signifie pas une clé JSON omise.
| Chemin du champ | Type JSON | Présence |
|---|---|---|
issuer | object | Valeur par défaut |
issuer.name | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
statement | object | Valeur par défaut |
statement.statement_date | string | null | Valeur par défaut |
statement.period_start | string | null | Valeur par défaut |
statement.period_end | string | null | Valeur par défaut |
statement.currency_default | string | null | Valeur par défaut |
statement.page_count | integer | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
accounts | array<object> | Valeur par défaut |
accounts[].holder | object | Valeur par défaut |
accounts[].holder.name | string | null | Valeur par défaut |
accounts[].account | object | Valeur par défaut |
accounts[].account.account_number | string | null | Valeur par défaut |
accounts[].account.account_number_masked | string | null | Valeur par défaut |
accounts[].account.card_last4 | string | null | Valeur par défaut |
accounts[].account.bin | string | null | Valeur par défaut |
accounts[].account.card_network | string | null | Valeur par défaut |
accounts[].account.card_brand | string | null | Valeur par défaut |
accounts[].account.card_product | string | null | Valeur par défaut |
accounts[].account.card_type | string | null | Valeur par défaut |
accounts[].account.currency | string | null | Valeur par défaut |
accounts[].balances | object | Valeur par défaut |
accounts[].balances.previous_balance | object | Valeur par défaut |
accounts[].balances.previous_balance.amount | string | null | Valeur par défaut |
accounts[].balances.previous_balance.as_of | string | null | Valeur par défaut |
accounts[].balances.new_balance | object | Valeur par défaut |
accounts[].balances.new_balance.amount | string | null | Valeur par défaut |
accounts[].balances.new_balance.as_of | string | null | Valeur par défaut |
accounts[].balances.statement_balance | string | null | Valeur par défaut |
accounts[].balances.minimum_payment_due | string | null | Valeur par défaut |
accounts[].balances.payment_due_date | string | null | Valeur par défaut |
accounts[].balances.past_due_amount | string | null | Valeur par défaut |
accounts[].credit_limits | object | Valeur par défaut |
accounts[].credit_limits.credit_limit | string | null | Valeur par défaut |
accounts[].credit_limits.available_credit | string | null | Valeur par défaut |
accounts[].credit_limits.cash_advance_limit | string | null | Valeur par défaut |
accounts[].credit_limits.available_cash | string | null | Valeur par défaut |
accounts[].credit_limits.over_limit_amount | string | null | Valeur par défaut |
accounts[].summary | object | Valeur par défaut |
accounts[].summary.previous_balance | string | null | Valeur par défaut |
accounts[].summary.payments | string | null | Valeur par défaut |
accounts[].summary.credits_returns | string | null | Valeur par défaut |
accounts[].summary.purchases | string | null | Valeur par défaut |
accounts[].summary.cash_advances | string | null | Valeur par défaut |
accounts[].summary.balance_transfers | string | null | Valeur par défaut |
accounts[].summary.fees_charged | string | null | Valeur par défaut |
accounts[].summary.interest_charged | string | null | Valeur par défaut |
accounts[].summary.adjustments | string | null | Valeur par défaut |
accounts[].summary.new_balance | string | null | Valeur par défaut |
accounts[].transactions | array<object> | Valeur par défaut |
accounts[].transactions[].trntype | string | null | Valeur par défaut |
accounts[].transactions[].dtposted | string | null | Valeur par défaut |
accounts[].transactions[].dtuser | string | null | Valeur par défaut |
accounts[].transactions[].trnamt | string | null | Valeur par défaut |
accounts[].transactions[].name | string | null | Valeur par défaut |
accounts[].transactions[].memo | string | null | Valeur par défaut |
accounts[].transactions[].fitid | string | null | Valeur par défaut |
accounts[].transactions[].refnum | string | null | Valeur par défaut |
accounts[].transactions[].card_last4 | string | null | Valeur par défaut |
accounts[].transactions[].cardholder_name | string | null | Valeur par défaut |
accounts[].transactions[].is_foreign | boolean | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
reconciliation_warnings | array<string> | Valeur par défaut |
Les tableaux relient les champs de sortie aux chemins JSON. || désigne la première valeur non vide ; ?? une valeur de remplacement pour null. Numérotation, descriptions combinées et mise en forme sont des règles d’export. Les valeurs absentes deviennent généralement des cellules vides.
Le format à plat contient les transactions avec les champs de relevé et de compte répétés. Le format non plat contient des sections par compte pour transactions, soldes, limites et résumés. Plusieurs comptes modifient le nombre de sections.
À plat
Transactions répète les données du document et du compte pour chaque transaction. Sans transactions ou comptes, l’export plat produit tout de même une ligne d’identification aux champs de transaction vides.
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 / "" |
Non plat
Chaque compte a ses tableaux de transactions et de détails, côte à côte dans Excel et CSV. Les détails du relevé accompagnent le premier compte ; les avertissements apparaissent seulement s’ils existent. Word empile les sections. Les lignes champ/valeur sont détaillées ci-dessous.
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Les deux exports regroupent les transactions de tous les comptes. Xero ignore les montants null ; QuickBooks ignore null et zéro. QuickBooks privilégie memo à name ; une description purement numérique reçoit le préfixe trntype, name ou “Txn”. Les montants des cartes changent de signe. Aucune colonne distincte n’identifie le compte.
Xero CSV
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| *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 | Vide |
| Account code* | Vide |
| Tax Rate (Display Name)* | Vide |
| Tracking1 | Vide |
| Tracking2 | Vide |
| Transaction Type | accounts[].transactions[].trntype |
| Analysis code | Vide |
QuickBooks CSV
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| Date | accounts[].transactions[].dtposted → DD/MM/YYYY |
| Description | accounts[].transactions[].memo || accounts[].transactions[].name || accounts[].transactions[].trntype || "Transaction" |
| Amount | −accounts[].transactions[].trnamt |
Fiche de paie
Période, salarié, employeur, taux, revenus, retenues, taxes, cotisations et totaux. current_amount concerne la période ; ytd_amount, le cumul annuel.
Champs JSON
Les types décrivent le JSON sérialisé. Les objets et tableaux précèdent leurs champs ; [] indique des entrées répétées. Les champs avec valeur par défaut ne doivent pas nécessairement être fournis par l’extraction. Les décimaux sont sérialisés en chaînes. Les téléchargements conservent les champs par défaut ; une valeur non extraite ne signifie pas une clé JSON omise.
| Chemin du champ | Type JSON | Présence |
|---|---|---|
statement | object | Valeur par défaut |
statement.issue_date | string | null | Valeur par défaut |
statement.pay_date | string | null | Valeur par défaut |
statement.period_start | string | null | Valeur par défaut |
statement.period_end | string | null | Valeur par défaut |
statement.period_type | string | null | Valeur par défaut |
statement.tax_year | integer | null | Valeur par défaut |
statement.currency | string | null | Valeur par défaut |
statement.country | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
employee | object | Valeur par défaut |
employee.name | string | null | Valeur par défaut |
employee.pay_frequency | string | null | Valeur par défaut |
employee.employment_type | string | null | Valeur par défaut |
employee.employment_status | string | null | Valeur par défaut |
employee.filing_status | string | null | Valeur par défaut |
employee.tax_code | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
employer | object | Valeur par défaut |
employer.name | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
rates | object | Valeur par défaut |
rates.base_pay_rate | string | null | Valeur par défaut |
rates.base_pay_unit | string | null | Valeur par défaut |
rates.annual_salary | string | null | Valeur par défaut |
rates.regular_hours_per_period | string | null | Valeur par défaut |
rates.overtime_multiplier | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
earnings | array<object> | Valeur par défaut |
earnings[].code | string | null | Valeur par défaut |
earnings[].description | string | null | Valeur par défaut |
earnings[].category | string | null | Valeur par défaut |
earnings[].jurisdiction | string | null | Valeur par défaut |
earnings[].hours | string | null | Valeur par défaut |
earnings[].rate | string | null | Valeur par défaut |
earnings[].current_amount | string | null | Valeur par défaut |
earnings[].ytd_amount | string | null | Valeur par défaut |
earnings[].employer_match | string | null | Valeur par défaut |
earnings[].employer_match_ytd | string | null | Valeur par défaut |
earnings[].is_taxable | boolean | null | Valeur par défaut |
earnings[].is_imputed | boolean | null | Valeur par défaut |
earnings[].memo | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
pre_tax_deductions | array<object> | Valeur par défaut |
pre_tax_deductions[].code | string | null | Valeur par défaut |
pre_tax_deductions[].description | string | null | Valeur par défaut |
pre_tax_deductions[].category | string | null | Valeur par défaut |
pre_tax_deductions[].jurisdiction | string | null | Valeur par défaut |
pre_tax_deductions[].hours | string | null | Valeur par défaut |
pre_tax_deductions[].rate | string | null | Valeur par défaut |
pre_tax_deductions[].current_amount | string | null | Valeur par défaut |
pre_tax_deductions[].ytd_amount | string | null | Valeur par défaut |
pre_tax_deductions[].employer_match | string | null | Valeur par défaut |
pre_tax_deductions[].employer_match_ytd | string | null | Valeur par défaut |
pre_tax_deductions[].is_taxable | boolean | null | Valeur par défaut |
pre_tax_deductions[].is_imputed | boolean | null | Valeur par défaut |
pre_tax_deductions[].memo | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
taxes | array<object> | Valeur par défaut |
taxes[].code | string | null | Valeur par défaut |
taxes[].description | string | null | Valeur par défaut |
taxes[].category | string | null | Valeur par défaut |
taxes[].jurisdiction | string | null | Valeur par défaut |
taxes[].hours | string | null | Valeur par défaut |
taxes[].rate | string | null | Valeur par défaut |
taxes[].current_amount | string | null | Valeur par défaut |
taxes[].ytd_amount | string | null | Valeur par défaut |
taxes[].employer_match | string | null | Valeur par défaut |
taxes[].employer_match_ytd | string | null | Valeur par défaut |
taxes[].is_taxable | boolean | null | Valeur par défaut |
taxes[].is_imputed | boolean | null | Valeur par défaut |
taxes[].memo | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
post_tax_deductions | array<object> | Valeur par défaut |
post_tax_deductions[].code | string | null | Valeur par défaut |
post_tax_deductions[].description | string | null | Valeur par défaut |
post_tax_deductions[].category | string | null | Valeur par défaut |
post_tax_deductions[].jurisdiction | string | null | Valeur par défaut |
post_tax_deductions[].hours | string | null | Valeur par défaut |
post_tax_deductions[].rate | string | null | Valeur par défaut |
post_tax_deductions[].current_amount | string | null | Valeur par défaut |
post_tax_deductions[].ytd_amount | string | null | Valeur par défaut |
post_tax_deductions[].employer_match | string | null | Valeur par défaut |
post_tax_deductions[].employer_match_ytd | string | null | Valeur par défaut |
post_tax_deductions[].is_taxable | boolean | null | Valeur par défaut |
post_tax_deductions[].is_imputed | boolean | null | Valeur par défaut |
post_tax_deductions[].memo | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
employer_contributions | array<object> | Valeur par défaut |
employer_contributions[].code | string | null | Valeur par défaut |
employer_contributions[].description | string | null | Valeur par défaut |
employer_contributions[].category | string | null | Valeur par défaut |
employer_contributions[].jurisdiction | string | null | Valeur par défaut |
employer_contributions[].hours | string | null | Valeur par défaut |
employer_contributions[].rate | string | null | Valeur par défaut |
employer_contributions[].current_amount | string | null | Valeur par défaut |
employer_contributions[].ytd_amount | string | null | Valeur par défaut |
employer_contributions[].employer_match | string | null | Valeur par défaut |
employer_contributions[].employer_match_ytd | string | null | Valeur par défaut |
employer_contributions[].is_taxable | boolean | null | Valeur par défaut |
employer_contributions[].is_imputed | boolean | null | Valeur par défaut |
employer_contributions[].memo | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
totals | object | Valeur par défaut |
totals.gross_pay_current | string | null | Valeur par défaut |
totals.gross_pay_ytd | string | null | Valeur par défaut |
totals.taxable_gross_current | string | null | Valeur par défaut |
totals.taxable_gross_ytd | string | null | Valeur par défaut |
totals.total_pre_tax_deductions_current | string | null | Valeur par défaut |
totals.total_pre_tax_deductions_ytd | string | null | Valeur par défaut |
totals.total_taxes_current | string | null | Valeur par défaut |
totals.total_taxes_ytd | string | null | Valeur par défaut |
totals.total_post_tax_deductions_current | string | null | Valeur par défaut |
totals.total_post_tax_deductions_ytd | string | null | Valeur par défaut |
totals.total_deductions_current | string | null | Valeur par défaut |
totals.total_deductions_ytd | string | null | Valeur par défaut |
totals.total_employer_contributions_current | string | null | Valeur par défaut |
totals.total_employer_contributions_ytd | string | null | Valeur par défaut |
totals.net_pay_current | string | null | Valeur par défaut |
totals.net_pay_ytd | string | null | Valeur par défaut |
totals.hours_worked_current | string | null | Valeur par défaut |
totals.hours_worked_ytd | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
reconciliation_warnings | array<string> | Valeur par défaut |
Les tableaux relient les champs de sortie aux chemins JSON. || désigne la première valeur non vide ; ?? une valeur de remplacement pour null. Numérotation, descriptions combinées et mise en forme sont des règles d’export. Les valeurs absentes deviennent généralement des cellules vides.
Pas de choix à plat/non plat. La feuille Paystub comporte des sections pour période, salarié, employeur, taux, revenus, retenues, taxes, cotisations et totaux. CSV est une grille de sections ; Word les empile.
Mise en page dédiée
Voici les sections du format Paystub, côte à côte dans Excel et CSV et empilées dans Word. Les descriptions utilisent description ou code, avec “imputed” si is_imputed vaut true et “non-taxable” si is_taxable vaut false. Les colonnes Rate utilisent un format de pourcentage. Les totaux associent Current et YTD pour chaque Metric. Les avertissements apparaissent seulement s’ils existent.
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| Name | employer.name |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | 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 |
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Xero CSV
Non
QuickBooks CSV
Non
Image de tableau
Titre, en-têtes, cellules et notes. headers et rows[].cells suivent les colonnes sources, sans schéma financier fixe. Le type de ligne distingue données, sous-totaux et autres rôles.
Champs JSON
Les types décrivent le JSON sérialisé. Les objets et tableaux précèdent leurs champs ; [] indique des entrées répétées. Les champs avec valeur par défaut ne doivent pas nécessairement être fournis par l’extraction. Les décimaux sont sérialisés en chaînes. Les téléchargements conservent les champs par défaut ; une valeur non extraite ne signifie pas une clé JSON omise.
| Chemin du champ | Type JSON | Présence |
|---|---|---|
title | string | null | Valeur par défaut |
caption | string | null | Valeur par défaut |
source_type | string | null | Valeur par défaut |
border_style | string | null | Valeur par défaut |
language | string | null | Valeur par défaut |
header_rows | integer | null | Valeur par défaut |
notes | string | null | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
headers | array<array<any>> | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
rows | array<object> | Valeur par défaut |
rows[].type | string | null | Valeur par défaut |
rows[].cells | array<any> | Valeur par défaut |
| Chemin du champ | Type JSON | Présence |
|---|---|---|
reconciliation_warnings | array<string> | Valeur par défaut |
Les tableaux relient les champs de sortie aux chemins JSON. || désigne la première valeur non vide ; ?? une valeur de remplacement pour null. Numérotation, descriptions combinées et mise en forme sont des règles d’export. Les valeurs absentes deviennent généralement des cellules vides.
Pas de choix à plat/non plat. La feuille Table utilise les en-têtes et cellules extraits. Les colonnes sont dynamiques ; titres, notes et avertissements peuvent ajouter des lignes. CSV ne conserve pas les fusions de cellules ni les styles Excel.
Mise en page dédiée
Les noms de colonnes viennent de headers, sans liste fixe. Les cellules gardent leur ordre ; les lignes courtes sont complétées et null devient vide. title et caption précèdent la grille, notes et avertissements la suivent. Excel fusionne les en-têtes adjacents identiques. rows[].type pilote le style Excel/Word, sans colonne supplémentaire. CSV n’a pas de style. Une ligne d’avertissement peut occuper deux colonnes même avec une seule colonne de données.
| Champ de sortie | Source JSON ou règle d’export |
|---|---|
| title | title |
| caption | caption |
| headers[][] | headers[][] |
| rows[].cells[] | rows[].cells[] |
| Mise en forme des lignes (Excel / Word) | rows[].type → DATA | HEADER | SECTION | SUBTOTAL | GRAND_TOTAL |
| Largeur de la grille | max(length(headers[]), length(rows[].cells)) || 1 |
| Notes | notes |
| # | index(reconciliation_warnings[]) + 1 |
| Reconciliation warnings | reconciliation_warnings[] |
Xero CSV
Non
QuickBooks CSV
Non
Valeurs manquantes et vérification
Les champs pouvant être nuls acceptent null ; les listes absentes prennent []. Les objets imbriqués peuvent avoir leurs propres champs par défaut. Les exports affichent souvent les valeurs absentes comme des cellules vides. Dates et montants peuvent être normalisés ; le rapprochement peut calculer des totaux absents ou ajouter des avertissements. doc_id et source_filename sont des métadonnées d’export, pas des champs financiers extraits.
Vérifiez la source et les valeurs exportées. Une liste reconciliation_warnings vide ne prouve pas l’exactitude.