Lecturas contables
Cuatro recursos de solo lectura sobre el libro contable: el plan de cuentas, el diario (con su cadena de hashes), el directorio y la cartera abierta. Todos requieren
book_id
— el id del libro de tu llave — y la política del recurso acota cada fila a ese libro. Los asientos y documentos se escriben por los motores (
/invoices
,
/purchases
), nunca por JSON:API.
Plan de cuentas#
/api/v1/accounts
Bearer
Objetos
book_account
, ordenados por código.
book_id
uuid
requerido
El libro de la llave.
filter[…]
object
Filtra por atributo:
filter[kind]=customer
, u operadores anidados como
filter[issue_date][greater_than]=2026-07-01
. Combinable con
filter[and]
/
filter[or]
.
sort
string
Atributos separados por coma; prefijo
-
para descendente:
sort=-issue_date
.
page[limit]
integer
Máximo de registros por página.
page[offset]
integer
Desplazamiento desde el inicio del listado.
page[count]
boolean
Con
true
, la respuesta incluye el total en
meta.page.total
.
fields[tipo]
string
Atributos a devolver, separados por coma — el sparse fieldset de JSON:API.
active
boolean
requerido
false
desactiva el registro sin borrarlo.
code
string
requerido
Código jerárquico de la cuenta (
1.1.02.01
).
control
boolean
requerido
Con
true
es cuenta de control: solo recibe asientos de un auxiliar.
name
string
requerido
Nombre de la cuenta.
type
enum
requerido
Naturaleza: activo, pasivo, patrimonio, ingreso o gasto.
assetliabilityequityincomeexpense
cash_flow_class
enum
Clasificación para el estado de flujos: operación, inversión, financiamiento o caja.
operatinginvestingfinancingcash
currency
string
Moneda de la cuenta (una cuenta por moneda).
role
enum
Rol de sistema que los motores resuelven contra la cuenta (bancos, CxC, IVA…), si tiene uno.
retained_earningscurrent_earningsfx_gainfx_lossaccounts_receivableaccounts_payablebankcashcard_clearingsales_revenuevat_payablepurchasesvat_receivableice_payablewithholding_payablewithholding_vat_payablewithholding_receivablewithholding_vat_receivableprofit_sharing_payabledividends_payablefinancial_incomemerchant_feesperception_payabletips_payabledetraction_fundcheques_in_portfoliocustomer_depositssupplier_advancesinventorycogsinventory_adjustmentsalary_expensepayroll_burden_expensesalaries_payablesocial_security_payablepayroll_provisions_payableemployee_receivablesocial_security_loans_payablefixed_assetaccumulated_depreciationdepreciation_expensegain_on_disposalloss_on_disposalinterest_expenseincome_tax_expense
tax_code
string
Casillero tributario asociado, si aplica.
Devuelve
·
200
con
data
— lista de objetos
book_account
.
curl "https://edge.datil.com/api/v1/accounts?book_id=1d2f4b6a-8c0e-4a2b-9d3f-5e7a9c1b3d5f" \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"data": [
{
"type": "book_account",
"id": "0a2c4e6b-8d0f-4b1d-9c3e-5a7c9e1b3d5a",
"attributes": {
"active": true,
"code": "1.1.02.01",
"control": false,
"name": "Bancos",
"type": "asset",
"cash_flow_class": "cash",
"currency": "USD",
"role": "bank",
"tax_code": null
}
}
]
}
Diario#
/api/v1/journals
Bearer
Objetos
book_journal
: cada asiento con su
hash
y
prev_hash
— la cadena verificable del libro.
book_id
uuid
requerido
El libro de la llave.
filter[…]
object
Filtra por atributo:
filter[kind]=customer
, u operadores anidados como
filter[issue_date][greater_than]=2026-07-01
. Combinable con
filter[and]
/
filter[or]
.
sort
string
Atributos separados por coma; prefijo
-
para descendente:
sort=-issue_date
.
page[limit]
integer
Máximo de registros por página.
page[offset]
integer
Desplazamiento desde el inicio del listado.
page[count]
boolean
Con
true
, la respuesta incluye el total en
meta.page.total
.
fields[tipo]
string
Atributos a devolver, separados por coma — el sparse fieldset de JSON:API.
currency
string
requerido
Moneda ISO 4217 (
USD
en Ecuador,
PEN
en Perú).
date
date
requerido
Fecha del asiento.
environment
enum
requerido
Partición del dato: por una llave solo viaja
production
.
testproduction
hash
string
requerido
SHA-256 del asiento encadenado — el eslabón del libro verificable.
posted_at
any
requerido
Momento de contabilización.
sequence
integer
requerido
Número correlativo del asiento dentro del libro.
source
enum
requerido
Qué motor lo generó: manual, factura, banco, inventario, nómina…
manualsubledgerinvoicebillimportbankfxcloseinventorypayrollassets
status
enum
requerido
posted
contabilizado ·
void
anulado.
draftpostedvoid
effective_date
date
Fecha de efecto contable, si difiere de la del asiento.
memo
string
Glosa del asiento.
posted_by_id
uuid
Quién lo contabilizó (id).
posted_by_name
string
Quién lo contabilizó (nombre).
prev_hash
string
El hash del asiento anterior en la cadena.
reversed_by_id
uuid
El asiento que lo reversó, si fue reversado.
source_ref
string
Referencia del documento de origen.
Devuelve
·
200
con
data
— lista de objetos
book_journal
.
curl "https://edge.datil.com/api/v1/journals?book_id=1d2f4b6a-8c0e-4a2b-9d3f-5e7a9c1b3d5f&sort=-sequence&page[limit]=20" \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"data": [
{
"type": "book_journal",
"id": "6a1c3e5b-7d9f-4a2c-8e0b-2d4f6a8c0e2b",
"attributes": {
"currency": "USD",
"date": "2026-07-03",
"environment": "production",
"hash": "b0a4f2d81c6e3a5b7d9f1e3c5a7b9d1f3e5c7a9b1d3f5e7c9a1b3d5f7e9c1a3b",
"posted_at": "2026-07-03T14:07:00Z",
"sequence": 482,
"source": "invoice",
"status": "posted",
"effective_date": "2026-07-03",
"memo": "Factura 001-002-000000123",
"posted_by_id": "8c0e2b4d-6f8a-4c1e-9b3d-5f7a9c1e3b5d",
"posted_by_name": "María Paz",
"prev_hash": "7e9c1a3b5d7f9e1c3a5b7d9f1e3c5a7b9d1f3e5c7a9b1d3f5e7c9a1b3d5f7e9c",
"reversed_by_id": null,
"source_ref": "001-002-000000123"
}
}
]
}
Directorio (parties)#
/api/v1/parties
Bearer
La misma tabla que
/contacts
, mediante el argumento explícito
book_id
— útil si tu integración ya usa las lecturas contables.
book_id
uuid
requerido
El libro de la llave.
filter[…]
object
Filtra por atributo:
filter[kind]=customer
, u operadores anidados como
filter[issue_date][greater_than]=2026-07-01
. Combinable con
filter[and]
/
filter[or]
.
sort
string
Atributos separados por coma; prefijo
-
para descendente:
sort=-issue_date
.
page[limit]
integer
Máximo de registros por página.
page[offset]
integer
Desplazamiento desde el inicio del listado.
page[count]
boolean
Con
true
, la respuesta incluye el total en
meta.page.total
.
fields[tipo]
string
Atributos a devolver, separados por coma — el sparse fieldset de JSON:API.
Devuelve
·
200
con
data
— lista de objetos
book_party
.
curl "https://edge.datil.com/api/v1/parties?book_id=1d2f4b6a-8c0e-4a2b-9d3f-5e7a9c1b3d5f" \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"data": [
{
"type": "book_party",
"id": "5b7e29d4-1c8a-4f3e-9b6d-2e4a8c0d1f35",
"attributes": {
"active": true,
"identification": "0992345678001",
"kind": "customer",
"name": "ACME S.A.",
"payment_method": "transfer",
"related_party": false,
"address": null,
"bank_account_number": null,
"bank_account_type": "savings",
"bank_name": null,
"city": null,
"credit_limit_cents": null,
"email": "pagos@acme.ec",
"expense_account_id": null,
"group": null,
"id_type": "04",
"paid_from_account_code": null,
"payment_terms_days": null,
"person_type": "sociedad",
"phone": null
}
}
]
}
Cartera abierta#
/api/v1/open-items
Bearer
Objetos
book_open_item
pendientes: cuentas por cobrar (
receivable
) o por pagar (
payable
), con montos en centavos enteros.
book_id
uuid
requerido
El libro de la llave.
kind
enum
requerido
Cobrar o pagar.
receivablepayable
filter[…]
object
Filtra por atributo:
filter[kind]=customer
, u operadores anidados como
filter[issue_date][greater_than]=2026-07-01
. Combinable con
filter[and]
/
filter[or]
.
sort
string
Atributos separados por coma; prefijo
-
para descendente:
sort=-issue_date
.
page[limit]
integer
Máximo de registros por página.
page[offset]
integer
Desplazamiento desde el inicio del listado.
page[count]
boolean
Con
true
, la respuesta incluye el total en
meta.page.total
.
fields[tipo]
string
Atributos a devolver, separados por coma — el sparse fieldset de JSON:API.
base_cents
integer
requerido
Base imponible en centavos.
currency
string
requerido
Moneda ISO 4217 (
USD
en Ecuador,
PEN
en Perú).
doc_type
enum
requerido
Documento que originó la partida.
invoicebillcredit_notedebit_noteothercredit
environment
enum
requerido
Partición del dato: por una llave solo viaja
production
.
testproduction
functional_original_cents
integer
requerido
Importe original en la moneda funcional del libro, en centavos.
functional_outstanding_cents
integer
requerido
Saldo pendiente en moneda funcional, en centavos.
fx_rate
string
requerido
Tipo de cambio aplicado, como cadena decimal.
installments
array
requerido
issue_date
date
requerido
Fecha de emisión (AAAA-MM-DD).
kind
enum
requerido
Por cobrar (
receivable
) o por pagar (
payable
).
receivablepayable
original_cents
integer
requerido
Importe original en centavos enteros — los montos contables nunca viajan como flotantes.
outstanding_cents
integer
requerido
Saldo pendiente en centavos.
status
enum
requerido
open
pendiente ·
partial
con abonos ·
paid
saldada ·
void
anulada.
openpartialpaidvoid
tax_cents
integer
requerido
Impuestos en centavos.
control_account_id
uuid
doc_number
string
Número del documento.
due_date
date
Fecha de vencimiento.
journal_id
uuid
El asiento que abrió la partida.
memo
string
Glosa.
rescheduled_at
datetime
rescheduled_by_ref
string
source_ref
string
Referencia del documento de origen.
Devuelve
·
200
con
data
— lista de objetos
book_open_item
.
curl "https://edge.datil.com/api/v1/open-items?book_id=1d2f4b6a-8c0e-4a2b-9d3f-5e7a9c1b3d5f&kind=receivable" \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"data": [
{
"type": "book_open_item",
"id": "9b1d3f5a-7c9e-4d0b-8a2c-4e6a8c0b2d4c",
"attributes": {
"base_cents": 10000,
"currency": "USD",
"doc_type": "invoice",
"environment": "production",
"functional_original_cents": 11500,
"functional_outstanding_cents": 11500,
"fx_rate": "1.0",
"installments": [],
"issue_date": "2026-07-03",
"kind": "receivable",
"original_cents": 11500,
"outstanding_cents": 11500,
"status": "open",
"tax_cents": 1500,
"control_account_id": null,
"doc_number": "001-002-000000123",
"due_date": "2026-08-02",
"journal_id": "6a1c3e5b-7d9f-4a2c-8e0b-2d4f6a8c0e2b",
"memo": null,
"rescheduled_at": null,
"rescheduled_by_ref": null,
"source_ref": null
}
}
]
}