Integratie
Markdown-exportExterne API V1-documentatie
Technisch documentatiepakket voor selfservice API-implementatie en review. Deze pagina vat het externe API-contract, het toegangsmodel en de integratiegrenzen samen.
Overzicht
De API accepteert multipart-uploads, retourneert JSON-responses en gebruikt standaard HTTP-statuscodes en Bearer-authenticatie. Dien een PDF-factuur in, wacht op de asynchrone verwerking en haal daarna het gegenereerde resultaat op.
Stuur een PDF-factuur of gestructureerde factuurdata naar een conversie-endpoint. Invoice-Converter start daarmee een asynchrone task voor extractie, validatie en artefactgeneratie. Het resultaat-endpoint levert alleen een bestand wanneer het gevraagde artefact gevalideerd, gecontroleerd en klaar voor uitvoer is; tijdens verwerking retourneert het 202 TASK_NOT_READY, bij blokkerende validatiefouten 422 VALIDATION_FAILED.
Status: goedgekeurde toegang
Basispad: /api/v1. Laatst gesynchroniseerd 2026-06-09.
Belangrijkste mogelijkheden
Gebruik deze punten als praktische controles voor deze sectie.
- Upload-endpoints voor PDF-facturen en gestructureerde factuurdata
- AI-ondersteunde extractie van factuurgegevens
- Geautomatiseerde EN 16931- en KoSIT-validatie
- Uitvoerformaten voor XRechnung, ZUGFeRD, EN16931, UBL en CII
- Asynchrone verwerking met polling, kleine facturen rond 30 seconden en grotere facturen tot 1-2 minuten
- Idempotente writes voor veilige retries
Leveringsartefacten
Download machineleesbare integratieartefacten voor de Developer API.
Snelstart
Drie API-aanroepen voltooien een conversie. Het convert-endpoint wordt aangeboden op /api/v1 en vereist authenticatie.
POST /api/v1/invoices:convert
LivePDF naar gestructureerde e-factuur converteren
POST /api/v1/invoices:convert-structured
LiveGestructureerde data converteren
GET /api/v1/tasks/{task_id}
LiveTaskstatus pollen
API-toegang krijgen
Gebruik deze punten als praktische controles voor deze sectie.
- Maak een account aan en vraag API-toegang aan.
- Gebruik prepaid API-credits voor goedgekeurde tests of Enterprise-facturering per order form voor productiegebruik.
- Maak na goedkeuring een live API-sleutel aan voor je tenant.
- Verstuur de eerste request met Bearer-token en een stabiele Idempotency-Key.
Base-URL en API-sleutels
Gebruik deze punten als praktische controles voor deze sectie.
- Productie-base-URL:
https://www.invoice-converter.com/api/v1. - Live-sleutels gebruiken de productiehost en het prefix
icp_.... - Gebruik goedgekeurde live sleutels voor onboarding en validatieruns voordat u productievolume verstuurt.
- Behandel sleutels als server-side secrets. Plaats ze niet in browser- of mobiele clients.
Eerste succesvolle request
Gebruik deze volgorde als minimale happy path nadat je een API-sleutel hebt aangemaakt.
- Uploaden:
POST /api/v1/invoices:convertmetAuthorization,Idempotency-Key,file=@invoice.pdfenformat=XRECHNUNG. - Controleer elke
10-15 seconden:GET /api/v1/tasks/{task_id}tot statuscompletedoffailedis. - Downloaden:
GET /api/v1/tasks/{task_id}/result?download=xmlen slaX-Correlation-IDop voor support-tracing. - Voor ZUGFeRD PDF-output vraagt u
format=ZUGFERDbij convert endownload=pdfbij result. - Voor gestructureerde invoer roept u
POST /api/v1/invoices:convert-structuredaan metpdf_file=@invoice.pdf,data_file=@invoice-data.jsonen het doel-format. - Stuur optioneel
client_referenceofexternal_invoice_idensource_systemmee voor ERP-reconciliatie. - Voor gesplitste ERP-exports van één factuur herhaalt u
data_file; voor meerdere facturen start u één task per factuur met een eigen idempotency key. - Sla
result_artifactsuit de statusresponse op om te zien of XML/PDF-artefacten gevalideerd, gecachet of door afhankelijkheden nog niet beschikbaar zijn.
Veelgebruikte payloadvoorbeelden
Gebruik deze punten als praktische controles voor deze sectie.
XRECHNUNG: stuurformat=XRECHNUNG.ZUGFERD: stuurformat=ZUGFERD; gebruikdownload=pdfbij result voor de hybride PDF/A-3-output.Gestructureerde invoer: stuurpdf_fileplus een of meerdata_file-parts; geaccepteerde dataformaten zijn CSV, JSON, XML, XLSX en TXT, met elk ondersteund doelformaat. De data_file-parts moeten alle verplichte data bevatten; de PDF vult geen ontbrekende velden aan.Meerdere facturen: verstuur afzonderlijke convert-requests en volg elke geretourneerdetask_id; herhaaldedata_file-parts zijn alleen voor gesplitste exports van dezelfde factuur.UBL: stuurformat=UBL; stel voor deterministische integraties ook een explicietprofilein, zoalsPEPPOL,XRECHNUNGofEN16931.CII: stuurformat=CII; stel voor deterministische integraties ook een explicietprofilein, zoalsEN16931.
Vereiste headers
Gebruik deze punten als praktische controles voor deze sectie.
- Authorization: Bearer <api_key>
Auth-regels
API-toegang is goedkeuringsplichtig. Goedgekeurde accounts kunnen API-sleutels in het profiel maken, ze als Bearer-token gebruiken en prepaid credits voor goedgekeurde tests of Enterprise-facturering per order form voor productie gebruiken.
- API-sleutels zijn tenant-gebonden live-credentials voor goedgekeurde accounts. Het huidige productieprefix is
icp_.... - Maak, roteer en trek API-sleutels in vanuit je profiel nadat API-toegang is ingeschakeld. Kopieer nieuwe sleutels meteen, want plaintext sleutels worden maar één keer getoond.
- Een ontbrekende of ongeldige sleutel retourneert
401. - Aanroepen naar
/api/v1krijgen automatisch eenX-Correlation-IDwanneer die ontbreekt. - Schrijfaanroepen vereisen
Idempotency-Key; houd deze waarde stabiel over retries. - Gebruik server-to-server-integratie vanuit uw backend. Browser-origin-toegang is in productie beperkt.
Idempotency-contract
Gebruik deze punten als praktische controles voor deze sectie.
- Stuur bij elke schrijfaanroep een
Idempotency-Key. - Idempotency keys moeten overeenkomen met
[A-Za-z0-9._:-]+en maximaal 200 tekens lang zijn. - Als u uw eigen key opgeeft, retourneert dezelfde key + identieke payload de gecachte response.
- Dezelfde key + andere payload retourneert
409 IDEMPOTENCY_CONFLICT. - Idempotency keys verlopen na
24 uur.
Endpoint-referentie
Alle endpoints zijn beschikbaar onder /api/v1. Timeouts verschijnen als 504 en andere tijdelijke verbindingsfouten als 502; correlatie-ID’s helpen support om requests end-to-end te volgen.
POST /api/v1/invoices:convert
LiveUpload een PDF-factuur en start asynchrone conversie. Retourneert een task_id voor polling. Verzoek: multipart/form-data; file (binary, verplicht) — PDF-factuurbestand; format (string, verplicht) — doeluitvoerformaat; zie de formaatmatrix hieronder; profile (string, optioneel, aanbevolen voor deterministische integraties) — expliciet complianceprofiel. Standaardwaarden volgen het formaat; toegestane waarden zijn onder meer XRECHNUNG, PEPPOL, EN16931 en ondersteunde ZUGFeRD/Factur-X-profielen; jurisdiction (string, optioneel) — expliciete ISO 3166-1 alpha-2-jurisdictiecontext voor validatie-/adviescontroles; overschrijft het profiel niet; transaction_scope (string, optioneel) — expliciete transactiecontext, zoals B2G; toegepast op de queued task; delivery_channel (string, optioneel) — een van PEPPOL, DIRECT_XML, PORTAL, EMAIL_PDF, UNKNOWN; toegepast op de queued task; client_reference of external_invoice_id (string, optioneel) — factuur-/jobreferentie van de klant, teruggegeven in geaccepteerde uploads en taskstatusresponses; source_system (string, optioneel) — upstream ERP- of facturatiesysteemlabel, teruggegeven in geaccepteerde uploads en taskstatusresponses. Antwoord: 202 Accepted.
POST /api/v1/invoices:convert-structured
LiveUpload een drager-PDF met CSV-, JSON-, XML-, XLSX- of TXT-factuurdata en start asynchrone conversie vanuit gestructureerde data. De data_file-parts zijn de enige semantische bron; de PDF vult geen ontbrekende factuurvelden aan. Voor ZUGFeRD/Factur-X wordt de PDF gebruikt als drager-PDF, en bij XML-georiënteerde output wordt hij bewaard als ingediend PDF-artefact. Gebruik één conversierequest per factuur; herhaal data_file alleen voor gesplitste ERP-exports die dezelfde factuur beschrijven. Verzoek: multipart/form-data; pdf_file (binary, verplicht) — drager-PDF voor ZUGFeRD/Factur-X-insluiting en bewaring bij XML-georiënteerde output; data_file (binary, verplicht, herhaalbaar) — CSV-, JSON-, XML-, XLSX- of TXT-factuurdata als enige semantische bron; .xls, PDF’s en afbeeldingsbestanden worden als data_file geweigerd; herhaal voor gesplitste header-/regel-exports van dezelfde factuur; de aliassen data_files en data_files[] worden geaccepteerd; totale grootte gestructureerde data — maximaal 2 MB over alle data_file-parts; format (string, verplicht) — doeloutputformaat; ondersteunt XRECHNUNG, ZUGFERD, EN16931, UBL en CII; profile (string, optioneel, aanbevolen voor deterministische integraties) — expliciet complianceprofiel. Standaard op basis van format; jurisdiction (string, optioneel) — expliciete ISO 3166-1 alpha-2-jurisdictiecontext voor validatie-/adviescontroles; overschrijft het profiel niet; transaction_scope (string, optioneel) — expliciete transactiecontext, zoals B2G; toegepast op de queued task; delivery_channel (string, optioneel) — een van PEPPOL, DIRECT_XML, PORTAL, EMAIL_PDF, UNKNOWN; toegepast op de queued task; client_reference of external_invoice_id (string, optioneel) — factuur-/jobreferentie van de klant, teruggegeven in geaccepteerde uploads en taskstatusresponses; source_system (string, optioneel) — upstream ERP- of facturatiesysteemlabel, teruggegeven in geaccepteerde uploads en taskstatusresponses. Antwoord: 202 Accepted.
GET /api/v1/tasks/{task_id}
LivePoll de huidige status van een conversietaak. Retourneert pending, processing, completed of failed. Voltooide taken bevatten result_artifacts-diagnostiek, zodat clients kunnen zien welke XML/PDF-artefacten beschikbaar, gecachet en met validatiebewijs onderbouwd zijn. Bij failed bevat de response een error-veld met de reden. Verzoek: geen (GET); task_id (path, verplicht) — UUID die door het convert-endpoint is geretourneerd. Antwoord: 200 OK.
GET /api/v1/tasks/{task_id}/result
LiveDownload het gegenereerde bestand (XML of PDF). De resultaantsyntaxis komt overeen met het oorspronkelijke taskformaat: XRECHNUNG/EN16931/UBL retourneren UBL XML, CII/ZUGFERD retourneren CII XML, en ZUGFERD + download=pdf retourneert een hybride PDF/A-3. Bij andere formaten kan download=pdf een gerenderde PDF leveren. Herhaalde downloads kunnen uit gecachte artefacten worden bediend wanneer het validatiebewijs nog actueel is. Tijdens verwerking retourneert het endpoint 202 TASK_NOT_READY; blokkerende validatiefouten retourneren 422 VALIDATION_FAILED, retrybare ontbrekende afhankelijkheden 503 en artefact-invariantfouten 500, telkens zonder bestand. Verzoek: geen (GET); task_id (path, verplicht) — UUID die door het convert-endpoint is geretourneerd; download (query, verplicht) — xml of pdf. Antwoord: 200 OK.
Uitvoerformatenmatrix
| Formaat | Syntaxis | Versie / Profiel | Content-Type | Extensie |
|---|---|---|---|---|
| XRECHNUNG | UBL 2.1 XML | XRechnung 3.0.2 | application/xml | .xml |
| ZUGFERD | CII XML (download=xml) / hybride PDF/A-3 (download=pdf) | ZUGFeRD 2.4 / Factur-X 1.08 | application/xml of application/pdf | .xml / .pdf |
| EN16931 | UBL 2.1 XML | EN 16931 | application/xml | .xml |
| UBL | UBL 2.1 XML | OASIS UBL 2.1 | application/xml | .xml |
| CII | UN/CEFACT CII XML | D16B | application/xml | .xml |
Wijzigingslogboek
Meest recente extern zichtbare API-wijzigingen.
2026-06-02
External API-toegang is nu gedocumenteerd als goedgekeurde toegang in plaats van onbeperkte sleutelaanmaak. Verduidelijkt dat er geen formele SLA, servicecredit of contractuele boete geldt tenzij afgesproken in een order form. format is nu verplicht op beide conversie-endpoints; ontbrekende waarden retourneren 400 FORMAT_REQUIRED en niet-ondersteunde waarden 422 INVALID_FORMAT. download is nu verplicht op task-resultrequests; ontbrekende waarden retourneren 400 DOWNLOAD_FORMAT_REQUIRED en niet-ondersteunde waarden 400 INVALID_DOWNLOAD_FORMAT. Conversie-uploads accepteren nu client_reference/external_invoice_id en source_system voor klantzijdige reconciliatie. Geaccepteerde conversie- en taskstatusresponses bevatten nu status_url, primary_result_format, primary_result_url en meegestuurde reconciliatievelden.
2026-06-01
Gestructureerde conversie accepteert nu alle publieke outputformaten: XRECHNUNG, ZUGFeRD, EN16931, UBL en CII. Gestructureerde conversie accepteert nu herhaalbare data_file-onderdelen plus de aliassen data_files en data_files[] voor gesplitste ERP-exports. Gestructureerde multi-file bundles moeten precies één factuur beschrijven en falen vroeg bij conflicterende of ontbrekende bundle-factuur-ID’s. Verduidelijkt dat meerdere factuurdocumenten als afzonderlijke conversietasks moeten worden ingestuurd, elk met een eigen idempotency key.
2026-05-27
POST /api/v1/invoices:convert-structured toegevoegd voor conversie vanuit gestructureerde data met drager-PDF en CSV/JSON/XML/XLSX/TXT over ondersteunde outputformaten. Gedocumenteerd dat gestructureerde data op dit endpoint de enige semantische bron is; de PDF wordt gebruikt voor hybride insluiting. OpenAPI- en Postman-artefacten bijgewerkt voor gestructureerde conversie.
2026-05-08
Prepaid External API-credits toegevoegd voor niet-Enterprise-tenants. 402 INSUFFICIENT_API_CREDITS gedocumenteerd voor goedgekeurde tenants zonder Enterprise-facturering per order form of prepaid credits. Bevestigd dat idempotente replays geen extra API-credits verbruiken. Verduidelijkt dat External API V1 modelrouting server-side beheert, terwijl profiel- en leveringscontext door de aanroeper worden bepaald.
2026-03-06
Task-result-downloads formaatgetrouw gemaakt voor CII- en ZUGFERD-uitvoer. Hergebruik van gecachte resultaatartefacten toegevoegd voor herhaalde XML/PDF-downloads van dezelfde task. Pollingquota afgestemd op endpoint-gescopeerde gewogen rate-limit-buckets.
2026-02-23
Duidelijkere, consistente API-foutresponses toegevoegd voor alle endpoints. Convert-opties uitgebreid en XML/PDF-downloadgedrag voor taskresultaten gedocumenteerd. Retryveiligheid verbeterd met strengere idempotency-vereisten en validatie. OpenAPI/Postman-artefacten bijgewerkt naar huidig API-gedrag.
2026-02-20
Statusresponses vereenvoudigd naar statusgerichte output. IndexNow-inzendvalidatie en authenticatiecontroles versterkt. API-toegangscontroles en request-limitinggedrag in productie verstevigd.
Foutcontract
| Code | HTTP | Opnieuw te proberen | Notities |
|---|---|---|---|
| AUTHENTICATION_REQUIRED | 401 | Nee | Bearer-token ontbreekt/is leeg |
| INVALID_API_KEY | 401 | Nee | API-sleutel niet gevonden, ingetrokken of verlopen |
| INSUFFICIENT_API_CREDITS | 402 | Nee | Gebruik goedgekeurde prepaid testcredits of Enterprise-facturering per order form |
| IDEMPOTENCY_KEY_REQUIRED | 400 | Nee | Schrijfendpoint aangeroepen zonder Idempotency-Key |
| INVALID_IDEMPOTENCY_KEY | 400 | Nee | Idempotency key heeft een ongeldig formaat |
| IDEMPOTENCY_CONFLICT | 409 | Nee | Zelfde key gebruikt met andere request-hash |
| IDEMPOTENCY_IN_PROGRESS | 409 | Ja | Veilig later opnieuw proberen met dezelfde key/payload |
| FORMAT_REQUIRED | 400 | Nee | Conversierequest mist het verplichte format |
| INVALID_FORMAT | 422 | Nee | Niet-ondersteund conversieformaat |
| CLIENT_REFERENCE_CONFLICT | 400 | Nee | client_reference en external_invoice_id verschillen |
| DOWNLOAD_FORMAT_REQUIRED | 400 | Nee | Task-resultrequest mist de verplichte download-query |
| INVALID_DOWNLOAD_FORMAT | 400 | Nee | Task-result download-query moet xml of pdf zijn |
| AUTH_SERVICE_UNAVAILABLE | 503 | Ja | Auth-backend niet beschikbaar |
| RATE_LIMIT_SERVICE_UNAVAILABLE | 503 | Ja | Rate-limit-backend niet beschikbaar |
| RATE_LIMITED | 429 | Ja | Respecteer Retry-After en quotaheaders |
| BAD_REQUEST | 400 | Nee | Ongeldige JSON of ongeldig UUID-padparameter |
| PAYLOAD_TOO_LARGE | 413 | Nee | Uploadgrootte overschrijdt limiet |
| INVALID_UPLOAD | 400 | Nee | Upload lezen/parsen mislukt |
| UPLOAD_FAILED | 4xx/5xx | Voorwaardelijk | Corrigeer ongeldige requestopties; probeer alleen opnieuw bij tijdelijke 5xx-gevallen |
| TASK_NOT_READY | 202 | Ja | Poll opnieuw voor asynchrone voltooiing |
| VALIDATION_FAILED | 422 | Nee | Blokkerende validatieproblemen blijven bestaan; corrigeer de factuurdata voordat u opnieuw probeert |
| AUTHORITATIVE_VALIDATION_UNAVAILABLE | 503 | Ja | Autoritatieve validatie, bewijsopslag of afhankelijkheid voor hybride generatie is niet beschikbaar; probeer later opnieuw |
| TASK_STATUS_FAILED | 4xx/5xx | Voorwaardelijk | Opnieuw proberen bij tijdelijke serviceconditie |
| TASK_RESULT_FAILED | 4xx/5xx | Voorwaardelijk | Opnieuw proberen bij tijdelijke serviceconditie |
| XML_GENERATION_FAILED | 500 | Ja | Tijdelijke XML-generatiefout of timeout |
| PDF_GENERATION_FAILED | 500 | Ja | Tijdelijke PDF-generatiefout of timeout |
| ARTIFACT_GENERATION_RERUN_REQUIRED | 503 | Nee | Strikte artifactgeneratie is mislukt na server-side retries; start een nieuwe conversie nadat de afhankelijkheid is hersteld |
| ZUGFERD_SOURCE_PDF_INCOMPATIBLE | 422 | Nee | Strikte hybride PDF-generatie kan XML niet in de geüploade bron-PDF insluiten |
| OUTPUT_PROFILE_REQUIRED | 422 | Nee | Een generiek uitvoercontract vereist een expliciet profiel wanneer geen eenduidige standaard kan worden bepaald |
| OUTPUT_PROFILE_CONFLICT | 422 | Nee | Profiel is in strijd met het gekozen uitvoerformaat of de expliciete variant |
| PROXY_ERROR | 502/504 | Ja | Tijdelijke verbindingsfout (504 bij timeout) |
Veelvoorkomende fouten en wat te doen
Gebruik deze punten als praktische controles voor deze sectie.
- Opnieuw proberen met backoff:
429,500,502,503,504. - Request of brondata corrigeren:
400,409,413,422. - Toegang of credentials corrigeren:
401,403. - Bevestig goedkeuring, prepaid testcredits of Enterprise-facturering per order form:
402 INSUFFICIENT_API_CREDITS. - Later blijven pollen:
202 TASK_NOT_READY. - Bij
422 VALIDATION_FAILEDtoont u het teruggegeven veld, de regel-ID en de voorgestelde oplossing aan een menselijke controleur voordat u opnieuw probeert met gecorrigeerde factuurdata. - Bij
503 AUTHORITATIVE_VALIDATION_UNAVAILABLEhaalt u dezelfde task later opnieuw op; er is geen ongecontroleerd artefact geleverd.
Rate- en payloadlimieten
Rate limits per API-sleutel en payloadgroottebeperkingen gelden voor alle API-aanroepen. Geweigerde conversies verbruiken geen prepaid API-credits; rate limits worden apart per endpoint bepaald.
- Endpointgebonden limieten zijn kostengewogen. De twee upload-endpoints gebruiken het basisquotum (standaard
30/minen500/hour); taskpolling is momenteel standaard minimaal10/minen120/hour, en resultdownloads zijn momenteel standaard minimaal10/minen ongeveer134/hour. - Lees effectieve limieten uit
X-RateLimit-Limit-MinuteenX-RateLimit-Limit-Hourop responses. - Maximale PDF-uploadgrootte:
20 MB - Maximale uploadgrootte gestructureerde data:
2 MBtotaal over alledata_file-parts. - Maximale JSON-payloadgrootte:
1 MB - Rate-limit-responses bevatten
Retry-After,X-RateLimit-Limit-MinuteenX-RateLimit-Limit-Hour.
Retry-richtlijn
Gebruik deze punten als praktische controles voor deze sectie.
- Gebruik exponentiële backoff met jitter.
- Probeer alleen tijdelijke klassen (
429,500,502,503,504) opnieuw, waar mogelijk met dezelfde payload en idempotency key. - Probeer validatie- of contractfouten (
400,401,402,403,409,413,422) niet blind opnieuw.
Taaklevenscyclus en bewaartermijn
Gebruik deze punten als praktische controles voor deze sectie.
- Voltooide en mislukte taken blijven
10 minutenbeschikbaar nadat ze een terminale status bereiken. - Verwerking krijgt een timeout na
5 minuten; vastgelopen tasks worden automatisch alsfailedgemarkeerd. - Idempotency keys verlopen na
24 uur. - Rate-limit-tellers resetten op een rollend venster.
Supportmodel
Gebruik deze punten als praktische controles voor deze sectie.
- Support tijdens kantooruren op basis van commercieel redelijke inspanningen.
- Geen formele SLA, servicecredit of reactietijdverplichting tenzij afgesproken in een order form.
Stuur technische feedback
Deel implementatievragen, risico’s en benodigde contractwijzigingen met ons team.
Postman en OpenAPI gebruiken
Gebruik deze punten als praktische controles voor deze sectie.
- Importeer de Postman-collectie en stel
baseUrl,apiKeyen een nieuwe variabeleidempotencyKeyin. - Voer de collectie op volgorde uit: convert, status pollen, daarna result ophalen.
- Gebruik de OpenAPI JSON om typed clients te genereren, maar dek file upload, polling en binaire result handling af met integratietests.
- Leg
X-Correlation-IDvast in logs zodat support requests end-to-end kan traceren.