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.
Salidas disponibles
DocumentoJSONDiseñoXero CSVQuickBooks CSV
ReciboPlano / No planoNo
FacturaPlano / No planoNo
Extracto bancarioPlano / No plano
Extracto de tarjetaPlano / No plano
NóminaDiseño propioNoNo
Imagen de tablaDiseño propioNoNo

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.

Documento
Ruta del campoTipo JSONPresencia
vendorstring | nullCon valor predeterminado
datestring | nullCon valor predeterminado
currencystring | nullCon valor predeterminado
document_numberstring | nullCon valor predeterminado
subtotalstring | nullCon valor predeterminado
taxstring | nullCon valor predeterminado
tax_inclusiveboolean | nullCon valor predeterminado
tipstring | nullCon valor predeterminado
payment_methodstring | nullCon valor predeterminado
totalstring | nullCon valor predeterminado
line_items
Ruta del campoTipo JSONPresencia
line_itemsarray<object>Con valor predeterminado
line_items[].descriptionstring | nullCon valor predeterminado
line_items[].quantitystring | nullCon valor predeterminado
line_items[].unit_pricestring | nullCon valor predeterminado
line_items[].totalstring | nullCon valor predeterminado
taxes
Ruta del campoTipo JSONPresencia
taxesarray<object>Con valor predeterminado
taxes[].namestring | nullCon valor predeterminado
taxes[].ratestring | nullCon valor predeterminado
taxes[].basestring | nullCon valor predeterminado
taxes[].amountstring | nullCon valor predeterminado
reconciliation_warnings
Ruta del campoTipo JSONPresencia
reconciliation_warningsarray<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.

Lines (Excel / CSV)
Campo de salidaOrigen JSON o regla de exportación
doc_iddoc_id
source_filenamesource_filename
vendorvendor
datedate
currencycurrency
document_numberdocument_number
line_noindex(line_items[]) + 1
descriptionline_items[].description
quantityline_items[].quantity
unit_priceline_items[].unit_price
line_totalline_items[].total
row_typeline | adjustment
Documents (Excel)
Campo de salidaOrigen JSON o regla de exportación
doc_iddoc_id
source_filenamesource_filename
vendorvendor
datedate
currencycurrency
document_numberdocument_number
subtotalsubtotal
taxtax
tax_inclusivetax_inclusive
tiptip
payment_methodpayment_method
totaltotal
tax_breakdownjoin(taxes[].name, taxes[].rate, taxes[].amount)
warningsjoin(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.

Partidas
Campo de salidaOrigen JSON o regla de exportación
#index(line_items[]) + 1
Descriptionline_items[].description
Qtyline_items[].quantity
Line totalline_items[].total
Datos del documento
Campo de salidaOrigen JSON o regla de exportación
Doc IDdoc_id
Sourcesource_filename
Vendorvendor
Datedate
Currencycurrency
Document #document_number
Payment methodpayment_method
Impuestos
Campo de salidaOrigen JSON o regla de exportación
Nametaxes[].name
Ratetaxes[].rate
Basetaxes[].base
Amounttaxes[].amount
Totales
Campo de salidaOrigen JSON o regla de exportación
Subtotalsubtotal
Taxtax
Tax inclusivetax_inclusive
Tiptip
Totaltotal
Avisos
Campo de salidaOrigen JSON o regla de exportación
#index(reconciliation_warnings[]) + 1
Warningreconciliation_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.

Xero CSV
Campo de salidaOrigen JSON o regla de exportación
*ContactNamevendor || "Unknown vendor"
EmailAddressVacío
POAddressLine1Vacío
POAddressLine2Vacío
POAddressLine3Vacío
POAddressLine4Vacío
POCityVacío
PORegionVacío
POPostalCodeVacío
POCountryVacío
*InvoiceNumberdocument_number || "RCP-" + doc_id
Reference"Receipt"
*InvoiceDatedate → DD/MM/YYYY
*DueDatedate → DD/MM/YYYY
TotalVacío
InventoryItemCodeVacío
*Descriptionjoin(line_items[].description) || vendor || "Receipt"; tip → "(incl. tip)"
*Quantity1
*UnitAmountsubtotal / total / tax / tax_inclusive / tip
DiscountVacío
*AccountCodeVacío
*TaxTypeVacío
TaxAmounttax (0 → blank)
TrackingName1Vacío
TrackingOption1Vacío
TrackingName2Vacío
TrackingOption2Vacío
Currencycurrency
BrandingThemeVací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.

Documento
Ruta del campoTipo JSONPresencia
invoice_numberstring | nullCon valor predeterminado
issue_datestring | nullCon valor predeterminado
due_datestring | nullCon valor predeterminado
currencystring | nullCon valor predeterminado
payment_termsstring | nullCon valor predeterminado
purchase_orderstring | nullCon valor predeterminado
notesstring | nullCon valor predeterminado
subtotalstring | nullCon valor predeterminado
discountstring | nullCon valor predeterminado
taxstring | nullCon valor predeterminado
tax_inclusiveboolean | nullCon valor predeterminado
withholdingsstring | nullCon valor predeterminado
totalstring | nullCon valor predeterminado
sender
Ruta del campoTipo JSONPresencia
senderobject | nullCon valor predeterminado
sender.namestring | nullCon valor predeterminado
sender.addressobject | nullCon valor predeterminado
sender.address.line1string | nullCon valor predeterminado
sender.address.line2string | nullCon valor predeterminado
sender.address.citystring | nullCon valor predeterminado
sender.address.regionstring | nullCon valor predeterminado
sender.address.postal_codestring | nullCon valor predeterminado
sender.address.countrystring | nullCon valor predeterminado
sender.address.rawstring | nullCon valor predeterminado
sender.tax_idstring | nullCon valor predeterminado
sender.emailstring | nullCon valor predeterminado
receiver
Ruta del campoTipo JSONPresencia
receiverobject | nullCon valor predeterminado
receiver.namestring | nullCon valor predeterminado
receiver.addressobject | nullCon valor predeterminado
receiver.address.line1string | nullCon valor predeterminado
receiver.address.line2string | nullCon valor predeterminado
receiver.address.citystring | nullCon valor predeterminado
receiver.address.regionstring | nullCon valor predeterminado
receiver.address.postal_codestring | nullCon valor predeterminado
receiver.address.countrystring | nullCon valor predeterminado
receiver.address.rawstring | nullCon valor predeterminado
receiver.tax_idstring | nullCon valor predeterminado
receiver.emailstring | nullCon valor predeterminado
line_items
Ruta del campoTipo JSONPresencia
line_itemsarray<object>Con valor predeterminado
line_items[].descriptionstring | nullCon valor predeterminado
line_items[].quantitystring | nullCon valor predeterminado
line_items[].unitstring | nullCon valor predeterminado
line_items[].unit_pricestring | nullCon valor predeterminado
line_items[].totalstring | nullCon valor predeterminado
line_items[].tax_ratestring | nullCon valor predeterminado
line_items[].tax_amountstring | nullCon valor predeterminado
taxes
Ruta del campoTipo JSONPresencia
taxesarray<object>Con valor predeterminado
taxes[].namestring | nullCon valor predeterminado
taxes[].ratestring | nullCon valor predeterminado
taxes[].basestring | nullCon valor predeterminado
taxes[].amountstring | nullCon valor predeterminado
reconciliation_warnings
Ruta del campoTipo JSONPresencia
reconciliation_warningsarray<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.

Lines (Excel / CSV / Word)
Campo de salidaOrigen JSON o regla de exportación
doc_iddoc_id
source_filenamesource_filename
invoice_numberinvoice_number
issue_dateissue_date
due_datedue_date
currencycurrency
sendersender.name
receiverreceiver.name
line_noindex(line_items[]) + 1
descriptionline_items[].description
quantityline_items[].quantity
unitline_items[].unit
unit_priceline_items[].unit_price
line_totalline_items[].total
tax_rateline_items[].tax_rate
tax_amountline_items[].tax_amount
row_typeline | 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.

Partidas
Campo de salidaOrigen JSON o regla de exportación
#index(line_items[]) + 1
Descriptionline_items[].description
Qtyline_items[].quantity
Unitline_items[].unit
Unit priceline_items[].unit_price
Tax rateline_items[].tax_rate
Tax amountline_items[].tax_amount
Line totalline_items[].total
Datos del documento
Campo de salidaOrigen JSON o regla de exportación
Doc IDdoc_id
Sourcesource_filename
Invoice #invoice_number
Issue dateissue_date
Due datedue_date
Currencycurrency
Payment termspayment_terms
PO #purchase_order
Sendersender.name
Sender tax IDsender.tax_id
Sender addresssender.address.raw || join(sender.address.line1, line2, city, region, postal_code, country)
Receiverreceiver.name
Receiver tax IDreceiver.tax_id
Receiver addressreceiver.address.raw || join(receiver.address.line1, line2, city, region, postal_code, country)
Impuestos
Campo de salidaOrigen JSON o regla de exportación
Nametaxes[].name
Ratetaxes[].rate
Basetaxes[].base
Amounttaxes[].amount
Totales
Campo de salidaOrigen JSON o regla de exportación
Subtotalsubtotal
Discountdiscount
Taxtax
Tax inclusivetax_inclusive
Withholdingswithholdings
Totaltotal
Avisos
Campo de salidaOrigen JSON o regla de exportación
#index(reconciliation_warnings[]) + 1
Warningreconciliation_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.

Xero CSV
Campo de salidaOrigen JSON o regla de exportación
*ContactNamereceiver.name || "Unknown customer"
EmailAddressreceiver.email
POAddressLine1receiver.address.line1
POAddressLine2receiver.address.line2
POAddressLine3Vacío
POAddressLine4Vacío
POCityreceiver.address.city
PORegionreceiver.address.region
POPostalCodereceiver.address.postal_code
POCountryreceiver.address.country
*InvoiceNumberinvoice_number || "INV-" + doc_id
Referencepurchase_order
*InvoiceDateissue_date → DD/MM/YYYY
*DueDate(due_date || issue_date) → DD/MM/YYYY
TotalVacío
InventoryItemCodeVacío
*Descriptionline_items[].description
*Quantityline_items[].quantity ?? 1
*UnitAmountline_items[].unit_price ?? (line_items[].total / (line_items[].quantity || 1))
DiscountVacío
*AccountCodeVacío
*TaxTypeVacío
TaxAmountline_items[].tax_amount (0 → "")
TrackingName1Vacío
TrackingOption1Vacío
TrackingName2Vacío
TrackingOption2Vacío
Currencycurrency
BrandingThemeVací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.

issuer
Ruta del campoTipo JSONPresencia
issuerobjectCon valor predeterminado
issuer.namestring | nullCon valor predeterminado
statement
Ruta del campoTipo JSONPresencia
statementobjectCon valor predeterminado
statement.statement_datestring | nullCon valor predeterminado
statement.period_startstring | nullCon valor predeterminado
statement.period_endstring | nullCon valor predeterminado
statement.currency_defaultstring | nullCon valor predeterminado
statement.page_countinteger | nullCon valor predeterminado
accounts
Ruta del campoTipo JSONPresencia
accountsarray<object>Con valor predeterminado
accounts[].holderobjectCon valor predeterminado
accounts[].holder.namestring | nullCon valor predeterminado
accounts[].accountobjectCon valor predeterminado
accounts[].account.account_numberstring | nullCon valor predeterminado
accounts[].account.account_number_maskedstring | nullCon valor predeterminado
accounts[].account.ibanstring | nullCon valor predeterminado
accounts[].account.bicstring | nullCon valor predeterminado
accounts[].account.sort_codestring | nullCon valor predeterminado
accounts[].account.account_typestring | nullCon valor predeterminado
accounts[].account.account_namestring | nullCon valor predeterminado
accounts[].account.currencystring | nullCon valor predeterminado
accounts[].account.card_last4string | nullCon valor predeterminado
accounts[].balancesobjectCon valor predeterminado
accounts[].balances.openingobjectCon valor predeterminado
accounts[].balances.opening.amountstring | nullCon valor predeterminado
accounts[].balances.opening.as_ofstring | nullCon valor predeterminado
accounts[].balances.closingobjectCon valor predeterminado
accounts[].balances.closing.amountstring | nullCon valor predeterminado
accounts[].balances.closing.as_ofstring | nullCon valor predeterminado
accounts[].balances.availablestring | nullCon valor predeterminado
accounts[].totalsobjectCon valor predeterminado
accounts[].totals.credits_countinteger | nullCon valor predeterminado
accounts[].totals.credits_amountstring | nullCon valor predeterminado
accounts[].totals.debits_countinteger | nullCon valor predeterminado
accounts[].totals.debits_amountstring | nullCon valor predeterminado
accounts[].totals.fees_chargedstring | nullCon valor predeterminado
accounts[].totals.interest_paidstring | nullCon valor predeterminado
accounts[].totals.interest_chargedstring | nullCon valor predeterminado
accounts[].transactionsarray<object>Con valor predeterminado
accounts[].transactions[].trntypestring | nullCon valor predeterminado
accounts[].transactions[].dtpostedstring | nullCon valor predeterminado
accounts[].transactions[].dtuserstring | nullCon valor predeterminado
accounts[].transactions[].trnamtstring | nullCon valor predeterminado
accounts[].transactions[].namestring | nullCon valor predeterminado
accounts[].transactions[].memostring | nullCon valor predeterminado
accounts[].transactions[].running_balancestring | nullCon valor predeterminado
accounts[].transactions[].fitidstring | nullCon valor predeterminado
accounts[].transactions[].refnumstring | nullCon valor predeterminado
accounts[].transactions[].checknumstring | nullCon valor predeterminado
accounts[].transactions[].card_last4string | nullCon valor predeterminado
accounts[].transactions[].feestring | nullCon valor predeterminado
reconciliation_warnings
Ruta del campoTipo JSONPresencia
reconciliation_warningsarray<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.

Transactions (Excel / CSV / Word)
Campo de salidaOrigen JSON o regla de exportación
doc_iddoc_id
source_filenamesource_filename
bankissuer.name
account_holderaccounts[].holder.name
account_numberaccounts[].account.account_number_masked || accounts[].account.account_number || accounts[].account.iban
account_typeaccounts[].account.account_type
currencyaccounts[].account.currency || statement.currency_default
period_startstatement.period_start
period_endstatement.period_end
txn_noindex(accounts[].transactions[]) + 1
dateaccounts[].transactions[].dtposted
value_dateaccounts[].transactions[].dtuser
descriptionjoinDistinct(accounts[].transactions[].name, accounts[].transactions[].memo, " - ")
referenceaccounts[].transactions[].refnum
check_numberaccounts[].transactions[].checknum
typeaccounts[].transactions[].trntype
amountaccounts[].transactions[].trnamt
feeaccounts[].transactions[].fee
running_balanceaccounts[].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.

Transacciones
Campo de salidaOrigen JSON o regla de exportación
#index(accounts[].transactions[]) + 1
Dateaccounts[].transactions[].dtposted
Value dateaccounts[].transactions[].dtuser
DescriptionjoinDistinct(accounts[].transactions[].name, accounts[].transactions[].memo, " - ")
Referenceaccounts[].transactions[].refnum
Check #accounts[].transactions[].checknum
Typeaccounts[].transactions[].trntype
Amountaccounts[].transactions[].trnamt
Running balanceaccounts[].transactions[].running_balance
Datos de la cuenta o tarjeta
Campo de salidaOrigen JSON o regla de exportación
Holderaccounts[].holder.name
Account nameaccounts[].account.account_name
Account numberaccounts[].account.account_number_masked || accounts[].account.account_number
IBANaccounts[].account.iban
BICaccounts[].account.bic
Sort codeaccounts[].account.sort_code
Card last 4accounts[].account.card_last4
Account typeaccounts[].account.account_type
Currencyaccounts[].account.currency
Saldos
Campo de salidaOrigen JSON o regla de exportación
Openingaccounts[].balances.opening.amount
Opening as ofaccounts[].balances.opening.as_of
Closingaccounts[].balances.closing.amount
Closing as ofaccounts[].balances.closing.as_of
Availableaccounts[].balances.available
Totales
Campo de salidaOrigen JSON o regla de exportación
Credits countaccounts[].totals.credits_count
Credits amountaccounts[].totals.credits_amount
Debits countaccounts[].totals.debits_count
Debits amountaccounts[].totals.debits_amount
Fees chargedaccounts[].totals.fees_charged
Interest paidaccounts[].totals.interest_paid
Interest chargedaccounts[].totals.interest_charged
Datos del extracto
Campo de salidaOrigen JSON o regla de exportación
Doc IDdoc_id
Sourcesource_filename
Bankissuer.name
Statement datestatement.statement_date
Period startstatement.period_start
Period endstatement.period_end
Page countstatement.page_count
Avisos
Campo de salidaOrigen JSON o regla de exportación
#index(reconciliation_warnings[]) + 1
Warningreconciliation_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

Xero CSV
Campo de salidaOrigen JSON o regla de exportación
*Dateaccounts[].transactions[].dtposted → DD/MM/YYYY
*Amountaccounts[].transactions[].trnamt
Payeeaccounts[].transactions[].name
DescriptionjoinDistinct(accounts[].transactions[].name, accounts[].transactions[].memo, " - ")
Referenceaccounts[].transactions[].refnum
Cheque Numberaccounts[].transactions[].checknum
Account code*Vacío
Tax Rate (Display Name)*Vacío
Tracking1Vacío
Tracking2Vacío
Transaction Typeaccounts[].transactions[].trntype
Analysis codeVacío

QuickBooks CSV

QuickBooks CSV
Campo de salidaOrigen JSON o regla de exportación
Dateaccounts[].transactions[].dtposted → DD/MM/YYYY
Descriptionaccounts[].transactions[].memo || accounts[].transactions[].name || accounts[].transactions[].trntype || "Transaction"
Amountaccounts[].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.

issuer
Ruta del campoTipo JSONPresencia
issuerobjectCon valor predeterminado
issuer.namestring | nullCon valor predeterminado
statement
Ruta del campoTipo JSONPresencia
statementobjectCon valor predeterminado
statement.statement_datestring | nullCon valor predeterminado
statement.period_startstring | nullCon valor predeterminado
statement.period_endstring | nullCon valor predeterminado
statement.currency_defaultstring | nullCon valor predeterminado
statement.page_countinteger | nullCon valor predeterminado
accounts
Ruta del campoTipo JSONPresencia
accountsarray<object>Con valor predeterminado
accounts[].holderobjectCon valor predeterminado
accounts[].holder.namestring | nullCon valor predeterminado
accounts[].accountobjectCon valor predeterminado
accounts[].account.account_numberstring | nullCon valor predeterminado
accounts[].account.account_number_maskedstring | nullCon valor predeterminado
accounts[].account.card_last4string | nullCon valor predeterminado
accounts[].account.binstring | nullCon valor predeterminado
accounts[].account.card_networkstring | nullCon valor predeterminado
accounts[].account.card_brandstring | nullCon valor predeterminado
accounts[].account.card_productstring | nullCon valor predeterminado
accounts[].account.card_typestring | nullCon valor predeterminado
accounts[].account.currencystring | nullCon valor predeterminado
accounts[].balancesobjectCon valor predeterminado
accounts[].balances.previous_balanceobjectCon valor predeterminado
accounts[].balances.previous_balance.amountstring | nullCon valor predeterminado
accounts[].balances.previous_balance.as_ofstring | nullCon valor predeterminado
accounts[].balances.new_balanceobjectCon valor predeterminado
accounts[].balances.new_balance.amountstring | nullCon valor predeterminado
accounts[].balances.new_balance.as_ofstring | nullCon valor predeterminado
accounts[].balances.statement_balancestring | nullCon valor predeterminado
accounts[].balances.minimum_payment_duestring | nullCon valor predeterminado
accounts[].balances.payment_due_datestring | nullCon valor predeterminado
accounts[].balances.past_due_amountstring | nullCon valor predeterminado
accounts[].credit_limitsobjectCon valor predeterminado
accounts[].credit_limits.credit_limitstring | nullCon valor predeterminado
accounts[].credit_limits.available_creditstring | nullCon valor predeterminado
accounts[].credit_limits.cash_advance_limitstring | nullCon valor predeterminado
accounts[].credit_limits.available_cashstring | nullCon valor predeterminado
accounts[].credit_limits.over_limit_amountstring | nullCon valor predeterminado
accounts[].summaryobjectCon valor predeterminado
accounts[].summary.previous_balancestring | nullCon valor predeterminado
accounts[].summary.paymentsstring | nullCon valor predeterminado
accounts[].summary.credits_returnsstring | nullCon valor predeterminado
accounts[].summary.purchasesstring | nullCon valor predeterminado
accounts[].summary.cash_advancesstring | nullCon valor predeterminado
accounts[].summary.balance_transfersstring | nullCon valor predeterminado
accounts[].summary.fees_chargedstring | nullCon valor predeterminado
accounts[].summary.interest_chargedstring | nullCon valor predeterminado
accounts[].summary.adjustmentsstring | nullCon valor predeterminado
accounts[].summary.new_balancestring | nullCon valor predeterminado
accounts[].transactionsarray<object>Con valor predeterminado
accounts[].transactions[].trntypestring | nullCon valor predeterminado
accounts[].transactions[].dtpostedstring | nullCon valor predeterminado
accounts[].transactions[].dtuserstring | nullCon valor predeterminado
accounts[].transactions[].trnamtstring | nullCon valor predeterminado
accounts[].transactions[].namestring | nullCon valor predeterminado
accounts[].transactions[].memostring | nullCon valor predeterminado
accounts[].transactions[].fitidstring | nullCon valor predeterminado
accounts[].transactions[].refnumstring | nullCon valor predeterminado
accounts[].transactions[].card_last4string | nullCon valor predeterminado
accounts[].transactions[].cardholder_namestring | nullCon valor predeterminado
accounts[].transactions[].is_foreignboolean | nullCon valor predeterminado
reconciliation_warnings
Ruta del campoTipo JSONPresencia
reconciliation_warningsarray<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.

Transactions (Excel / CSV / Word)
Campo de salidaOrigen JSON o regla de exportación
doc_iddoc_id
source_filenamesource_filename
issuerissuer.name
cardholderaccounts[].transactions[].cardholder_name || accounts[].holder.name
card_last4accounts[].transactions[].card_last4 || accounts[].account.card_last4
card_networkaccounts[].account.card_network
card_brandaccounts[].account.card_brand
currencyaccounts[].account.currency || statement.currency_default
period_startstatement.period_start
period_endstatement.period_end
txn_noindex(accounts[].transactions[]) + 1
dateaccounts[].transactions[].dtposted
posted_dateaccounts[].transactions[].dtuser
descriptionjoinDistinct(accounts[].transactions[].name, accounts[].transactions[].memo, " - ")
referenceaccounts[].transactions[].refnum
typeaccounts[].transactions[].trntype
amountaccounts[].transactions[].trnamt
is_foreignaccounts[].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.

Transacciones
Campo de salidaOrigen JSON o regla de exportación
#index(accounts[].transactions[]) + 1
Dateaccounts[].transactions[].dtposted
Postedaccounts[].transactions[].dtuser
DescriptionjoinDistinct(accounts[].transactions[].name, accounts[].transactions[].memo, " - ")
Referenceaccounts[].transactions[].refnum
Typeaccounts[].transactions[].trntype
Card last 4accounts[].transactions[].card_last4 || accounts[].account.card_last4
Amountaccounts[].transactions[].trnamt
Datos de la cuenta o tarjeta
Campo de salidaOrigen JSON o regla de exportación
Holderaccounts[].holder.name
Card last 4accounts[].account.card_last4
Card networkaccounts[].account.card_network
Card brandaccounts[].account.card_brand
Card productaccounts[].account.card_product
Card typeaccounts[].account.card_type
Account numberaccounts[].account.account_number_masked || accounts[].account.account_number
Currencyaccounts[].account.currency
Saldos
Campo de salidaOrigen JSON o regla de exportación
Previous balanceaccounts[].balances.previous_balance.amount
Previous balance as ofaccounts[].balances.previous_balance.as_of
New balanceaccounts[].balances.new_balance.amount
New balance as ofaccounts[].balances.new_balance.as_of
Statement balanceaccounts[].balances.statement_balance
Minimum paymentaccounts[].balances.minimum_payment_due
Payment due dateaccounts[].balances.payment_due_date
Past dueaccounts[].balances.past_due_amount
Límites de crédito
Campo de salidaOrigen JSON o regla de exportación
Credit limitaccounts[].credit_limits.credit_limit
Available creditaccounts[].credit_limits.available_credit
Cash advance limitaccounts[].credit_limits.cash_advance_limit
Available cashaccounts[].credit_limits.available_cash
Over limitaccounts[].credit_limits.over_limit_amount
Resumen de actividad
Campo de salidaOrigen JSON o regla de exportación
Previous balanceaccounts[].summary.previous_balance
Paymentsaccounts[].summary.payments
Credits / returnsaccounts[].summary.credits_returns
Purchasesaccounts[].summary.purchases
Cash advancesaccounts[].summary.cash_advances
Balance transfersaccounts[].summary.balance_transfers
Fees chargedaccounts[].summary.fees_charged
Interest chargedaccounts[].summary.interest_charged
Adjustmentsaccounts[].summary.adjustments
New balanceaccounts[].summary.new_balance
Datos del extracto
Campo de salidaOrigen JSON o regla de exportación
Doc IDdoc_id
Sourcesource_filename
Issuerissuer.name
Statement datestatement.statement_date
Period startstatement.period_start
Period endstatement.period_end
Page countstatement.page_count
Avisos
Campo de salidaOrigen JSON o regla de exportación
#index(reconciliation_warnings[]) + 1
Warningreconciliation_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

Xero CSV
Campo de salidaOrigen JSON o regla de exportación
*Dateaccounts[].transactions[].dtposted → DD/MM/YYYY
*Amount−accounts[].transactions[].trnamt
Payeeaccounts[].transactions[].name
DescriptionjoinDistinct(accounts[].transactions[].name, accounts[].transactions[].memo, " - ")
Referenceaccounts[].transactions[].refnum
Cheque NumberVacío
Account code*Vacío
Tax Rate (Display Name)*Vacío
Tracking1Vacío
Tracking2Vacío
Transaction Typeaccounts[].transactions[].trntype
Analysis codeVacío

QuickBooks CSV

QuickBooks CSV
Campo de salidaOrigen JSON o regla de exportación
Dateaccounts[].transactions[].dtposted → DD/MM/YYYY
Descriptionaccounts[].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.

statement
Ruta del campoTipo JSONPresencia
statementobjectCon valor predeterminado
statement.issue_datestring | nullCon valor predeterminado
statement.pay_datestring | nullCon valor predeterminado
statement.period_startstring | nullCon valor predeterminado
statement.period_endstring | nullCon valor predeterminado
statement.period_typestring | nullCon valor predeterminado
statement.tax_yearinteger | nullCon valor predeterminado
statement.currencystring | nullCon valor predeterminado
statement.countrystring | nullCon valor predeterminado
employee
Ruta del campoTipo JSONPresencia
employeeobjectCon valor predeterminado
employee.namestring | nullCon valor predeterminado
employee.pay_frequencystring | nullCon valor predeterminado
employee.employment_typestring | nullCon valor predeterminado
employee.employment_statusstring | nullCon valor predeterminado
employee.filing_statusstring | nullCon valor predeterminado
employee.tax_codestring | nullCon valor predeterminado
employer
Ruta del campoTipo JSONPresencia
employerobjectCon valor predeterminado
employer.namestring | nullCon valor predeterminado
rates
Ruta del campoTipo JSONPresencia
ratesobjectCon valor predeterminado
rates.base_pay_ratestring | nullCon valor predeterminado
rates.base_pay_unitstring | nullCon valor predeterminado
rates.annual_salarystring | nullCon valor predeterminado
rates.regular_hours_per_periodstring | nullCon valor predeterminado
rates.overtime_multiplierstring | nullCon valor predeterminado
earnings
Ruta del campoTipo JSONPresencia
earningsarray<object>Con valor predeterminado
earnings[].codestring | nullCon valor predeterminado
earnings[].descriptionstring | nullCon valor predeterminado
earnings[].categorystring | nullCon valor predeterminado
earnings[].jurisdictionstring | nullCon valor predeterminado
earnings[].hoursstring | nullCon valor predeterminado
earnings[].ratestring | nullCon valor predeterminado
earnings[].current_amountstring | nullCon valor predeterminado
earnings[].ytd_amountstring | nullCon valor predeterminado
earnings[].employer_matchstring | nullCon valor predeterminado
earnings[].employer_match_ytdstring | nullCon valor predeterminado
earnings[].is_taxableboolean | nullCon valor predeterminado
earnings[].is_imputedboolean | nullCon valor predeterminado
earnings[].memostring | nullCon valor predeterminado
pre_tax_deductions
Ruta del campoTipo JSONPresencia
pre_tax_deductionsarray<object>Con valor predeterminado
pre_tax_deductions[].codestring | nullCon valor predeterminado
pre_tax_deductions[].descriptionstring | nullCon valor predeterminado
pre_tax_deductions[].categorystring | nullCon valor predeterminado
pre_tax_deductions[].jurisdictionstring | nullCon valor predeterminado
pre_tax_deductions[].hoursstring | nullCon valor predeterminado
pre_tax_deductions[].ratestring | nullCon valor predeterminado
pre_tax_deductions[].current_amountstring | nullCon valor predeterminado
pre_tax_deductions[].ytd_amountstring | nullCon valor predeterminado
pre_tax_deductions[].employer_matchstring | nullCon valor predeterminado
pre_tax_deductions[].employer_match_ytdstring | nullCon valor predeterminado
pre_tax_deductions[].is_taxableboolean | nullCon valor predeterminado
pre_tax_deductions[].is_imputedboolean | nullCon valor predeterminado
pre_tax_deductions[].memostring | nullCon valor predeterminado
taxes
Ruta del campoTipo JSONPresencia
taxesarray<object>Con valor predeterminado
taxes[].codestring | nullCon valor predeterminado
taxes[].descriptionstring | nullCon valor predeterminado
taxes[].categorystring | nullCon valor predeterminado
taxes[].jurisdictionstring | nullCon valor predeterminado
taxes[].hoursstring | nullCon valor predeterminado
taxes[].ratestring | nullCon valor predeterminado
taxes[].current_amountstring | nullCon valor predeterminado
taxes[].ytd_amountstring | nullCon valor predeterminado
taxes[].employer_matchstring | nullCon valor predeterminado
taxes[].employer_match_ytdstring | nullCon valor predeterminado
taxes[].is_taxableboolean | nullCon valor predeterminado
taxes[].is_imputedboolean | nullCon valor predeterminado
taxes[].memostring | nullCon valor predeterminado
post_tax_deductions
Ruta del campoTipo JSONPresencia
post_tax_deductionsarray<object>Con valor predeterminado
post_tax_deductions[].codestring | nullCon valor predeterminado
post_tax_deductions[].descriptionstring | nullCon valor predeterminado
post_tax_deductions[].categorystring | nullCon valor predeterminado
post_tax_deductions[].jurisdictionstring | nullCon valor predeterminado
post_tax_deductions[].hoursstring | nullCon valor predeterminado
post_tax_deductions[].ratestring | nullCon valor predeterminado
post_tax_deductions[].current_amountstring | nullCon valor predeterminado
post_tax_deductions[].ytd_amountstring | nullCon valor predeterminado
post_tax_deductions[].employer_matchstring | nullCon valor predeterminado
post_tax_deductions[].employer_match_ytdstring | nullCon valor predeterminado
post_tax_deductions[].is_taxableboolean | nullCon valor predeterminado
post_tax_deductions[].is_imputedboolean | nullCon valor predeterminado
post_tax_deductions[].memostring | nullCon valor predeterminado
employer_contributions
Ruta del campoTipo JSONPresencia
employer_contributionsarray<object>Con valor predeterminado
employer_contributions[].codestring | nullCon valor predeterminado
employer_contributions[].descriptionstring | nullCon valor predeterminado
employer_contributions[].categorystring | nullCon valor predeterminado
employer_contributions[].jurisdictionstring | nullCon valor predeterminado
employer_contributions[].hoursstring | nullCon valor predeterminado
employer_contributions[].ratestring | nullCon valor predeterminado
employer_contributions[].current_amountstring | nullCon valor predeterminado
employer_contributions[].ytd_amountstring | nullCon valor predeterminado
employer_contributions[].employer_matchstring | nullCon valor predeterminado
employer_contributions[].employer_match_ytdstring | nullCon valor predeterminado
employer_contributions[].is_taxableboolean | nullCon valor predeterminado
employer_contributions[].is_imputedboolean | nullCon valor predeterminado
employer_contributions[].memostring | nullCon valor predeterminado
totals
Ruta del campoTipo JSONPresencia
totalsobjectCon valor predeterminado
totals.gross_pay_currentstring | nullCon valor predeterminado
totals.gross_pay_ytdstring | nullCon valor predeterminado
totals.taxable_gross_currentstring | nullCon valor predeterminado
totals.taxable_gross_ytdstring | nullCon valor predeterminado
totals.total_pre_tax_deductions_currentstring | nullCon valor predeterminado
totals.total_pre_tax_deductions_ytdstring | nullCon valor predeterminado
totals.total_taxes_currentstring | nullCon valor predeterminado
totals.total_taxes_ytdstring | nullCon valor predeterminado
totals.total_post_tax_deductions_currentstring | nullCon valor predeterminado
totals.total_post_tax_deductions_ytdstring | nullCon valor predeterminado
totals.total_deductions_currentstring | nullCon valor predeterminado
totals.total_deductions_ytdstring | nullCon valor predeterminado
totals.total_employer_contributions_currentstring | nullCon valor predeterminado
totals.total_employer_contributions_ytdstring | nullCon valor predeterminado
totals.net_pay_currentstring | nullCon valor predeterminado
totals.net_pay_ytdstring | nullCon valor predeterminado
totals.hours_worked_currentstring | nullCon valor predeterminado
totals.hours_worked_ytdstring | nullCon valor predeterminado
reconciliation_warnings
Ruta del campoTipo JSONPresencia
reconciliation_warningsarray<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.

Totales
Campo de salidaOrigen JSON o regla de exportación
Gross pay / Currenttotals.gross_pay_current
Gross pay / YTDtotals.gross_pay_ytd
Taxable gross / Currenttotals.taxable_gross_current
Taxable gross / YTDtotals.taxable_gross_ytd
Pre-tax deductions / Currenttotals.total_pre_tax_deductions_current
Pre-tax deductions / YTDtotals.total_pre_tax_deductions_ytd
Taxes / Currenttotals.total_taxes_current
Taxes / YTDtotals.total_taxes_ytd
Post-tax deductions / Currenttotals.total_post_tax_deductions_current
Post-tax deductions / YTDtotals.total_post_tax_deductions_ytd
Total deductions / Currenttotals.total_deductions_current
Total deductions / YTDtotals.total_deductions_ytd
Employer contributions / Currenttotals.total_employer_contributions_current
Employer contributions / YTDtotals.total_employer_contributions_ytd
Net pay / Currenttotals.net_pay_current
Net pay / YTDtotals.net_pay_ytd
Hours worked / Currenttotals.hours_worked_current
Hours worked / YTDtotals.hours_worked_ytd
Datos del extracto
Campo de salidaOrigen JSON o regla de exportación
Doc IDdoc_id
Sourcesource_filename
Issue datestatement.issue_date
Pay datestatement.pay_date
Period startstatement.period_start
Period endstatement.period_end
Period typestatement.period_type
Tax yearstatement.tax_year
Currencystatement.currency
Countrystatement.country
Empleado
Campo de salidaOrigen JSON o regla de exportación
Nameemployee.name
Pay frequencyemployee.pay_frequency
Employment typeemployee.employment_type
Employment statusemployee.employment_status
Filing statusemployee.filing_status
Tax codeemployee.tax_code
Empleador
Campo de salidaOrigen JSON o regla de exportación
Nameemployer.name
Tarifas salariales
Campo de salidaOrigen JSON o regla de exportación
Base pay raterates.base_pay_rate
Base pay unitrates.base_pay_unit
Annual salaryrates.annual_salary
Regular hours/periodrates.regular_hours_per_period
Overtime multiplierrates.overtime_multiplier
Devengos
Campo de salidaOrigen JSON o regla de exportación
#index(earnings[]) + 1
Descriptionearnings[].description || earnings[].code
Codeearnings[].code
Hoursearnings[].hours
Rateearnings[].rate
Currentearnings[].current_amount
YTDearnings[].ytd_amount
Memoearnings[].memo
Deducciones antes de impuestos
Campo de salidaOrigen JSON o regla de exportación
#index(pre_tax_deductions[]) + 1
Descriptionpre_tax_deductions[].description || pre_tax_deductions[].code
Codepre_tax_deductions[].code
Currentpre_tax_deductions[].current_amount
YTDpre_tax_deductions[].ytd_amount
Memopre_tax_deductions[].memo
Impuestos
Campo de salidaOrigen JSON o regla de exportación
#index(taxes[]) + 1
Descriptiontaxes[].description || taxes[].code
Codetaxes[].code
Jurisdictiontaxes[].jurisdiction
Ratetaxes[].rate
Currenttaxes[].current_amount
YTDtaxes[].ytd_amount
Deducciones después de impuestos
Campo de salidaOrigen JSON o regla de exportación
#index(post_tax_deductions[]) + 1
Descriptionpost_tax_deductions[].description || post_tax_deductions[].code
Codepost_tax_deductions[].code
Currentpost_tax_deductions[].current_amount
YTDpost_tax_deductions[].ytd_amount
Memopost_tax_deductions[].memo
Aportaciones del empleador
Campo de salidaOrigen JSON o regla de exportación
#index(employer_contributions[]) + 1
Descriptionemployer_contributions[].description || employer_contributions[].code
Codeemployer_contributions[].code
Currentemployer_contributions[].current_amount
YTDemployer_contributions[].ytd_amount
Avisos
Campo de salidaOrigen JSON o regla de exportación
#index(reconciliation_warnings[]) + 1
Warningreconciliation_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.

Documento
Ruta del campoTipo JSONPresencia
titlestring | nullCon valor predeterminado
captionstring | nullCon valor predeterminado
source_typestring | nullCon valor predeterminado
border_stylestring | nullCon valor predeterminado
languagestring | nullCon valor predeterminado
header_rowsinteger | nullCon valor predeterminado
notesstring | nullCon valor predeterminado
headers
Ruta del campoTipo JSONPresencia
headersarray<array<any>>Con valor predeterminado
rows
Ruta del campoTipo JSONPresencia
rowsarray<object>Con valor predeterminado
rows[].typestring | nullCon valor predeterminado
rows[].cellsarray<any>Con valor predeterminado
reconciliation_warnings
Ruta del campoTipo JSONPresencia
reconciliation_warningsarray<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.

Estructura de la tabla
Campo de salidaOrigen JSON o regla de exportación
titletitle
captioncaption
headers[][]headers[][]
rows[].cells[]rows[].cells[]
Formato de filas (Excel / Word)rows[].type → DATA | HEADER | SECTION | SUBTOTAL | GRAND_TOTAL
Anchura de la cuadrículamax(length(headers[]), length(rows[].cells)) || 1
Notesnotes
#index(reconciliation_warnings[]) + 1
Reconciliation warningsreconciliation_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.

Esquemas y diseños de exportación | ScanToExcel