Skip to main content
POST
Es el mismo endpoint de crear factura. Mandar items es lo que hace que OnePay emita el documento ante la DIAN en vez de registrar uno externo; en ese caso provider, provider_id y amount los pone el sistema. Responde 201 sin esperar a la DIAN. El resultado del timbrado llega por el webhook invoice.stamped o invoice.stamp_rejected.

Headers

string
required
Token único para garantizar la idempotencia de la petición
Sin Idempotency-Key, un reintento por timeout de red crea dos facturas: dos documentos ante la DIAN, IVA declarado dos veces y una nota crédito para arreglarlo.

Body

string
required
Cliente al que se le factura. Debe tener completos los datos que exige la DIAN — ver datos del receptor. Si falta alguno, la respuesta es 422 con todos los campos faltantes.
array
required
Líneas de la factura. Mínimo 1, máximo 200. Cada línea puede venir del catálogo (price_id) o definirse suelta.
string
Si se emite ante la DIAN y cuándo:
  • none (por defecto) — no se emite. La factura se crea y se cobra igual, sin documento fiscal y sin exigir los datos fiscales del cliente.
  • on_payment — al aprobarse el pago.
  • on_issue — al crear la factura, antes de cobrar.
  • manual — cuando llames a /stamp.
Ver cuándo se timbra antes de elegir on_issue.
string
Título del cobro que ve el cliente. Hasta 100 caracteres.
string
Descripción detallada. Hasta 2000 caracteres.
string
Referencia con la que el cliente consulta su deuda en el portal de pagos. Se recomienda el documento del titular.
date
Fecha de pago oportuno.
string
Moneda. Por defecto la de tu empresa.
object
Datos adicionales que quieras persistir en la factura.
El total de la factura tiene que ser cobrable. La suma de las líneas debe quedar entre 10000 (100)y10000000000(100) y `10000000000` (100.000.000), el mismo rango que acepta el flujo sin items.Fuera de ahí la respuesta es 422 con invalid_invoice_line. El caso que más sorprende es el total en cero: una factura gratis generaría un cobro que nadie puede pagar.