Documentación

La documentación de 4invoices tiene dos capas: el panel, que usas sin escribir código, y la API pública, con la que tu propio sistema emite facturas y lleva el documento a través del circuito nacional de factura electrónica (en Rumanía, e-Factura de ANAF). Esta página es la entrada a la segunda capa.

Abrir la referencia completa de la API →

Qué puedes automatizar

La API pública cubre la emisión de facturas y proformas, las rectificativas, los clientes con consulta al registro de empresas (en Rumanía, el de ANAF), las series de numeración y todo el circuito nacional de factura electrónica (en Rumanía, e-Factura): verificación CIUS-RO, envío al SPV, seguimiento del estado, respuesta firmada y la bandeja de facturas recibidas de proveedores.

https://api.4invoices.net/v1 · 25 endpoints · Especificación OpenAPI (sin clave)

invoices:read · invoices:write · clients:read · clients:write · efactura:read · efactura:submit

Autenticación

Antes de la primera llamadaFacturación → Ajustes → Acceso API
bash
curl -sS -X POST https://api.4invoices.net/v1/auth/token \
  -H 'Content-Type: application/json' \
  -d '{
    "grant_type": "client_credentials",
    "client_id": "cli_XXXXXXXXXXXX",
    "client_secret": "sec_XXXXXXXXXXXXXXXXXXXX"
  }'

# → {"access_token":"eyJ...","token_type":"Bearer","expires_in":3600,
#    "scope":"invoices:read invoices:write efactura:submit"}
Solo servidor a servidor. Nunca llames a la API desde JavaScript de navegador: el client_secret llegaría al visitante y CORS bloquea cualquier origen de todos modos.

Tu primera factura en 6 pasos

  1. Genera una credencial en el panel, en Facturación → Ajustes → Acceso API, y copia el client_secret — solo se muestra una vez.
  2. Completa el perfil de la empresa y activa al menos una serie de tipo fiscale; si no, la emisión devuelve issuer_profile_incomplete o no_series_configured.
  3. Cambia la credencial por un token: POST /v1/auth/token con grant_type client_credentials. El token dura una hora — guárdalo en caché, no pidas uno por petición.
  4. Emite la factura: POST /v1/invoices con la cabecera Idempotency-Key y vat_rate como porcentaje (21, no 0.21).
  5. Para el mercado rumano, ejecuta la verificación CIUS-RO con POST /v1/invoices/{id}/efactura/validate y envíala a ANAF con POST /v1/invoices/{id}/efactura/submit.
  6. Sigue el estado con GET /v1/efactura/submissions/{id} hasta que llegue a accepted o rejected.
bash
# 1 — token (1 hora, guárdalo en caché)
ACCESS_TOKEN=$(curl -sS -X POST https://api.4invoices.net/v1/auth/token \
  -H 'Content-Type: application/json' \
  -d '{"grant_type":"client_credentials","client_id":"cli_XXX","client_secret":"sec_XXX"}' \
  | python3 -c 'import sys,json; print(json.load(sys.stdin)["access_token"])')

# 2 — emitir la factura (Idempotency-Key es OBLIGATORIO)
curl -sS -X POST https://api.4invoices.net/v1/invoices \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: order-10457-invoice' \
  -d '{"buyer":{"name":"Exemplu Comert SRL","tax_id":"RO12345678","county":"Cluj","city":"Cluj-Napoca","country":"RO"},
       "lines":[{"description":"Abonament SaaS","quantity":1,"unit_price":400,"vat_rate":21}]}'

# 3 — preflight CIUS-RO, then send to ANAF
curl -sS -X POST https://api.4invoices.net/v1/invoices/inv_01J7ABC/efactura/validate \
  -H "Authorization: Bearer $ACCESS_TOKEN"

curl -sS -X POST https://api.4invoices.net/v1/invoices/inv_01J7ABC/efactura/submit \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H 'Idempotency-Key: efactura-inv_01J7ABC-1'

Guías por tema

Cada tema tiene su página, con sus endpoints, ejemplos y errores.

Abrir la referencia completa de la API →