Documentación · Referencia · API v1 · versión 2026-10-22
Notas crédito
Las operaciones de Notas crédito de la API de Trevol: parámetros, cuerpo, respuestas y ejemplos de código.
Notas crédito electrónicas.
Los ejemplos son peticiones con cURL. La llave va en TREVOL_API_KEY; los cuerpos de ejemplo son los de la especificación. Los errores comunes están en Errores.
Emitir una nota crédito
POST /v1/credit_notes · createCreditNote
Parámetros
Idempotency-KeycabeceratextoobligatorioObligatoria: 1 a 255 caracteres ASCII visibles, única por pedido (7 días).
Cuerpo (NoteInput, obligatorio)
external_idtextoTu identificador del documento: único entre los documentos API de la empresa y el ambiente.customerCustomer- Las líneas (1 a 500). Máximo 500.
paymentPaymentnoteslista de textoMáximo 10.periodPeriodreferencesReferencesallowance_chargeslista de AllowanceChargeDescuentos y recargos globales (no tocan las bases). Máximo 20.prepaymentslista de PrepaymentAnticipos (informativos: no restan del total). Máximo 20.withholdingslista de WithholdingRetenciones (informativas): 05 ReteIVA, 06 ReteRenta, 07 ReteICA. Máximo 10.roundingbooleano o decimaltrue = redondeo al peso; o un valor entre -2.00 y 2.00.concepttextoobligatorioConcepto de corrección: NC 1–6, ND 1–4.descriptiontextoinvoiceInvoiceReference
Respuestas
| Estado | Qué pasó |
|---|---|
| 201 | El documento (Document) |
| 202 | Versión 2026-10-22: la DIAN no contestó (status: processing; Trevol termina el documento y avisa por webhook; no crees otro documento para la misma venta, y si repites con la misma Idempotency-Key respondemos sin enviar) o el documento se está enviando (status: sending); también la contingencia (status: contingency). Lleva Location y, salvo la contingencia, Retry-After: 30. En 2026-10-21 la DIAN sin contestar es un 503 dian_unavailable. (Document) |
| 402 | Error (application/problem+json) (Problem) |
| 409 | Error (application/problem+json) (Problem) |
| 422 | Error (application/problem+json) (Problem) |
| 429 | Error (application/problem+json) (Problem) |
| 503 | Error (application/problem+json) (Problem) |
| Error | Error (application/problem+json) (Problem) |
POST /v1/credit_notes
curl -X POST "https://api.trevol.si/v1/credit_notes" \
-H "Authorization: Bearer $TREVOL_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"external_id": "DEV-2026-000045",
"concept": "1",
"description": "Devolución de una unidad por empaque dañado",
"invoice": {
"id": "inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
},
"items": [
{
"description": "Café especial 500 g",
"code": "CAF-500",
"unit": "94",
"quantity": "1",
"unit_price": "32000",
"taxes": [
{
"code": "01",
"rate": "19"
}
]
}
]
}'Calcular una nota crédito sin emitirla
POST /v1/credit_notes/preview · previewCreditNote
Cuerpo (NoteInput, obligatorio)
external_idtextoTu identificador del documento: único entre los documentos API de la empresa y el ambiente.customerCustomer- Las líneas (1 a 500). Máximo 500.
paymentPaymentnoteslista de textoMáximo 10.periodPeriodreferencesReferencesallowance_chargeslista de AllowanceChargeDescuentos y recargos globales (no tocan las bases). Máximo 20.prepaymentslista de PrepaymentAnticipos (informativos: no restan del total). Máximo 20.withholdingslista de WithholdingRetenciones (informativas): 05 ReteIVA, 06 ReteRenta, 07 ReteICA. Máximo 10.roundingbooleano o decimaltrue = redondeo al peso; o un valor entre -2.00 y 2.00.concepttextoobligatorioConcepto de corrección: NC 1–6, ND 1–4.descriptiontextoinvoiceInvoiceReference
Respuestas
POST /v1/credit_notes/preview
curl -X POST "https://api.trevol.si/v1/credit_notes/preview" \
-H "Authorization: Bearer $TREVOL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"external_id": "DEV-2026-000045",
"concept": "1",
"description": "Devolución de una unidad por empaque dañado",
"invoice": {
"id": "inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
},
"items": [
{
"description": "Café especial 500 g",
"code": "CAF-500",
"unit": "94",
"quantity": "1",
"unit_price": "32000",
"taxes": [
{
"code": "01",
"rate": "19"
}
]
}
]
}'Reenviar una pendiente o en error
POST /v1/credit_notes/{id}/send · sendCreditNote
Respuestas
| Estado | Qué pasó |
|---|---|
| 200 | El documento (Document) |
| 202 | Versión 2026-10-22: la DIAN no contestó (status: processing; Trevol termina el documento y avisa por webhook; no crees otro documento para la misma venta, y si repites con la misma Idempotency-Key respondemos sin enviar) o el documento se está enviando (status: sending); también la contingencia (status: contingency). Lleva Location y, salvo la contingencia, Retry-After: 30. En 2026-10-21 la DIAN sin contestar es un 503 dian_unavailable. (Document) |
| 409 | Error (application/problem+json) (Problem) |
| Error | Error (application/problem+json) (Problem) |
POST /v1/credit_notes/{id}/send
curl -X POST "https://api.trevol.si/v1/credit_notes/cn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b/send" \
-H "Authorization: Bearer $TREVOL_API_KEY"Listar (nota crédito)
GET /v1/credit_notes · listCreditNotes
Parámetros
limitconsultaenterostarting_afterconsultatextostatusconsultatextoexternal_idconsultatextocreated_fromconsultatextocreated_toconsultatexto
Respuestas
| Estado | Qué pasó |
|---|---|
| 200 | {object: list, data, has_more, next_cursor} (objeto) |
| Error | Error (application/problem+json) (Problem) |
GET /v1/credit_notes
curl "https://api.trevol.si/v1/credit_notes?limit=100" \
-H "Authorization: Bearer $TREVOL_API_KEY"Archivo pdf
GET /v1/credit_notes/{id}/pdf · downloadCreditNotePdf
Respuestas
| Estado | Qué pasó |
|---|---|
| 200 | pdf (archivo) |
| Error | Error (application/problem+json) (Problem) |
GET /v1/credit_notes/{id}/pdf
curl "https://api.trevol.si/v1/credit_notes/cn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b/pdf" \
-H "Authorization: Bearer $TREVOL_API_KEY" \
-o credit_note_pdf.pdfArchivo xml
GET /v1/credit_notes/{id}/xml · downloadCreditNoteXml
Respuestas
| Estado | Qué pasó |
|---|---|
| 200 | xml (archivo) |
| Error | Error (application/problem+json) (Problem) |
GET /v1/credit_notes/{id}/xml
curl "https://api.trevol.si/v1/credit_notes/cn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b/xml" \
-H "Authorization: Bearer $TREVOL_API_KEY" \
-o credit_note_xml.xmlArchivo zip
GET /v1/credit_notes/{id}/zip · downloadCreditNoteZip
Respuestas
| Estado | Qué pasó |
|---|---|
| 200 | zip (archivo) |
| Error | Error (application/problem+json) (Problem) |
GET /v1/credit_notes/{id}/zip
curl "https://api.trevol.si/v1/credit_notes/cn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b/zip" \
-H "Authorization: Bearer $TREVOL_API_KEY" \
-o credit_note_zip.zipArchivo dian_response
GET /v1/credit_notes/{id}/dian_response · downloadCreditNoteDianResponse
Respuestas
| Estado | Qué pasó |
|---|---|
| 200 | dian_response (archivo) |
| Error | Error (application/problem+json) (Problem) |
GET /v1/credit_notes/{id}/dian_response
curl "https://api.trevol.si/v1/credit_notes/cn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b/dian_response" \
-H "Authorization: Bearer $TREVOL_API_KEY" \
-o credit_note_dian_response.xmlCorregir una nota crédito rechazada (mismo número) y reenviarla
PUT /v1/credit_notes/{id} · correctCreditNote
Parámetros
Idempotency-KeycabeceratextoobligatorioObligatoria: 1 a 255 caracteres ASCII visibles, única por pedido (7 días).
Cuerpo (NoteInput, obligatorio)
external_idtextoTu identificador del documento: único entre los documentos API de la empresa y el ambiente.customerCustomer- Las líneas (1 a 500). Máximo 500.
paymentPaymentnoteslista de textoMáximo 10.periodPeriodreferencesReferencesallowance_chargeslista de AllowanceChargeDescuentos y recargos globales (no tocan las bases). Máximo 20.prepaymentslista de PrepaymentAnticipos (informativos: no restan del total). Máximo 20.withholdingslista de WithholdingRetenciones (informativas): 05 ReteIVA, 06 ReteRenta, 07 ReteICA. Máximo 10.roundingbooleano o decimaltrue = redondeo al peso; o un valor entre -2.00 y 2.00.concepttextoobligatorioConcepto de corrección: NC 1–6, ND 1–4.descriptiontextoinvoiceInvoiceReference
Respuestas
| Estado | Qué pasó |
|---|---|
| 200 | El documento (Document) |
| 202 | Versión 2026-10-22: la DIAN no contestó (status: processing; Trevol termina el documento y avisa por webhook; no crees otro documento para la misma venta, y si repites con la misma Idempotency-Key respondemos sin enviar) o el documento se está enviando (status: sending); también la contingencia (status: contingency). Lleva Location y, salvo la contingencia, Retry-After: 30. En 2026-10-21 la DIAN sin contestar es un 503 dian_unavailable. (Document) |
| 409 | Error (application/problem+json) (Problem) |
| Error | Error (application/problem+json) (Problem) |
PUT /v1/credit_notes/{id}
curl -X PUT "https://api.trevol.si/v1/credit_notes/cn_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b" \
-H "Authorization: Bearer $TREVOL_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"external_id": "DEV-2026-000045",
"concept": "1",
"description": "Devolución de una unidad por empaque dañado",
"invoice": {
"id": "inv_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
},
"items": [
{
"description": "Café especial 500 g",
"code": "CAF-500",
"unit": "94",
"quantity": "1",
"unit_price": "32000",
"taxes": [
{
"code": "01",
"rate": "19"
}
]
}
]
}'