Error: invalid_request
Qué significa
Section titled “Qué significa”El cuerpo del request no pasó la validación. Puede ser un campo faltante, un tipo de datos incorrecto, un valor fuera del rango permitido, o una regla de negocio violada.
Envelope de ejemplo
Section titled “Envelope de ejemplo”{ "error": { "type": "invalid_request", "code": "invalid_request", "message": "El cuerpo del request tiene campos inválidos.", "doc_url": "https://docs.emitia.co/errors/invalid_request", "request_id": "req_01HX…", "details": [ { "field": "lines[0].unit_price", "message": "Debe ser un string decimal con exactamente 2 decimales (ej: '100000.00')" }, { "field": "customer.identification.type", "message": "Valor '99' no está en el catálogo de tipos de identificación DIAN" } ] }}HTTP status: 400 Bad Request
Causas frecuentes
Section titled “Causas frecuentes”| Campo | Error típico |
|---|---|
unit_price, tax_value | Número en vez de string (100000 → "100000.00") |
identification.type | Código fuera del catálogo DIAN |
payment_means.code | Código fuera del catálogo UN/ECE 4461 |
currency | Moneda no soportada |
type_operation | CustomizationID no válido |
issue_date | Formato distinto de YYYY-MM-DD |
Cómo leer el campo details
Section titled “Cómo leer el campo details”El array details contiene un objeto por cada campo inválido:
field: la ruta del campo en el body (notación punto, ej:lines[0].taxes[0].code)message: descripción legible del error
Lee el details primero — es más preciso que el message general.
Cómo resolverlo
Section titled “Cómo resolverlo”- Lee el array
detailsy corrige cada campo indicado. - Para los códigos DIAN, consulta la Guía de mapeo POS.
- Para importes, recuerda: siempre strings con 2 decimales (
"100000.00", no100000).
Ver también
Section titled “Ver también”- Guía de mapeo POS — tabla de códigos válidos
- Referencia API — schema completo de cada endpoint