Ir al contenido

Emitir nota de débito

POST
/v1/debit-notes
curl --request POST \
--url https://api.chaski.ec/v1/debit-notes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--data '{ "invoice": "example", "external_ref": "example", "reasons": [ { "description": "example", "amount": "example", "iva_rate": "0" } ], "payments": [ { "method": "no_financial_system", "amount": "example", "term": "example", "time_unit": "example" } ], "additional_info": { "additionalProperty": "example" }, "metadata": { "additionalProperty": "example" }, "send_email": true }'

Nota de débito (05), esquema 1.0.0: suma cargos a una factura authorized (intereses por mora, gastos de cobranza…). Sale del mismo emisor y punto de emisión, con el mismo comprador. Cada motivo lleva su valor sin IVA y su tarifa (iva_rate); el IVA se calcula por tarifa. payments es opcional; si se envía, debe sumar el total. Una factura voided responde 409 invoice_voided y una que no está autorizada, 409 invoice_not_authorized. Responde 202 con status: "pending" y se notifica con debit_note.authorized o debit_note.rejected. En producción consume cuota igual que una factura (402 quota_exceeded).

Idempotency-Key
required
string
<= 255 characters

Una clave única por petición (por ejemplo un UUID). Vale 24 h: reintentar con la misma clave y el mismo body devuelve la misma respuesta.

Media typeapplication/json
object
invoice
required
string
external_ref
string
>= 1 characters <= 255 characters
reasons
required
Array<object>
>= 1 items <= 100 items
object
description
required
string
>= 1 characters <= 300 characters
amount
required
string
/^\d{1,12}(\.\d{1,2})?$/
iva_rate
required
string
Allowed values: 0 5 15 exempt not_subject
payments
Array<object>
>= 1 items <= 20 items
object
method
required
string
Allowed values: no_financial_system debt_compensation debit_card electronic_money prepaid_card credit_card other_financial_system endorsement
amount
string
/^\d+(\.\d+)?$/
term
string
/^\d+(\.\d+)?$/
time_unit
string
>= 1 characters <= 10 characters
additional_info
object
key
additional properties
string
<= 300 characters
metadata
object
key
additional properties
string
<= 500 characters
send_email
boolean

OK

Media typeapplication/json
object
id
required
string
status
required
string
Allowed values: pending received authorized rejected failed
environment
required
string
Allowed values: test live
issuer
required
string
emission_point
required
string
number
required
string
access_key
required

Clave de acceso de 49 dígitos

string
issue_date
required
string format: date
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$/
invoice
required
string
invoice_number
required
string
reasons
required
Array<object>
object
description
required
string
amount
required
string
iva_rate
required
string
buyer
required
object
id
required
string
name
required
string
email
required
string | null
totals
required
object
subtotal
required
string
taxes
required
Array<object>
object
type
required
string
Allowed value: iva
rate
required
string
base
required
string
amount
required
string
total
required
string
external_ref
required
string | null
metadata
required
object
key
additional properties
string
sri_messages
required
Array<object>
object
code
required
string
type
required
string
message
required
string
additional_info
string
authorized_at
required
Any of:
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/
created_at
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$/

Example

{
"id": "dn_01jbx3k9q2f8m4tn6vwz0yh5ce",
"status": "pending",
"environment": "test",
"emission_point": "001-001",
"number": "001-001-000000003",
"invoice": "inv_01jbx3k9q2f8m4tn6vwz0yh5ce",
"invoice_number": "001-001-000000123",
"totals": {
"taxes": [
{
"type": "iva"
}
]
}
}

Petición inválida

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
field
string
key
additional properties

Example

{
"error": {
"code": "invalid_request"
}
}

Falta la API key o no es válida

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
field
string
key
additional properties

Example

{
"error": {
"code": "invalid_request"
}
}

Cuota de comprobantes agotada (quota_exceeded)

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
field
string
key
additional properties

Example

{
"error": {
"code": "invalid_request"
}
}

Sin permiso (cuenta suspendida, emisor no habilitado en producción, límite del plan…)

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
field
string
key
additional properties

Example

{
"error": {
"code": "invalid_request"
}
}

Conflicto (recurso repetido, Idempotency-Key en curso…)

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
field
string
key
additional properties

Example

{
"error": {
"code": "invalid_request"
}
}

Demasiadas peticiones

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
field
string
key
additional properties

Example

{
"error": {
"code": "invalid_request"
}
}