Esquemas y diseños de exportación
Consulta qué campos extrae ScanToExcel y cómo aparecen en las descargas. Un campo admitido no garantiza que exista en el documento ni que la extracción lo complete.
En todos los planes, las plantillas de exportación usan encabezados y nombres de campo en inglés. El texto extraído y los encabezados de las tablas de origen suelen conservar el idioma del documento. Cambiar el idioma del sitio no traduce las descargas. Las claves JSON, las etiquetas de hojas predefinidas y los encabezados de las plantillas contables permanecen fijos. Las fechas, los números, los códigos de moneda y algunas categorías pueden normalizarse; revisa el resultado.
Elige la salida
- JSON
- JSON conserva los datos anidados y las listas de elementos y transacciones. El archivo contiene el objeto del documento, sin metadatos de cuota o transferencia. La opción plana no cambia JSON.
- Plano
- Los archivos planos usan una cuadrícula rectangular de filas y columnas uniformes. Cada fila representa una partida o transacción y repite datos del documento cuando es necesario. Cada tabla tiene una estructura fija de columnas. Excel puede contener varias hojas; CSV contiene una cuadrícula.
- No plano
- Los archivos Excel y CSV no planos colocan tablas separadas una al lado de otra, cada una con su función y columnas: datos del documento, partidas, impuestos, totales o avisos. No forman una única tabla uniforme. Word apila estas tablas verticalmente. Las nóminas y las imágenes de tablas usan diseños propios.
| Documento | JSON | Diseño | Xero CSV | QuickBooks CSV |
|---|---|---|---|---|
| Recibo | Sí | Plano / No plano | Sí | No |
| Factura | Sí | Plano / No plano | Sí | No |
| Extracto bancario | Sí | Plano / No plano | Sí | Sí |
| Extracto de tarjeta | Sí | Plano / No plano | Sí | Sí |
| Nómina | Sí | Diseño propio | No | No |
| Imagen de tabla | Sí | Diseño propio | No | No |
Los CSV contables son opciones Premium con plantillas propias. Generan archivos descargables, no una conexión directa con Xero o QuickBooks. Revisa campos y asignaciones contables antes de importar. Precios
Recibo
Comercio, fecha, moneda, número de recibo, cantidades, precios, impuestos, forma de pago y totales. Los tipos fiscales son fracciones: 0.20 significa 20%.
Campos JSON
Los tipos describen JSON serializado. Los objetos y arrays preceden a sus campos; [] indica entradas repetidas. Los campos predeterminados no tienen que proceder de la extracción. Los decimales se serializan como cadenas. Las descargas conservan los campos predeterminados; un valor no extraído no equivale a una clave JSON omitida.
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
vendor | string | null | Con valor predeterminado |
date | string | null | Con valor predeterminado |
currency | string | null | Con valor predeterminado |
document_number | string | null | Con valor predeterminado |
subtotal | string | null | Con valor predeterminado |
tax | string | null | Con valor predeterminado |
tax_inclusive | boolean | null | Con valor predeterminado |
tip | string | null | Con valor predeterminado |
payment_method | string | null | Con valor predeterminado |
total | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
line_items | array<object> | Con valor predeterminado |
line_items[].description | string | null | Con valor predeterminado |
line_items[].quantity | string | null | Con valor predeterminado |
line_items[].unit_price | string | null | Con valor predeterminado |
line_items[].total | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
taxes | array<object> | Con valor predeterminado |
taxes[].name | string | null | Con valor predeterminado |
taxes[].rate | string | null | Con valor predeterminado |
taxes[].base | string | null | Con valor predeterminado |
taxes[].amount | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
reconciliation_warnings | array<string> | Con valor predeterminado |
Plano
El diseño plano incluye partidas y un resumen separado en Excel. CSV solo contiene partidas. Los ajustes fiscales y de propina pueden añadir filas: line_total procede de tax, taxes[].amount o tip; description se genera y quantity, unit_price y line_no quedan vacíos.
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| 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[]) |
No plano
El diseño no plano coloca estas tablas en paralelo. Datos y totales usan filas campo/valor; partidas e impuestos usan columnas. Los avisos aparecen si existen. unit_price no se incluye en la tabla no plana de partidas.
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| # | index(line_items[]) + 1 |
| Description | line_items[].description |
| Qty | line_items[].quantity |
| Line total | line_items[].total |
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| Doc ID | doc_id |
| Source | source_filename |
| Vendor | vendor |
| Date | date |
| Currency | currency |
| Document # | document_number |
| Payment method | payment_method |
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| Name | taxes[].name |
| Rate | taxes[].rate |
| Base | taxes[].base |
| Amount | taxes[].amount |
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| Subtotal | subtotal |
| Tax | tax |
| Tax inclusive | tax_inclusive |
| Tip | tip |
| Total | total |
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Xero CSV
Una fila resumida por recibo. Los campos sin origen quedan vacíos, incluidos AccountCode y TaxType. Completa las asignaciones necesarias antes de importar.
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| *ContactName | vendor || "Unknown vendor" |
| EmailAddress | Vacío |
| POAddressLine1 | Vacío |
| POAddressLine2 | Vacío |
| POAddressLine3 | Vacío |
| POAddressLine4 | Vacío |
| POCity | Vacío |
| PORegion | Vacío |
| POPostalCode | Vacío |
| POCountry | Vacío |
| *InvoiceNumber | document_number || "RCP-" + doc_id |
| Reference | "Receipt" |
| *InvoiceDate | date → DD/MM/YYYY |
| *DueDate | date → DD/MM/YYYY |
| Total | Vacío |
| InventoryItemCode | Vacío |
| *Description | join(line_items[].description) || vendor || "Receipt"; tip → "(incl. tip)" |
| *Quantity | 1 |
| *UnitAmount | subtotal / total / tax / tax_inclusive / tip |
| Discount | Vacío |
| *AccountCode | Vacío |
| *TaxType | Vacío |
| TaxAmount | tax (0 → blank) |
| TrackingName1 | Vacío |
| TrackingOption1 | Vacío |
| TrackingName2 | Vacío |
| TrackingOption2 | Vacío |
| Currency | currency |
| BrandingTheme | Vacío |
UnitAmount usa total, o subtotal como alternativa, si tax_inclusive es true. En otro caso usa subtotal o total menos tax si falta subtotal. Los importes ausentes pueden pasar a cero. Después suma tip. Revisa impuestos y propinas antes de importar.
QuickBooks CSV
No
Factura
Fechas y referencias, emisor y receptor, partidas, impuestos, descuentos, retenciones y totales. unit es la unidad impresa; tax_rate es una fracción.
Campos JSON
Los tipos describen JSON serializado. Los objetos y arrays preceden a sus campos; [] indica entradas repetidas. Los campos predeterminados no tienen que proceder de la extracción. Los decimales se serializan como cadenas. Las descargas conservan los campos predeterminados; un valor no extraído no equivale a una clave JSON omitida.
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
invoice_number | string | null | Con valor predeterminado |
issue_date | string | null | Con valor predeterminado |
due_date | string | null | Con valor predeterminado |
currency | string | null | Con valor predeterminado |
payment_terms | string | null | Con valor predeterminado |
purchase_order | string | null | Con valor predeterminado |
notes | string | null | Con valor predeterminado |
subtotal | string | null | Con valor predeterminado |
discount | string | null | Con valor predeterminado |
tax | string | null | Con valor predeterminado |
tax_inclusive | boolean | null | Con valor predeterminado |
withholdings | string | null | Con valor predeterminado |
total | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
sender | object | null | Con valor predeterminado |
sender.name | string | null | Con valor predeterminado |
sender.address | object | null | Con valor predeterminado |
sender.address.line1 | string | null | Con valor predeterminado |
sender.address.line2 | string | null | Con valor predeterminado |
sender.address.city | string | null | Con valor predeterminado |
sender.address.region | string | null | Con valor predeterminado |
sender.address.postal_code | string | null | Con valor predeterminado |
sender.address.country | string | null | Con valor predeterminado |
sender.address.raw | string | null | Con valor predeterminado |
sender.tax_id | string | null | Con valor predeterminado |
sender.email | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
receiver | object | null | Con valor predeterminado |
receiver.name | string | null | Con valor predeterminado |
receiver.address | object | null | Con valor predeterminado |
receiver.address.line1 | string | null | Con valor predeterminado |
receiver.address.line2 | string | null | Con valor predeterminado |
receiver.address.city | string | null | Con valor predeterminado |
receiver.address.region | string | null | Con valor predeterminado |
receiver.address.postal_code | string | null | Con valor predeterminado |
receiver.address.country | string | null | Con valor predeterminado |
receiver.address.raw | string | null | Con valor predeterminado |
receiver.tax_id | string | null | Con valor predeterminado |
receiver.email | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
line_items | array<object> | Con valor predeterminado |
line_items[].description | string | null | Con valor predeterminado |
line_items[].quantity | string | null | Con valor predeterminado |
line_items[].unit | string | null | Con valor predeterminado |
line_items[].unit_price | string | null | Con valor predeterminado |
line_items[].total | string | null | Con valor predeterminado |
line_items[].tax_rate | string | null | Con valor predeterminado |
line_items[].tax_amount | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
taxes | array<object> | Con valor predeterminado |
taxes[].name | string | null | Con valor predeterminado |
taxes[].rate | string | null | Con valor predeterminado |
taxes[].base | string | null | Con valor predeterminado |
taxes[].amount | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
reconciliation_warnings | array<string> | Con valor predeterminado |
Las tablas relacionan campos de salida con rutas JSON. || indica el primer valor no vacío; ?? un valor alternativo para null. La numeración, las descripciones combinadas y el formato son reglas de exportación. Los valores ausentes suelen quedar en blanco.
El diseño plano contiene partidas con datos repetidos de la factura. El no plano agrupa datos, partes, partidas, impuestos, totales y avisos; Word dispone las secciones verticalmente.
Plano
Lines contiene una fila por partida con los datos de factura repetidos. Las filas de ajuste usan −discount, taxes[].amount (o tax) cuando tax_inclusive no es true, y −withholdings. Sus descripciones se generan; line_no, quantity, unit y unit_price quedan vacíos. Una factura sin partidas también genera una fila de documento.
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| 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 |
No plano
Estas tablas aparecen una junto a otra en Excel y CSV; Word las apila. La tabla de partidas de Excel omite actualmente Line total. CSV y Word lo incluyen. Los datos del documento y los totales usan filas campo/valor. Las advertencias aparecen solo si existen.
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| # | 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 salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| Name | taxes[].name |
| Rate | taxes[].rate |
| Base | taxes[].base |
| Amount | taxes[].amount |
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| Subtotal | subtotal |
| Discount | discount |
| Tax | tax |
| Tax inclusive | tax_inclusive |
| Withholdings | withholdings |
| Total | total |
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Xero CSV
Una fila por partida con los datos del destinatario repetidos. Sin partidas, una fila alternativa usa notes (o “Invoice”) como Description, 1 como Quantity, total (o subtotal) como UnitAmount y tax como TaxAmount. TaxAmount con valor cero queda vacío. Las columnas sin asignación quedan vacías; no se añaden ajustes separados de descuentos o retenciones.
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| *ContactName | receiver.name || "Unknown customer" |
| EmailAddress | receiver.email |
| POAddressLine1 | receiver.address.line1 |
| POAddressLine2 | receiver.address.line2 |
| POAddressLine3 | Vacío |
| POAddressLine4 | Vacío |
| 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 | Vacío |
| InventoryItemCode | Vacío |
| *Description | line_items[].description |
| *Quantity | line_items[].quantity ?? 1 |
| *UnitAmount | line_items[].unit_price ?? (line_items[].total / (line_items[].quantity || 1)) |
| Discount | Vacío |
| *AccountCode | Vacío |
| *TaxType | Vacío |
| TaxAmount | line_items[].tax_amount (0 → "") |
| TrackingName1 | Vacío |
| TrackingOption1 | Vacío |
| TrackingName2 | Vacío |
| TrackingOption2 | Vacío |
| Currency | currency |
| BrandingTheme | Vacío |
QuickBooks CSV
No
Extracto bancario
Emisor, período y cuentas con identidad, saldos, totales y transacciones. trnamt es negativo para salidas y positivo para ingresos. dtposted es la fecha contable; dtuser, la fecha valor.
Campos JSON
Los tipos describen JSON serializado. Los objetos y arrays preceden a sus campos; [] indica entradas repetidas. Los campos predeterminados no tienen que proceder de la extracción. Los decimales se serializan como cadenas. Las descargas conservan los campos predeterminados; un valor no extraído no equivale a una clave JSON omitida.
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
issuer | object | Con valor predeterminado |
issuer.name | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
statement | object | Con valor predeterminado |
statement.statement_date | string | null | Con valor predeterminado |
statement.period_start | string | null | Con valor predeterminado |
statement.period_end | string | null | Con valor predeterminado |
statement.currency_default | string | null | Con valor predeterminado |
statement.page_count | integer | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
accounts | array<object> | Con valor predeterminado |
accounts[].holder | object | Con valor predeterminado |
accounts[].holder.name | string | null | Con valor predeterminado |
accounts[].account | object | Con valor predeterminado |
accounts[].account.account_number | string | null | Con valor predeterminado |
accounts[].account.account_number_masked | string | null | Con valor predeterminado |
accounts[].account.iban | string | null | Con valor predeterminado |
accounts[].account.bic | string | null | Con valor predeterminado |
accounts[].account.sort_code | string | null | Con valor predeterminado |
accounts[].account.account_type | string | null | Con valor predeterminado |
accounts[].account.account_name | string | null | Con valor predeterminado |
accounts[].account.currency | string | null | Con valor predeterminado |
accounts[].account.card_last4 | string | null | Con valor predeterminado |
accounts[].balances | object | Con valor predeterminado |
accounts[].balances.opening | object | Con valor predeterminado |
accounts[].balances.opening.amount | string | null | Con valor predeterminado |
accounts[].balances.opening.as_of | string | null | Con valor predeterminado |
accounts[].balances.closing | object | Con valor predeterminado |
accounts[].balances.closing.amount | string | null | Con valor predeterminado |
accounts[].balances.closing.as_of | string | null | Con valor predeterminado |
accounts[].balances.available | string | null | Con valor predeterminado |
accounts[].totals | object | Con valor predeterminado |
accounts[].totals.credits_count | integer | null | Con valor predeterminado |
accounts[].totals.credits_amount | string | null | Con valor predeterminado |
accounts[].totals.debits_count | integer | null | Con valor predeterminado |
accounts[].totals.debits_amount | string | null | Con valor predeterminado |
accounts[].totals.fees_charged | string | null | Con valor predeterminado |
accounts[].totals.interest_paid | string | null | Con valor predeterminado |
accounts[].totals.interest_charged | string | null | Con valor predeterminado |
accounts[].transactions | array<object> | Con valor predeterminado |
accounts[].transactions[].trntype | string | null | Con valor predeterminado |
accounts[].transactions[].dtposted | string | null | Con valor predeterminado |
accounts[].transactions[].dtuser | string | null | Con valor predeterminado |
accounts[].transactions[].trnamt | string | null | Con valor predeterminado |
accounts[].transactions[].name | string | null | Con valor predeterminado |
accounts[].transactions[].memo | string | null | Con valor predeterminado |
accounts[].transactions[].running_balance | string | null | Con valor predeterminado |
accounts[].transactions[].fitid | string | null | Con valor predeterminado |
accounts[].transactions[].refnum | string | null | Con valor predeterminado |
accounts[].transactions[].checknum | string | null | Con valor predeterminado |
accounts[].transactions[].card_last4 | string | null | Con valor predeterminado |
accounts[].transactions[].fee | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
reconciliation_warnings | array<string> | Con valor predeterminado |
Las tablas relacionan campos de salida con rutas JSON. || indica el primer valor no vacío; ?? un valor alternativo para null. La numeración, las descripciones combinadas y el formato son reglas de exportación. Los valores ausentes suelen quedar en blanco.
El diseño plano contiene transacciones con datos repetidos del extracto y la cuenta. El no plano agrupa los datos del extracto y las transacciones, saldos y totales de cada cuenta. Las secciones dependen del documento.
Plano
Transactions repite los datos del documento y de la cuenta por transacción. Si faltan transacciones o cuentas, la exportación plana escribe una fila de identificación con campos de transacción vacíos.
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| 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 |
No plano
Cada cuenta tiene sus tablas de transacciones y datos, una junto a otra en Excel y CSV. Los datos del extracto acompañan a la primera cuenta; las advertencias aparecen solo si existen. Word apila las secciones. Las filas campo/valor se detallan abajo.
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| # | 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 salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Ambas exportaciones combinan las transacciones de todas las cuentas. Xero omite importes null; QuickBooks omite null y cero. QuickBooks prioriza memo sobre name; una descripción solo numérica recibe el prefijo trntype, name o “Txn”. Los importes de tarjeta cambian de signo. No hay una columna independiente que identifique la cuenta.
Xero CSV
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| *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* | Vacío |
| Tax Rate (Display Name)* | Vacío |
| Tracking1 | Vacío |
| Tracking2 | Vacío |
| Transaction Type | accounts[].transactions[].trntype |
| Analysis code | Vacío |
QuickBooks CSV
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| Date | accounts[].transactions[].dtposted → DD/MM/YYYY |
| Description | accounts[].transactions[].memo || accounts[].transactions[].name || accounts[].transactions[].trntype || "Transaction" |
| Amount | accounts[].transactions[].trnamt |
Extracto de tarjeta
Emisor, período, cuentas, saldos, límites, resúmenes y transacciones. En trnamt los cargos son positivos y los pagos y reembolsos negativos, al contrario que las compras bancarias.
Campos JSON
Los tipos describen JSON serializado. Los objetos y arrays preceden a sus campos; [] indica entradas repetidas. Los campos predeterminados no tienen que proceder de la extracción. Los decimales se serializan como cadenas. Las descargas conservan los campos predeterminados; un valor no extraído no equivale a una clave JSON omitida.
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
issuer | object | Con valor predeterminado |
issuer.name | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
statement | object | Con valor predeterminado |
statement.statement_date | string | null | Con valor predeterminado |
statement.period_start | string | null | Con valor predeterminado |
statement.period_end | string | null | Con valor predeterminado |
statement.currency_default | string | null | Con valor predeterminado |
statement.page_count | integer | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
accounts | array<object> | Con valor predeterminado |
accounts[].holder | object | Con valor predeterminado |
accounts[].holder.name | string | null | Con valor predeterminado |
accounts[].account | object | Con valor predeterminado |
accounts[].account.account_number | string | null | Con valor predeterminado |
accounts[].account.account_number_masked | string | null | Con valor predeterminado |
accounts[].account.card_last4 | string | null | Con valor predeterminado |
accounts[].account.bin | string | null | Con valor predeterminado |
accounts[].account.card_network | string | null | Con valor predeterminado |
accounts[].account.card_brand | string | null | Con valor predeterminado |
accounts[].account.card_product | string | null | Con valor predeterminado |
accounts[].account.card_type | string | null | Con valor predeterminado |
accounts[].account.currency | string | null | Con valor predeterminado |
accounts[].balances | object | Con valor predeterminado |
accounts[].balances.previous_balance | object | Con valor predeterminado |
accounts[].balances.previous_balance.amount | string | null | Con valor predeterminado |
accounts[].balances.previous_balance.as_of | string | null | Con valor predeterminado |
accounts[].balances.new_balance | object | Con valor predeterminado |
accounts[].balances.new_balance.amount | string | null | Con valor predeterminado |
accounts[].balances.new_balance.as_of | string | null | Con valor predeterminado |
accounts[].balances.statement_balance | string | null | Con valor predeterminado |
accounts[].balances.minimum_payment_due | string | null | Con valor predeterminado |
accounts[].balances.payment_due_date | string | null | Con valor predeterminado |
accounts[].balances.past_due_amount | string | null | Con valor predeterminado |
accounts[].credit_limits | object | Con valor predeterminado |
accounts[].credit_limits.credit_limit | string | null | Con valor predeterminado |
accounts[].credit_limits.available_credit | string | null | Con valor predeterminado |
accounts[].credit_limits.cash_advance_limit | string | null | Con valor predeterminado |
accounts[].credit_limits.available_cash | string | null | Con valor predeterminado |
accounts[].credit_limits.over_limit_amount | string | null | Con valor predeterminado |
accounts[].summary | object | Con valor predeterminado |
accounts[].summary.previous_balance | string | null | Con valor predeterminado |
accounts[].summary.payments | string | null | Con valor predeterminado |
accounts[].summary.credits_returns | string | null | Con valor predeterminado |
accounts[].summary.purchases | string | null | Con valor predeterminado |
accounts[].summary.cash_advances | string | null | Con valor predeterminado |
accounts[].summary.balance_transfers | string | null | Con valor predeterminado |
accounts[].summary.fees_charged | string | null | Con valor predeterminado |
accounts[].summary.interest_charged | string | null | Con valor predeterminado |
accounts[].summary.adjustments | string | null | Con valor predeterminado |
accounts[].summary.new_balance | string | null | Con valor predeterminado |
accounts[].transactions | array<object> | Con valor predeterminado |
accounts[].transactions[].trntype | string | null | Con valor predeterminado |
accounts[].transactions[].dtposted | string | null | Con valor predeterminado |
accounts[].transactions[].dtuser | string | null | Con valor predeterminado |
accounts[].transactions[].trnamt | string | null | Con valor predeterminado |
accounts[].transactions[].name | string | null | Con valor predeterminado |
accounts[].transactions[].memo | string | null | Con valor predeterminado |
accounts[].transactions[].fitid | string | null | Con valor predeterminado |
accounts[].transactions[].refnum | string | null | Con valor predeterminado |
accounts[].transactions[].card_last4 | string | null | Con valor predeterminado |
accounts[].transactions[].cardholder_name | string | null | Con valor predeterminado |
accounts[].transactions[].is_foreign | boolean | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
reconciliation_warnings | array<string> | Con valor predeterminado |
Las tablas relacionan campos de salida con rutas JSON. || indica el primer valor no vacío; ?? un valor alternativo para null. La numeración, las descripciones combinadas y el formato son reglas de exportación. Los valores ausentes suelen quedar en blanco.
El diseño plano contiene transacciones con campos repetidos del extracto y la cuenta. El no plano incluye secciones de transacciones, saldos, límites y resúmenes por cuenta. Varias cuentas cambian el número de secciones.
Plano
Transactions repite los datos del documento y de la cuenta por transacción. Si faltan transacciones o cuentas, la exportación plana escribe una fila de identificación con campos de transacción vacíos.
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| 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 / "" |
No plano
Cada cuenta tiene sus tablas de transacciones y datos, una junto a otra en Excel y CSV. Los datos del extracto acompañan a la primera cuenta; las advertencias aparecen solo si existen. Word apila las secciones. Las filas campo/valor se detallan abajo.
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| # | 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 salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Ambas exportaciones combinan las transacciones de todas las cuentas. Xero omite importes null; QuickBooks omite null y cero. QuickBooks prioriza memo sobre name; una descripción solo numérica recibe el prefijo trntype, name o “Txn”. Los importes de tarjeta cambian de signo. No hay una columna independiente que identifique la cuenta.
Xero CSV
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| *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 | Vacío |
| Account code* | Vacío |
| Tax Rate (Display Name)* | Vacío |
| Tracking1 | Vacío |
| Tracking2 | Vacío |
| Transaction Type | accounts[].transactions[].trntype |
| Analysis code | Vacío |
QuickBooks CSV
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| Date | accounts[].transactions[].dtposted → DD/MM/YYYY |
| Description | accounts[].transactions[].memo || accounts[].transactions[].name || accounts[].transactions[].trntype || "Transaction" |
| Amount | −accounts[].transactions[].trnamt |
Nómina
Período, empleado, empleador, tarifas, ingresos, deducciones, impuestos, aportaciones y totales. current_amount corresponde al período; ytd_amount, al acumulado anual.
Campos JSON
Los tipos describen JSON serializado. Los objetos y arrays preceden a sus campos; [] indica entradas repetidas. Los campos predeterminados no tienen que proceder de la extracción. Los decimales se serializan como cadenas. Las descargas conservan los campos predeterminados; un valor no extraído no equivale a una clave JSON omitida.
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
statement | object | Con valor predeterminado |
statement.issue_date | string | null | Con valor predeterminado |
statement.pay_date | string | null | Con valor predeterminado |
statement.period_start | string | null | Con valor predeterminado |
statement.period_end | string | null | Con valor predeterminado |
statement.period_type | string | null | Con valor predeterminado |
statement.tax_year | integer | null | Con valor predeterminado |
statement.currency | string | null | Con valor predeterminado |
statement.country | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
employee | object | Con valor predeterminado |
employee.name | string | null | Con valor predeterminado |
employee.pay_frequency | string | null | Con valor predeterminado |
employee.employment_type | string | null | Con valor predeterminado |
employee.employment_status | string | null | Con valor predeterminado |
employee.filing_status | string | null | Con valor predeterminado |
employee.tax_code | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
employer | object | Con valor predeterminado |
employer.name | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
rates | object | Con valor predeterminado |
rates.base_pay_rate | string | null | Con valor predeterminado |
rates.base_pay_unit | string | null | Con valor predeterminado |
rates.annual_salary | string | null | Con valor predeterminado |
rates.regular_hours_per_period | string | null | Con valor predeterminado |
rates.overtime_multiplier | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
earnings | array<object> | Con valor predeterminado |
earnings[].code | string | null | Con valor predeterminado |
earnings[].description | string | null | Con valor predeterminado |
earnings[].category | string | null | Con valor predeterminado |
earnings[].jurisdiction | string | null | Con valor predeterminado |
earnings[].hours | string | null | Con valor predeterminado |
earnings[].rate | string | null | Con valor predeterminado |
earnings[].current_amount | string | null | Con valor predeterminado |
earnings[].ytd_amount | string | null | Con valor predeterminado |
earnings[].employer_match | string | null | Con valor predeterminado |
earnings[].employer_match_ytd | string | null | Con valor predeterminado |
earnings[].is_taxable | boolean | null | Con valor predeterminado |
earnings[].is_imputed | boolean | null | Con valor predeterminado |
earnings[].memo | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
pre_tax_deductions | array<object> | Con valor predeterminado |
pre_tax_deductions[].code | string | null | Con valor predeterminado |
pre_tax_deductions[].description | string | null | Con valor predeterminado |
pre_tax_deductions[].category | string | null | Con valor predeterminado |
pre_tax_deductions[].jurisdiction | string | null | Con valor predeterminado |
pre_tax_deductions[].hours | string | null | Con valor predeterminado |
pre_tax_deductions[].rate | string | null | Con valor predeterminado |
pre_tax_deductions[].current_amount | string | null | Con valor predeterminado |
pre_tax_deductions[].ytd_amount | string | null | Con valor predeterminado |
pre_tax_deductions[].employer_match | string | null | Con valor predeterminado |
pre_tax_deductions[].employer_match_ytd | string | null | Con valor predeterminado |
pre_tax_deductions[].is_taxable | boolean | null | Con valor predeterminado |
pre_tax_deductions[].is_imputed | boolean | null | Con valor predeterminado |
pre_tax_deductions[].memo | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
taxes | array<object> | Con valor predeterminado |
taxes[].code | string | null | Con valor predeterminado |
taxes[].description | string | null | Con valor predeterminado |
taxes[].category | string | null | Con valor predeterminado |
taxes[].jurisdiction | string | null | Con valor predeterminado |
taxes[].hours | string | null | Con valor predeterminado |
taxes[].rate | string | null | Con valor predeterminado |
taxes[].current_amount | string | null | Con valor predeterminado |
taxes[].ytd_amount | string | null | Con valor predeterminado |
taxes[].employer_match | string | null | Con valor predeterminado |
taxes[].employer_match_ytd | string | null | Con valor predeterminado |
taxes[].is_taxable | boolean | null | Con valor predeterminado |
taxes[].is_imputed | boolean | null | Con valor predeterminado |
taxes[].memo | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
post_tax_deductions | array<object> | Con valor predeterminado |
post_tax_deductions[].code | string | null | Con valor predeterminado |
post_tax_deductions[].description | string | null | Con valor predeterminado |
post_tax_deductions[].category | string | null | Con valor predeterminado |
post_tax_deductions[].jurisdiction | string | null | Con valor predeterminado |
post_tax_deductions[].hours | string | null | Con valor predeterminado |
post_tax_deductions[].rate | string | null | Con valor predeterminado |
post_tax_deductions[].current_amount | string | null | Con valor predeterminado |
post_tax_deductions[].ytd_amount | string | null | Con valor predeterminado |
post_tax_deductions[].employer_match | string | null | Con valor predeterminado |
post_tax_deductions[].employer_match_ytd | string | null | Con valor predeterminado |
post_tax_deductions[].is_taxable | boolean | null | Con valor predeterminado |
post_tax_deductions[].is_imputed | boolean | null | Con valor predeterminado |
post_tax_deductions[].memo | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
employer_contributions | array<object> | Con valor predeterminado |
employer_contributions[].code | string | null | Con valor predeterminado |
employer_contributions[].description | string | null | Con valor predeterminado |
employer_contributions[].category | string | null | Con valor predeterminado |
employer_contributions[].jurisdiction | string | null | Con valor predeterminado |
employer_contributions[].hours | string | null | Con valor predeterminado |
employer_contributions[].rate | string | null | Con valor predeterminado |
employer_contributions[].current_amount | string | null | Con valor predeterminado |
employer_contributions[].ytd_amount | string | null | Con valor predeterminado |
employer_contributions[].employer_match | string | null | Con valor predeterminado |
employer_contributions[].employer_match_ytd | string | null | Con valor predeterminado |
employer_contributions[].is_taxable | boolean | null | Con valor predeterminado |
employer_contributions[].is_imputed | boolean | null | Con valor predeterminado |
employer_contributions[].memo | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
totals | object | Con valor predeterminado |
totals.gross_pay_current | string | null | Con valor predeterminado |
totals.gross_pay_ytd | string | null | Con valor predeterminado |
totals.taxable_gross_current | string | null | Con valor predeterminado |
totals.taxable_gross_ytd | string | null | Con valor predeterminado |
totals.total_pre_tax_deductions_current | string | null | Con valor predeterminado |
totals.total_pre_tax_deductions_ytd | string | null | Con valor predeterminado |
totals.total_taxes_current | string | null | Con valor predeterminado |
totals.total_taxes_ytd | string | null | Con valor predeterminado |
totals.total_post_tax_deductions_current | string | null | Con valor predeterminado |
totals.total_post_tax_deductions_ytd | string | null | Con valor predeterminado |
totals.total_deductions_current | string | null | Con valor predeterminado |
totals.total_deductions_ytd | string | null | Con valor predeterminado |
totals.total_employer_contributions_current | string | null | Con valor predeterminado |
totals.total_employer_contributions_ytd | string | null | Con valor predeterminado |
totals.net_pay_current | string | null | Con valor predeterminado |
totals.net_pay_ytd | string | null | Con valor predeterminado |
totals.hours_worked_current | string | null | Con valor predeterminado |
totals.hours_worked_ytd | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
reconciliation_warnings | array<string> | Con valor predeterminado |
Las tablas relacionan campos de salida con rutas JSON. || indica el primer valor no vacío; ?? un valor alternativo para null. La numeración, las descripciones combinadas y el formato son reglas de exportación. Los valores ausentes suelen quedar en blanco.
No hay opción plana/no plana. La hoja Paystub contiene secciones de período, empleado, empleador, tarifas, ingresos, deducciones, impuestos, aportaciones y totales. CSV usa una cuadrícula por secciones; Word las apila.
Diseño propio
Estas son las secciones del diseño Paystub, una junto a otra en Excel y CSV y apiladas en Word. Las descripciones usan description o code y añaden “imputed” si is_imputed es true y “non-taxable” si is_taxable es false. Las columnas Rate usan formato porcentual. Los totales emparejan Current e YTD por Metric. Las advertencias aparecen solo si existen.
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| Name | employer.name |
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| 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 salida | Origen JSON o regla de exportación |
|---|---|
| # | 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 salida | Origen JSON o regla de exportación |
|---|---|
| # | 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 salida | Origen JSON o regla de exportación |
|---|---|
| # | 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 salida | Origen JSON o regla de exportación |
|---|---|
| # | 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 salida | Origen JSON o regla de exportación |
|---|---|
| # | 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 salida | Origen JSON o regla de exportación |
|---|---|
| # | index(reconciliation_warnings[]) + 1 |
| Warning | reconciliation_warnings[] |
Xero CSV
No
QuickBooks CSV
No
Imagen de tabla
Título, encabezados, celdas y notas. headers y rows[].cells siguen las columnas originales, no un esquema financiero fijo. El tipo de fila distingue datos, subtotales y otras funciones.
Campos JSON
Los tipos describen JSON serializado. Los objetos y arrays preceden a sus campos; [] indica entradas repetidas. Los campos predeterminados no tienen que proceder de la extracción. Los decimales se serializan como cadenas. Las descargas conservan los campos predeterminados; un valor no extraído no equivale a una clave JSON omitida.
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
title | string | null | Con valor predeterminado |
caption | string | null | Con valor predeterminado |
source_type | string | null | Con valor predeterminado |
border_style | string | null | Con valor predeterminado |
language | string | null | Con valor predeterminado |
header_rows | integer | null | Con valor predeterminado |
notes | string | null | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
headers | array<array<any>> | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
rows | array<object> | Con valor predeterminado |
rows[].type | string | null | Con valor predeterminado |
rows[].cells | array<any> | Con valor predeterminado |
| Ruta del campo | Tipo JSON | Presencia |
|---|---|---|
reconciliation_warnings | array<string> | Con valor predeterminado |
Las tablas relacionan campos de salida con rutas JSON. || indica el primer valor no vacío; ?? un valor alternativo para null. La numeración, las descripciones combinadas y el formato son reglas de exportación. Los valores ausentes suelen quedar en blanco.
No hay opción plana/no plana. La hoja Table usa los encabezados y celdas extraídos. Las columnas son dinámicas; títulos, notas y avisos pueden añadir filas. CSV no conserva combinaciones de celdas ni estilos de Excel.
Diseño propio
Los nombres de columna proceden de headers, no de una lista fija. Las celdas mantienen su orden; las filas cortas se rellenan y null queda vacío. title y caption aparecen arriba, notes y advertencias abajo. Excel combina encabezados adyacentes iguales. rows[].type controla el formato de Excel/Word, sin añadir una columna. CSV no tiene formato. Una fila de advertencia puede ocupar dos columnas aunque los datos tengan una.
| Campo de salida | Origen JSON o regla de exportación |
|---|---|
| title | title |
| caption | caption |
| headers[][] | headers[][] |
| rows[].cells[] | rows[].cells[] |
| Formato de filas (Excel / Word) | rows[].type → DATA | HEADER | SECTION | SUBTOTAL | GRAND_TOTAL |
| Anchura de la cuadrícula | max(length(headers[]), length(rows[].cells)) || 1 |
| Notes | notes |
| # | index(reconciliation_warnings[]) + 1 |
| Reconciliation warnings | reconciliation_warnings[] |
Xero CSV
No
QuickBooks CSV
No
Valores ausentes y revisión
Los campos anulables pueden contener null; las listas ausentes toman []. Los objetos anidados pueden tener campos predeterminados. Los exportadores suelen representar valores ausentes como celdas vacías. Fechas e importes pueden normalizarse; la conciliación puede calcular totales ausentes o añadir avisos. doc_id y source_filename son metadatos de exportación, no campos financieros extraídos.
Revisa el original y los valores exportados. Una lista reconciliation_warnings vacía no demuestra precisión.