Notas de crédito
POST /v1/credit-notes emite una nota de crédito (XML 1.1.0): una devolución, un descuento o una corrección que reduce el valor de una factura ya emitida.
Solicitud
Sección titulada «Solicitud»curl https://api.flashpi.com.ec/v1/credit-notes \ -H "Authorization: Bearer $FLASHPI_API_KEY" \ -H "Idempotency-Key: return-RMA-2291" \ -H "Content-Type: application/json" \ -d '{ "issuerId": "01a0fd6a-d098-76ca-b492-1bcb6505a7bd", "establishment": "001", "emissionPoint": "001", "issueDate": "2026-10-16", "customer": { "idType": "ruc", "id": "1790000000001", "name": "Supermercados La Pradera S.A.", "email": "compras@example.com" }, "modifiedDocument": { "type": "invoice", "number": "001-001-000000123", "issueDate": "2026-10-15" }, "reason": "Return of damaged goods", "items": [ { "code": "CAF-500", "description": "Ground coffee 500 g", "quantity": "1", "unitPrice": "4.25", "discount": "0.25", "taxes": [{ "type": "vat", "rate": "15" }] } ], "expectedTotal": "4.60" }'| Campo | Obligatorio | Notas |
|---|---|---|
customer |
Sí | El comprador de la factura modificada. No puede ser consumidor final (final_consumer_not_allowed). Las notas de crédito no imprimen la dirección. |
modifiedDocument.type |
No | El tipo del comprobante modificado. Solo se acepta invoice, que es el valor por defecto. |
modifiedDocument.number |
Sí | Su número, 001-001-000000123. |
modifiedDocument.issueDate |
Sí | Su fecha de emisión, igual o anterior a la de la nota de crédito. |
reason |
Sí | Por qué se emite la nota, hasta 300 caracteres. |
items |
Sí | Las líneas que se acreditan, como en una factura; aquí code es opcional. Cada línea lleva un IVA y, opcionalmente, un ICE ad valorem. |
expectedTotal |
No | El valor acreditado que esperas. |
Las notas de crédito no tienen pagos ni propina. Los campos que comparten todas las solicitudes funcionan igual que en todos los comprobantes.
- Las tarifas de IVA siguen a la factura modificada: una nota de crédito usa las tarifas vigentes en
modifiedDocument.issueDate, no en su propia fecha, así que la devolución de mercadería vendida con una tarifa anterior conserva esa tarifa. - Flashpi no busca la factura. Valida el formato del número y el orden de las fechas, pero la factura puede haberse emitido fuera de Flashpi. Asegúrate de que el número, la fecha y los valores coincidan con la factura que modificas: el SRI y tu cliente dependen de ellos.
Lo que calcula Flashpi
Sección titulada «Lo que calcula Flashpi»El subtotal de la línea es 1 × 4.25 − 0.25 = 4.00, el IVA es el 15 % de 4.00 = 0.60, y el valor acreditado, el total de la nota, es 4.60.
Respuesta
Sección titulada «Respuesta»202 Accepted:
{ "id": "01a1451f-b91c-73ac-a726-b8348185c655", "type": "credit_note", "environment": "test", "status": "processing", "issuerId": "01a0fd6a-d098-76ca-b492-1bcb6505a7bd", "establishment": "001", "emissionPoint": "001", "sequential": 18, "number": "001-001-000000018", "accessKey": "1610202604179000000000110010010000000186420931518", "issueDate": "2026-10-16", "xmlVersion": "1.1.0", "counterparty": { "id": "1790000000001", "name": "Supermercados La Pradera S.A." }, "totals": { "subtotal": "4.00", "discount": "0.25", "taxes": [{ "type": "vat", "rate": "15", "taxableBase": "4.00", "amount": "0.60" }], "total": "4.60" }, "authorization": { "number": null, "authorizedAt": null }, "ride": { "status": "pending", "template": null, "generatedAt": null }, "email": { "requested": true, "status": "queued", "deliveries": [], "warnings": [] }, "sriMessages": [], "failure": null, "voidedAt": null, "createdAt": "2026-10-16T14:31:09.340Z", "updatedAt": "2026-10-16T14:31:09.340Z"}Las notas de crédito se numeran en su propia serie: la primera nota de crédito de un punto de emisión es 000000001, sin importar por dónde vayan sus facturas. Con options.waitForAuthorization la respuesta puede ser 200 OK con el estado final (Modo síncrono y asíncrono). Los webhooks credit_note.authorized y credit_note.rejected informan la decisión del SRI.
Errores
Sección titulada «Errores»| Respuesta | Cuándo |
|---|---|
422 validation_failed |
Por ejemplo customer.idType final_consumer_not_allowed, modifiedDocument.number invalid_format, o una modifiedDocument.issueDate posterior a la nota (date_too_late). |
422 total_mismatch |
expectedTotal es distinto del valor acreditado calculado. |
409 sequential_already_used, sequentials_exhausted |
Consulta Secuenciales. |