POST /v1/invoices
Emite un e-CF firmado y lo envía a DGII de forma asíncrona.
Request
curl -X POST https://sandbox.api.erply.pro/v1/invoices \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d @invoice.json
Headers obligatorios
| Header | Notas |
|---|---|
Authorization | Bearer <jwt> obtenido en /v1/auth/token. |
Idempotency-Key | UUID v4. TTL 24 h. |
Content-Type | application/json; charset=utf-8. |
Body
{
"tenantId": "demo-rnc-131000001",
"ecfType": "31",
"encf": "E310000000001",
"issueDate": "2026-05-01",
"buyer": { "rnc": "131000002", "name": "Cliente Demo S.R.L." },
"lines": [
{ "description": "Servicio", "qty": 1, "unitPrice": 5000.00, "taxRate": 0.18 }
],
"subtotal": 5000.00,
"tax": 900.00,
"grandTotal": 5900.00
}
Respuestas
| HTTP | Significado |
|---|---|
202 Accepted | Aceptado, en cola hacia DGII. |
200 OK | Replay idempotente. |
{
"docId": "01HW9X4G…",
"trackId": "20260501-DGII-9988",
"status": "pending",
"_links": {
"self": "/v1/invoices/01HW9X4G…",
"status": "/v1/invoices/01HW9X4G…/status"
}
}
Errores posibles
| HTTP | Slug | Causa |
|---|---|---|
| 400 | malformed-json | Body no es JSON. |
| 400 | unsupported-ecf-type | Tipo fuera del catálogo. |
| 400 | validation-error | Pydantic falló. |
| 401 | unauthorised | Token inválido. |
| 422 | mathematical-discrepancy | Totales no cuadran. |
| 422 | tenant-config-missing | Falta RNC/PFX. |
| 422 | dgii-rejected (+ código DGII) | Rechazo DGII. |
| 504 | dgii-unavailable | Timeout DGII. |
Consulta el diccionario completo de errores DGII para los códigos numéricos.