De 4invoices-documentatie heeft twee lagen: het paneel, dat je zonder code gebruikt, en de publieke API, waarmee je eigen systeem facturen uitgeeft en het document door het nationale e-factureringscircuit voert (in Roemenië: e-Factura van ANAF). Deze pagina is de ingang van de tweede laag.
Open de volledige API-documentatie →
Wat je kunt automatiseren
De publieke API dekt het uitgeven van facturen en proforma's, creditnota's, klanten met een controle in het bedrijfsregister (in Roemenië: het ANAF-register), nummerreeksen en de volledige nationale e-factureringsroute (in Roemenië: e-Factura): CIUS-RO-preflight, SPV-indiening, statusopvolging, het ondertekende antwoord en de inbox met leveranciersfacturen.
https://api.4invoices.net/v1 · 25 endpoints · OpenAPI-specificatie (zonder sleutel)
invoices:read · invoices:write · clients:read · clients:write · efactura:read · efactura:submit
Authenticatie
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"}Je eerste factuur in 6 stappen
- Maak een credential aan in het paneel, onder Facturatie → Instellingen → API-toegang, en kopieer het client_secret — het wordt één keer getoond.
- Vul het bedrijfsprofiel aan en activeer minstens één reeks van het type fiscale, anders geeft het uitgeven issuer_profile_incomplete of no_series_configured terug.
- Wissel het credential in voor een token: POST /v1/auth/token met grant_type client_credentials. Het token geldt één uur — cache het, vraag er niet één per request aan.
- Geef de factuur uit: POST /v1/invoices met een Idempotency-Key-header en vat_rate als percentage (21, niet 0.21).
- Voer de preflight (CIUS-RO voor Roemenië) uit met POST /v1/invoices/{id}/efactura/validate en stuur de factuur daarna naar het nationale e-factureringssysteem (in Roemenië: ANAF) met POST /v1/invoices/{id}/efactura/submit.
- Volg de status met GET /v1/efactura/submissions/{id} tot die accepted of rejected bereikt.
bash
# 1 — token (1 uur, cache het)
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 — de factuur uitgeven (Idempotency-Key is VERPLICHT)
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'Gidsen per onderwerp
Elk onderwerp heeft een eigen pagina met de bijbehorende endpoints, voorbeelden en fouten.