Desarrolladores · API v1 · versión 2026-10-22
Documento equivalente electrónico
Emite el tiquete POS (20) y los otros nueve documentos equivalentes electrónicos de la DIAN —boleta de cine, espectáculos, juegos, transporte, peajes, extracto, tiquete aéreo, bolsa de valores y servicios públicos— y su nota de ajuste crédito (94) o débito (93).
1. Los diez tipos
document_type | Documento | Información propia (extension) | Numeración |
|---|---|---|---|
20 (por defecto) | Tiquete POS | No lleva; lleva pos.register (la caja) | Tu resolución POS |
25 | Boleta de cine | cinema | Consecutivo propio (DEC) |
27 | Espectáculos públicos | show | DEEP |
30 | Juegos localizados y no localizados (se acepta 32) | games (sin customer: el adquirente es la DIAN) | DEJL |
35 | Transporte de pasajeros | transport | DETT |
40 | Peajes | No lleva | DEP |
45 | Extracto | No lleva | EXT |
50 | Tiquete aéreo | air (obligatoria) | DETA |
55 | Bolsa de valores | stock_exchange | DEBV |
60 | Servicios públicos | public_services | SPD |
extension lleva UNA sola clave, la de su tipo ({"cinema": {…}}); otra clave es validation_error. El prefijo de los consecutivos propios se puede cambiar con prefix.
2. Antes de emitir
- La empresa habilitada ante la DIAN, con su software del modo de documentos equivalentes (
reason: "missing_software"si falta). - Para el POS: una resolución POS registrada en la app, vigente y con números libres (
numbering_unavailable,reason: "no_resolution"). Si la empresa tiene varias cajas o establecimientos, elige la resolución de la caja connumbering: {"prefix": "POS2"};GET /v1/company→capabilities.equivalent_documents.pos_numberinglista los prefijos. Los demás tipos usan su consecutivo propio. - Se comprueba antes de numerar; el documento se arma en seco para que lo que el XML no admita salga como
validation_errorsin gastar el número.
3. Emitir un tiquete POS
Genera un documento equivalente electrónico: el tiquete POS (20, por defecto) o cualquiera de los otros nueve tipos de la tabla 16.3 (document_type: 25 cine, 27 espectáculos, 30 juegos, 35 transporte, 40 peajes, 45 extracto, 50 tiquete aéreo, 55 bolsa de valores, 60 servicios públicos; cada uno con su información propia en extension). El POS lleva su caja en pos.register y, si la empresa tiene varias cajas, el prefijo de su resolución en numbering.prefix. Se expide como la factura: PDF, ZIP y correo después del 201 (espera equivalent_document.delivered o consulta delivery.status). La contingencia 07 (documento físico) se pide con contingency; la 08 (la DIAN no contestó) la decide Trevol y responde 202 con status: contingency. En habilitación, el set de pruebas por tipo es automático: mientras la DIAN lo valida responde 202 validating en las dos versiones y reintentar no vuelve a mandarlo. Cómo se calcula el CUDE del POS depende del despliegue del servicio, no de la empresa.
curl https://api.trevol.si/v1/equivalent_documents \
-H "Authorization: Bearer $TREVOL_LLAVE" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"external_id": "TIQ-1",
"customer": {
"final_consumer": true
},
"pos": {
"register": {
"plate": "CJ-01",
"location": "Local 1, Jamundí",
"cashier": "PEREZ ANA",
"type": "Caja principal"
}
},
"numbering": {
"prefix": "POS2"
},
"payment": {
"form": "cash",
"methods": [
{
"code": "10"
}
]
},
"items": [
{
"description": "Gaseosa 400 ml",
"code": "GAS-1",
"unit": "94",
"quantity": "2",
"unit_price": "3000",
"taxes": [
{
"code": "01",
"rate": "19"
}
]
},
{
"description": "Almuerzo",
"unit": "94",
"quantity": "1",
"unit_price": "18000"
}
]
}'HTTP/1.1 201 Created
Location: /v1/equivalent_documents/pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b
{
"id": "pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b",
"object": "equivalent_document",
"environment": "test",
"status": "accepted",
"number": "POS2994001",
"prefix": "POS2",
"external_id": "TIQ-1",
"origin": "api",
"cude": "abababababababababababababababababababababababababababababababababababababababababababababababab",
"qr": "https://catalogo-vpfe-hab.dian.gov.co/document/searchqr?documentkey=abababababababababababababababababababababababababababababababababababababababababababababababab",
"issued_at": "2026-10-23T09:15:02-05:00",
"customer": {
"final_consumer": true
},
"items": [
{
"description": "Gaseosa 400 ml",
"code": "GAS-1",
"unit": "94",
"quantity": "2",
"unit_price": "3000",
"taxes": [
{
"code": "01",
"rate": "19"
}
]
},
{
"description": "Almuerzo",
"unit": "94",
"quantity": "1",
"unit_price": "18000"
}
],
"payment": {
"form": "cash",
"methods": [
{
"code": "10"
}
]
},
"document_type": "20",
"operation_type": "22",
"pos": {
"register": {
"plate": "CJ-01",
"location": "Local 1, Jamundí",
"cashier": "PEREZ ANA",
"type": "Caja principal"
}
},
"contingency": null,
"totals": {
"subtotal": "24000.00",
"discounts": "0.00",
"line_extension": "24000.00",
"tax_exclusive": "6000.00",
"taxes": [
{
"code": "01",
"name": "IVA",
"rate": "19.00",
"base": "6000.00",
"amount": "1140.00"
}
],
"allowances": "0.00",
"charges": "0.00",
"rounding": "0.00",
"total": "25140.00",
"withholdings": [],
"prepayments": "0.00",
"net_payable": null,
"items": [
{
"gross": "6000.00",
"discount": "0.00",
"line_extension": "6000.00"
},
{
"gross": "18000.00",
"discount": "0.00",
"line_extension": "18000.00"
}
]
},
"dian": {
"status_code": "00",
"message": "Procesado Correctamente.",
"rules": []
},
"delivery": {
"status": "pending",
"pdf": false,
"zip": false,
"xml": true,
"email": {
"status": "pending",
"to": null,
"detail": null
}
},
"created_at": "2026-10-23T09:15:02-05:00",
"updated_at": "2026-10-23T09:15:03-05:00"
}En el POS, un comprador sin identificar es "customer": {"final_consumer": true}; la respuesta lo muestra igual.
4. La nota de ajuste
Genera la nota de ajuste de un documento equivalente: crédito (94) o débito (93) según note_type. El documento que ajusta es de Trevol (equivalent_document.id) o de otra plataforma. concept 1 a 5 (el 2 anula y lleva exactamente los valores del documento). Sin customer toma el del documento; en juegos el adquirente es la DIAN. Se expide como el documento: PDF, ZIP y correo.
curl https://api.trevol.si/v1/equivalent_document_adjustments \
-H "Authorization: Bearer $TREVOL_LLAVE" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"external_id": "TIQ-1-DEV",
"note_type": "credit",
"concept": "1",
"equivalent_document": {
"id": "pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
},
"items": [
{
"description": "Devolución gaseosa",
"unit": "94",
"quantity": "1",
"unit_price": "3000",
"taxes": [
{
"code": "01",
"rate": "19"
}
]
}
]
}'
5. Contingencia, set de pruebas y entrega
- Entrega. PDF, ZIP y correo como la factura: se hacen después del
201(esperaequivalent_document.deliveredo consultadelivery.status). - Contingencia. La 07 (transcribes un documento físico) se pide con
contingency. La 08 (la DIAN no contestó) la decide Trevol: la respuesta es202constatus: "contingency", Trevol reenvía y, en el POS, manda el respaldo POS 20;contingency.backuplo muestra. - Set de pruebas (habilitación). Es automático, por tipo: no mandas ningún
test_set_id. Mientras la DIAN valida el set, la respuesta es202constatus: "validating"en las dos versiones: no es un error, no vuelvas a emitir; Trevol solo consulta, nunca lo manda otra vez.PUTen ese estado es409 invalid_state. - Cómo se calcula el CUDE del POS (con el PIN del software o con la clave técnica de la resolución) depende de la configuración del servicio de Trevol, no de tu empresa.
- El
external_ides único entre facturas, notas, documentos soporte y equivalentes (y sus notas). - Cuenta como facturación en el cobro.
Las respuestas son las de toda la API: 201 cuando la DIAN valida, 422 dian_rejected con document cuando la rechaza, 422 validation_error si Trevol lo rechaza antes de numerar (no se gasta ningún número), 402 sin saldo, y con la DIAN sin contestar un 202 processing (versión 2026-10-22) o un 503 dian_unavailable (2026-10-21). Idempotency-Key es obligatoria al crear o corregir, y external_id es opcional.
6. Rutas
| Método | Ruta | Qué hace |
|---|---|---|
| POST | /v1/equivalent_documents | Emitir un documento equivalente |
| GET | /v1/equivalent_documents | Listar (documento equivalente) |
| POST | /v1/equivalent_documents/preview | Calcular un documento equivalente sin emitirlo |
| GET | /v1/equivalent_documents/{id} | Un documento equivalente |
| PUT | /v1/equivalent_documents/{id} | Corregir un documento equivalente rechazado (mismo número) y reenviarlo |
| POST | /v1/equivalent_documents/{id}/send | Reenviar una pendiente o en error |
| GET | /v1/equivalent_documents/{id}/pdf | Archivo pdf |
| GET | /v1/equivalent_documents/{id}/xml | Archivo xml |
| GET | /v1/equivalent_documents/{id}/zip | Archivo zip |
| GET | /v1/equivalent_documents/{id}/dian_response | Archivo dian_response |
| POST | /v1/equivalent_document_adjustments | Emitir una nota de ajuste del documento equivalente |
| GET | /v1/equivalent_document_adjustments | Listar (nota de ajuste del documento equivalente) |
| POST | /v1/equivalent_document_adjustments/preview | Calcular una nota de ajuste del documento equivalente sin emitirla |
| GET | /v1/equivalent_document_adjustments/{id} | Una nota de ajuste del documento equivalente |
| PUT | /v1/equivalent_document_adjustments/{id} | Corregir una nota de ajuste del documento equivalente rechazada (mismo número) y reenviarla |
| POST | /v1/equivalent_document_adjustments/{id}/send | Reenviar una pendiente o en error |
| GET | /v1/equivalent_document_adjustments/{id}/pdf | Archivo pdf |
| GET | /v1/equivalent_document_adjustments/{id}/xml | Archivo xml |
| GET | /v1/equivalent_document_adjustments/{id}/zip | Archivo zip |
| GET | /v1/equivalent_document_adjustments/{id}/dian_response | Archivo dian_response |
7. Avisos (webhooks)
Salen por cualquier camino. El data es un resumen: nunca el comprador ni las líneas.
| Tipo | Cuándo |
|---|---|
equivalent_document.accepted | La DIAN validó el documento equivalente. Pasa por cualquier camino (API, app, conector o verificación de fondo). (Catálogo 2: un * de un endpoint creado antes de la fase 3 no lo recibe hasta que se guarde de nuevo su lista de eventos.) |
equivalent_document.rejected | La DIAN rechazó el documento equivalente. Corrígela con PUT y se reenvía con el mismo número. (Catálogo 2: un * de un endpoint creado antes de la fase 3 no lo recibe hasta que se guarde de nuevo su lista de eventos.) |
equivalent_document.error | El documento equivalente quedó en error: la DIAN no confirmó y Trevol dejó de reintentar. data.error lleva un code y un texto fijo (nunca el mensaje de la DIAN). (Catálogo 2: un * de un endpoint creado antes de la fase 3 no lo recibe hasta que se guarde de nuevo su lista de eventos.) |
equivalent_document.delivered | El documento equivalente ya tiene PDF, ZIP y un correo en estado final (la primera vez). (Catálogo 2: un * de un endpoint creado antes de la fase 3 no lo recibe hasta que se guarde de nuevo su lista de eventos.) |
equivalent_document.email_bounced | El correo de el documento equivalente rebotó o el comprador lo marcó como queja (delivery.email.status: bounced o complained). (Catálogo 2: un * de un endpoint creado antes de la fase 3 no lo recibe hasta que se guarde de nuevo su lista de eventos.) |
equivalent_document.email_failed | El correo de el documento equivalente falló de forma definitiva (delivery.email.status: failed). (Catálogo 2: un * de un endpoint creado antes de la fase 3 no lo recibe hasta que se guarde de nuevo su lista de eventos.) |
equivalent_document_adjustment.accepted | La DIAN validó la nota de ajuste del documento equivalente. Pasa por cualquier camino (API, app, conector o verificación de fondo). (Catálogo 2: un * de un endpoint creado antes de la fase 3 no lo recibe hasta que se guarde de nuevo su lista de eventos.) |
equivalent_document_adjustment.rejected | La DIAN rechazó la nota de ajuste del documento equivalente. Corrígela con PUT y se reenvía con el mismo número. (Catálogo 2: un * de un endpoint creado antes de la fase 3 no lo recibe hasta que se guarde de nuevo su lista de eventos.) |
equivalent_document_adjustment.error | La nota de ajuste del documento equivalente quedó en error: la DIAN no confirmó y Trevol dejó de reintentar. data.error lleva un code y un texto fijo (nunca el mensaje de la DIAN). (Catálogo 2: un * de un endpoint creado antes de la fase 3 no lo recibe hasta que se guarde de nuevo su lista de eventos.) |
equivalent_document_adjustment.delivered | La nota de ajuste del documento equivalente ya tiene PDF, ZIP y un correo en estado final (la primera vez). (Catálogo 2: un * de un endpoint creado antes de la fase 3 no lo recibe hasta que se guarde de nuevo su lista de eventos.) |
equivalent_document_adjustment.email_bounced | El correo de la nota de ajuste del documento equivalente rebotó o el comprador lo marcó como queja (delivery.email.status: bounced o complained). (Catálogo 2: un * de un endpoint creado antes de la fase 3 no lo recibe hasta que se guarde de nuevo su lista de eventos.) |
equivalent_document_adjustment.email_failed | El correo de la nota de ajuste del documento equivalente falló de forma definitiva (delivery.email.status: failed). (Catálogo 2: un * de un endpoint creado antes de la fase 3 no lo recibe hasta que se guarde de nuevo su lista de eventos.) |
{
"id": "evt_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b",
"object": "event",
"type": "equivalent_document.delivered",
"timestamp": "2026-10-23T14:15:03Z",
"environment": "test",
"api_version": "2026-10-22",
"data": {
"object": "equivalent_document",
"id": "pos_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b",
"status": "accepted",
"environment": "test",
"number": "POS2994001",
"prefix": "POS2",
"external_id": "TIQ-1",
"origin": "api",
"cude": "abababababababababababababababababababababababababababababababababababababababababababababababab",
"issued_at": "2026-10-23T09:15:02-05:00",
"total": "25140.00",
"document_type": "20",
"dian": {
"status_code": "00",
"rules": []
},
"delivery": {
"pdf": true,
"zip": true,
"email": {
"status": "sent"
}
}
}
}
8. Campos
Documento equivalente (cuerpo de POST y PUT)
| Campo | Tipo | Qué es |
|---|---|---|
external_id | texto | Tu identificador del documento: único entre los documentos API de la empresa y el ambiente. |
customer | Customer | El adquirente. Para consumidor final: {"final_consumer": true}. La relación de juegos (30) no lleva customer: el adquirente es la DIAN. |
items obligatorio | lista de EquivalentItem | Las líneas (1 a 500). Retenciones solo como autorretenciones del emisor (self_withholding: true). Máximo 500. |
payment | Payment | |
notes | lista de texto | Máximo 10. |
period | Period | |
references | References | |
allowance_charges | lista de AllowanceCharge | Descuentos y recargos globales (no tocan las bases). Máximo 20. |
prepayments | lista de Prepayment | Anticipos (informativos: no restan del total). Máximo 20. |
withholdings | lista de Withholding | Retenciones (informativas): 05 ReteIVA, 06 ReteRenta, 07 ReteICA. Máximo 10. |
rounding | booleano o decimal | true = redondeo al peso; o un valor entre -2.00 y 2.00. |
document_type | texto | Tipo de documento equivalente (tabla 16.3): "20" tiquete POS (por defecto), "25" boleta de cine, "27" espectáculos públicos, "30" juegos localizados y no localizados (se acepta "32"), "35" transporte de pasajeros, "40" peajes, "45" extracto, "50" tiquete aéreo, "55" bolsa de valores o "60" servicios públicos. |
operation_type | texto | Tipo de operación (CustomizationID, tabla 16.4.1) del tipo de documento. Por defecto, el primero del tipo ("10" en el POS). |
pos | Pos | Obligatorio en el tiquete POS (20) y prohibido en los demás: la caja que expide el tiquete y, opcional, los beneficios del comprador. |
extension | Extension | La información propia del tipo, con UNA clave, la de su document_type: cinema (25), show (27), games (30), transport (35), air (50), stock_exchange (55) o public_services (60). Prohibida en el POS (20), peajes (40) y extracto (45). |
prefix | texto | Solo en los tipos sin resolución (todos menos el POS): el prefijo del consecutivo propio (1 a 4 letras o dígitos). Por defecto, el del tipo (DEC, DEEP, DEJL, DETT, DEP, EXT, DETA, DEBV, SPD). |
origin_note | OriginNote | La nota de ajuste que dio origen a este documento (opcional). |
contingency | Contingency | Solo la contingencia 07 (el emisor transcribe un documento físico): physical_document con number, date y type. La 08 (la DIAN no contestó) no se pide: la decide Trevol y el documento responde 202 con status: contingency. |
numbering | Numbering | Solo en el POS: el prefijo de la resolución POS que numera (una empresa con varias cajas o establecimientos tiene varias). Sin él, la más nueva vigente. Si no existe, numbering_unavailable (no_resolution). |
Línea (items[])
| Campo | Tipo | Qué es |
|---|---|---|
code | texto | Código (texto). |
description obligatorio | texto | |
unit | texto | Unidad de medida (tabla 13.3.6). Por defecto 94 (unidad). |
quantity obligatorio | decimal | Número o texto decimal con punto («150000.50»). |
unit_price obligatorio | decimal | Precio unitario SIN impuestos. |
taxes | lista de ItemTax | Impuestos de la línea: {code, rate} porcentual, {code: "01", excluded: true} o nominal {code, unit_amount, unit?, quantity?}. Máximo 12. |
discounts | lista de ItemAllowance | Máximo 10. |
charges | lista de ItemAllowance | Máximo 10. |
withholdings | lista de ItemWithholding | Retenciones (informativas): 05 ReteIVA, 06 ReteRenta, 07 ReteICA. Máximo 10. |
free_of_charge | FreeOfCharge | |
standard_code | StandardCode | |
brand | texto | |
model | texto | |
income | own | collected | third_party | Mandatos (tabla 16.16): "own" (por defecto), "collected" (ingreso recaudado para terceros) o "third_party" (facturado para terceros); los dos últimos con mandator. En 272 y 274 la línea del mandante va con "collected". |
mandator | ItemMandator | El mandante de un ingreso para terceros (con NIT en 272 y 274). |
Caja del POS (pos)
| Campo | Tipo | Qué es |
|---|---|---|
register obligatorio | PosRegister | |
buyer | PosBuyer |
Caja (pos.register)
| Campo | Tipo | Qué es |
|---|---|---|
plate obligatorio | texto | Placa de inventario de la caja (DEPD26). |
location obligatorio | texto | Ubicación de la caja (DEPD28). |
cashier obligatorio | texto | Nombre del cajero o vendedor (DEPD30). |
type obligatorio | texto | Tipo de caja (DEPD32). |
sale_code | texto | Código de la venta. Por defecto, el número del documento (DEPD34). |
Comprador (pos.buyer)
| Campo | Tipo | Qué es |
|---|---|---|
code | texto | Por defecto, el documento del adquirente. |
name | texto | Por defecto, el nombre del adquirente. |
points | decimal | Puntos del comprador. Por defecto, 0. |
Numeración (numbering)
| Campo | Tipo | Qué es |
|---|---|---|
prefix obligatorio | texto | Prefijo de la resolución POS o de documento soporte que numera (el de GET /v1/company → capabilities.equivalent_documents.pos_numbering o capabilities.support_documents.numbering). |
Contingencia (contingency)
| Campo | Tipo | Qué es |
|---|---|---|
physical_document | PhysicalDocument |
Documento físico (contingency.physical_document)
| Campo | Tipo | Qué es |
|---|---|---|
number | texto | |
date | fecha (AAAA-MM-DD) | |
type | texto | Codificación propia del tipo del documento físico (hasta 10 caracteres). Por defecto, FISICO. |
Nota de origen (origin_note)
| Campo | Tipo | Qué es |
|---|---|---|
number obligatorio | texto | |
cude obligatorio | texto | El CUDE de la nota de ajuste (96 hex). |
issue_date obligatorio | fecha (AAAA-MM-DD) |
Información propia del tipo (extension)
La información propia del tipo de documento equivalente: UNA clave, la de su document_type (cinema 25, show 27, games 30, transport 35, air 50, stock_exchange 55, public_services 60).
| Campo | Tipo | Qué es |
|---|---|---|
cinema | CinemaExtension | |
show | ShowExtension | |
games | GamesExtension | |
transport | TransportExtension | |
air | AirExtension | |
stock_exchange | StockExchangeExtension | |
public_services | PublicServicesExtension |
CinemaScreening
| Campo | Tipo | Qué es |
|---|---|---|
room obligatorio | texto | |
seats obligatorio | texto | |
screening obligatorio | texto | |
location | texto | |
date | fecha (AAAA-MM-DD) | |
time | texto |
CinemaExtension
| Campo | Tipo | Qué es |
|---|---|---|
address obligatorio | texto | |
cinema_room | texto | |
screenings obligatorio | lista de CinemaScreening | Máximo 50. |
ShowProducer
| Campo | Tipo | Qué es |
|---|---|---|
name obligatorio | texto | |
nit obligatorio | texto | |
lep | texto |
ShowEvent
| Campo | Tipo | Qué es |
|---|---|---|
name obligatorio | texto | |
locality obligatorio | texto | |
pulep | texto | |
sale_type | texto | |
sale_phase | texto | |
category | texto | |
municipality_code | texto | Código DANE del municipio (5 dígitos). |
venue | texto | |
date | fecha (AAAA-MM-DD) | |
time | texto |
ShowExtension
| Campo | Tipo | Qué es |
|---|---|---|
producer obligatorio | ShowProducer | |
event obligatorio | ShowEvent |
GamesVenue
| Campo | Tipo | Qué es |
|---|---|---|
address obligatorio | texto | |
deposit obligatorio | decimal | Número o texto decimal con punto («150000.50»). |
Game
| Campo | Tipo | Qué es |
|---|---|---|
type obligatorio | texto | |
total obligatorio | entero |
GameCredit
| Campo | Tipo | Qué es |
|---|---|---|
serial obligatorio | texto | |
amount obligatorio | decimal | Número o texto decimal con punto («150000.50»). |
GamesExtension
| Campo | Tipo | Qué es |
|---|---|---|
venue obligatorio | GamesVenue | |
games obligatorio | lista de Game | Máximo 2. |
credits | lista de GameCredit | Máximo 500. |
TransportExtension
| Campo | Tipo | Qué es |
|---|---|---|
mode obligatorio | texto | |
vehicle_id obligatorio | texto | |
vehicle obligatorio | texto | |
origin obligatorio | texto | |
destination obligatorio | texto |
AirCollection
| Campo | Tipo | Qué es |
|---|---|---|
name obligatorio | texto | |
data obligatorio | lista de InteroperabilityData | Máximo 50. |
AirExtension
| Campo | Tipo | Qué es |
|---|---|---|
group | texto | |
collections obligatorio | lista de AirCollection | Máximo 50. |
passengers obligatorio | lista de AirCollection | Máximo 50. |
StockExchangePrices
| Campo | Tipo | Qué es |
|---|---|---|
registration | texto | |
total_assignment | texto |
StockExchangeExtension
| Campo | Tipo | Qué es |
|---|---|---|
trade_number obligatorio | texto | |
settlement_date obligatorio | fecha (AAAA-MM-DD) | |
nominal_quantity obligatorio | decimal | Número o texto decimal con punto («150000.50»). |
prices obligatorio | StockExchangePrices | |
yields | decimal | Número o texto decimal con punto («150000.50»). |
value obligatorio | decimal | Número o texto decimal con punto («150000.50»). |
commission_percent obligatorio | decimal | Número o texto decimal con punto («150000.50»). |
ConsumptionAdjustment
| Campo | Tipo | Qué es |
|---|---|---|
reason obligatorio | texto | |
amount obligatorio | decimal | Número o texto decimal con punto («150000.50»). |
Meter
| Campo | Tipo | Qué es |
|---|---|---|
number obligatorio | texto | |
previous_date | fecha (AAAA-MM-DD) | |
previous_reading | decimal | Número o texto decimal con punto («150000.50»). |
current_date | fecha (AAAA-MM-DD) | |
current_reading | decimal | Número o texto decimal con punto («150000.50»). |
method | texto | |
days | entero |
Consumption
| Campo | Tipo | Qué es |
|---|---|---|
unit | texto | Unidad de medida (tabla 13.3.6). Por defecto 94 (unidad). |
quantity obligatorio | decimal | Número o texto decimal con punto («150000.50»). |
subtotal obligatorio | decimal | Número o texto decimal con punto («150000.50»). |
discounts | lista de ConsumptionAdjustment | Máximo 50. |
charges | lista de ConsumptionAdjustment | Máximo 50. |
meter | Meter |
ThirdPartyCompany
| Campo | Tipo | Qué es |
|---|---|---|
nit obligatorio | texto | |
name obligatorio | texto |
ThirdPartyCharge
| Campo | Tipo | Qué es |
|---|---|---|
service obligatorio | texto | |
company obligatorio | ThirdPartyCompany | |
reason | texto | |
contract | texto | |
period | texto | |
note | texto | |
total obligatorio | decimal | Número o texto decimal con punto («150000.50»). |
charges | lista de ConsumptionAdjustment | Máximo 50. |
PublicServicesExtension
| Campo | Tipo | Qué es |
|---|---|---|
service obligatorio | texto | |
company obligatorio | texto | |
reason | texto | |
contract obligatorio | texto | |
use obligatorio | texto | |
stratum obligatorio | texto | |
payment_due_date | fecha (AAAA-MM-DD) | |
payment_reference | texto | |
due_date | fecha (AAAA-MM-DD) | |
period | fecha (AAAA-MM-DD) | |
cycle_days | entero | |
notes | lista de texto | Máximo 10. |
consumptions obligatorio | lista de Consumption | Máximo 50. |
third_parties | lista de ThirdPartyCharge | Máximo 20. |
Nota de ajuste (cuerpo)
| Campo | Tipo | Qué es |
|---|---|---|
external_id | texto | Tu identificador del documento: único entre los documentos API de la empresa y el ambiente. |
customer | Customer | Opcional con equivalent_document.id: se toma el adquirente del documento (si viene, tiene que ser el mismo). |
items obligatorio | lista de EquivalentAdjustmentItem | Las líneas (1 a 500). Máximo 500. |
payment | Payment | |
notes | lista de texto | Máximo 10. |
period | Period | |
references | References | |
allowance_charges | lista de AllowanceCharge | Descuentos y recargos globales (no tocan las bases). Máximo 20. |
prepayments | lista de Prepayment | Anticipos (informativos: no restan del total). Máximo 20. |
rounding | booleano o decimal | true = redondeo al peso; o un valor entre -2.00 y 2.00. |
note_type obligatorio | credit | debit | "credit" (nota de ajuste crédito, 94) o "debit" (débito, 93). |
concept obligatorio | texto | Concepto de la nota (tabla 16.6): "1" devolución parcial, "2" anulación del documento (lleva exactamente sus valores), "3" rebaja o descuento, "4" ajuste de precio, "5" otros. |
description | texto | Opcional (20 a 5000 caracteres). Sin ella, Trevol pone el texto de la tabla (el EXACTO en la nota débito: NADBF04). |
equivalent_document obligatorio | EquivalentDocumentReference | El documento que ajusta: {"id": "pos_…"} (de Trevol: validado, de la empresa y el ambiente de la llave) o {number, cude, issue_date, document_type, total?} si es de otra plataforma (total hace falta para anularlo). |
Línea de la nota
| Campo | Tipo | Qué es |
|---|---|---|
code | texto | Código (texto). |
description obligatorio | texto | |
unit | texto | Unidad de medida (tabla 13.3.6). Por defecto 94 (unidad). |
quantity obligatorio | decimal | Número o texto decimal con punto («150000.50»). |
unit_price obligatorio | decimal | Precio unitario SIN impuestos. |
taxes | lista de ItemTax | Impuestos de la línea: {code, rate} porcentual, {code: "01", excluded: true} o nominal {code, unit_amount, unit?, quantity?}. Máximo 12. |
discounts | lista de ItemAllowance | Máximo 10. |
charges | lista de ItemAllowance | Máximo 10. |
free_of_charge | FreeOfCharge | |
standard_code | StandardCode | |
brand | texto | |
model | texto | |
income | own | collected | third_party | Mandatos (tabla 16.16): "own" (por defecto), "collected" o "third_party". |
mandator | ItemMandator |
Documento que ajusta (equivalent_document)
- id (obligatorios: id)
- number, cude, issue_date, document_type, total (obligatorios: number, cude, issue_date, document_type)