Ir al contenido

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.

Ventana de terminal
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.

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.

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.

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.