API playground

Every endpoint with its parameters and examples. Press Try it to send a real request to sandbox from your browser.

Download OpenAPI v3.0.0

Unify

Submit a document

Validates one invoice or credit note for a country and document type, and queues it for delivery to the tax authority or the Peppol network. Delivery continues after the response.

POST /api/v3/unify

Authorization

Authorization string header required

Your API key, as Bearer YOUR_API_KEY.

Headers

new-api string header required

Selects this request format. Without it, the request is read in the earlier format.

Value true

Body

application/json

source must be one of your sources, as name:version. The example uses a sample source.

country string required

ISO 3166-1 alpha-2 code of the country the document is for.

One of AESAOMMYBEDE

environment string required

Must match your API key: a sandbox key for sandbox, a production key for production.

One of sandboxproduction

purpose string required

invoicing validates and submits the document.

Value invoicing

source string required

Your source as name:version, from onboarding.

documentType object required

Decides which payload fields are required.

3 child attributes

base string required

For example tax_invoice or credit_note.

modifiers string[] required

Send an empty array when none apply.

variant string

payload object required

The invoice in the structure expected by your source's mapping. See the GETS field reference for fields used in country validation.

The fields inside payload depend on the country and document type. See them in the field reference, or build a payload with .

Responses

200

The document passed validation and was stored.

400

The request is malformed, or names an unsupported country or an unknown source.

401

The API key is missing, invalid, revoked or expired.

403

The key cannot make this request.

404

The source was not found in your workspace. Check its name and version.

422

The document failed validation. Each error names the field in GETS and in your payload, and the rule it broke.

429

Too many requests. Wait for the number of seconds in Retry-After, then retry.

500

Something went wrong on our side. Retry with backoff.

More detail, with walkthroughs, in the reference page.

Try Submit a document

POST Sandbox

Add your API key to send. Until then, the example responses show what comes back. You can also paste a cURL command to fill in the request.

Add your source to get a real 200; the sample source is not in your workspace.

JSON

source must be one of your sources, as name:version. The example uses a sample source.

{
  "documentId": "01K5EXAMPLE00000000000142",
  "documentNumber": "INV-2026-000184",
  "message": "Your invoice was validated and is ready for submission.",
  "Base64XML": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEludm9pY2UgeG1sbnM9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkludm9pY2UtMiIgeG1sbnM6Y2FjPSJ1cm46b2FzaXM6bmFtZXM6c3BlY2lmaWNhdGlvbjp1Ymw6c2NoZW1hOnhzZDpDb21tb25BZ2dyZWdhdGVDb21wb25lbnRzLTIiIHhtbG5zOmNiYz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uQmFzaWNDb21wb25lbnRzLTIiPjxjYmM6Q3VzdG9taXphdGlvbklEPnVybjpwZXBwb2w6cGludDpiaWxsaW5nLTFAYWUtMTwvY2JjOkN1c3RvbWl6YXRpb25JRD48Y2JjOlByb2ZpbGVJRD51cm46cGVwcG9sOmJpczpiaWxsaW5nPC9jYmM6UHJvZmlsZUlEPjxjYmM6SUQ+SU5WLTIwMjYtMDAwMTg0PC9jYmM6SUQ+PGNiYzpJc3N1ZURhdGU+MjAyNi0wOS0xODwvY2JjOklzc3VlRGF0ZT48Y2JjOkR1ZURhdGU+MjAyNi0xMC0xODwvY2JjOkR1ZURhdGU+PGNiYzpJbnZvaWNlVHlwZUNvZGU+MzgwPC9jYmM6SW52b2ljZVR5cGVDb2RlPjxjYmM6RG9jdW1lbnRDdXJyZW5jeUNvZGU+QUVEPC9jYmM6RG9jdW1lbnRDdXJyZW5jeUNvZGU+PGNhYzpBY2NvdW50aW5nU3VwcGxpZXJQYXJ0eT48Y2FjOlBhcnR5PjxjYmM6RW5kcG9pbnRJRCBzY2hlbWVJRD0iMDIzNSI+MTAwMDEyMzQ1NjAwMDAzPC9jYmM6RW5kcG9pbnRJRD48Y2FjOlBvc3RhbEFkZHJlc3M+PGNiYzpTdHJlZXROYW1lPjEyIEhhcmJvdXIgUm9hZDwvY2JjOlN0cmVldE5hbWU+PGNiYzpDaXR5TmFtZT5EdWJhaTwvY2JjOkNpdHlOYW1lPjxjYmM6Q291bnRyeVN1YmVudGl0eT5EdWJhaTwvY2JjOkNvdW50cnlTdWJlbnRpdHk+PGNhYzpDb3VudHJ5PjxjYmM6SWRlbnRpZmljYXRpb25Db2RlPkFFPC9jYmM6SWRlbnRpZmljYXRpb25Db2RlPjwvY2FjOkNvdW50cnk+PC9jYWM6UG9zdGFsQWRkcmVzcz48Y2FjOlBhcnR5VGF4U2NoZW1lPjxjYmM6Q29tcGFueUlEPjEwMDAxMjM0NTYwMDAwMzwvY2JjOkNvbXBhbnlJRD48Y2FjOlRheFNjaGVtZT48Y2JjOklEPlZBVDwvY2JjOklEPjwvY2FjOlRheFNjaGVtZT48L2NhYzpQYXJ0eVRheFNjaGVtZT48Y2FjOlBhcnR5TGVnYWxFbnRpdHk+PGNiYzpSZWdpc3RyYXRpb25OYW1lPkFjbWUgVHJhZGluZyBMTEM8L2NiYzpSZWdpc3RyYXRpb25OYW1lPjwvY2FjOlBhcnR5TGVnYWxFbnRpdHk+PC9jYWM6UGFydHk+PC9jYWM6QWNjb3VudGluZ1N1cHBsaWVyUGFydHk+PGNhYzpBY2NvdW50aW5nQ3VzdG9tZXJQYXJ0eT48Y2FjOlBhcnR5PjxjYmM6RW5kcG9pbnRJRCBzY2hlbWVJRD0iMDIzNSI+MTAwMDEyMzQ1NjAwMDA0PC9jYmM6RW5kcG9pbnRJRD48Y2FjOlBvc3RhbEFkZHJlc3M+PGNiYzpTdHJlZXROYW1lPjQ4IE1hcmtldCBTdHJlZXQ8L2NiYzpTdHJlZXROYW1lPjxjYmM6Q2l0eU5hbWU+RHViYWk8L2NiYzpDaXR5TmFtZT48Y2JjOkNvdW50cnlTdWJlbnRpdHk+RHViYWk8L2NiYzpDb3VudHJ5U3ViZW50aXR5PjxjYWM6Q291bnRyeT48Y2JjOklkZW50aWZpY2F0aW9uQ29kZT5BRTwvY2JjOklkZW50aWZpY2F0aW9uQ29kZT48L2NhYzpDb3VudHJ5PjwvY2FjOlBvc3RhbEFkZHJlc3M+PGNhYzpQYXJ0eVRheFNjaGVtZT48Y2JjOkNvbXBhbnlJRD4xMDAwMTIzNDU2MDAwMDQ8L2NiYzpDb21wYW55SUQ+PGNhYzpUYXhTY2hlbWU+PGNiYzpJRD5WQVQ8L2NiYzpJRD48L2NhYzpUYXhTY2hlbWU+PC9jYWM6UGFydHlUYXhTY2hlbWU+PGNhYzpQYXJ0eUxlZ2FsRW50aXR5PjxjYmM6UmVnaXN0cmF0aW9uTmFtZT5HdWxmIFJldGFpbCBGWi1MTEM8L2NiYzpSZWdpc3RyYXRpb25OYW1lPjwvY2FjOlBhcnR5TGVnYWxFbnRpdHk+PC9jYWM6UGFydHk+PC9jYWM6QWNjb3VudGluZ0N1c3RvbWVyUGFydHk+PGNhYzpQYXltZW50TWVhbnM+PGNiYzpQYXltZW50TWVhbnNDb2RlPjMwPC9jYmM6UGF5bWVudE1lYW5zQ29kZT48Y2FjOlBheWVlRmluYW5jaWFsQWNjb3VudD48Y2JjOklEPkFFMDcwMzMxMjM0NTY3ODkwMTIzNDU2PC9jYmM6SUQ+PC9jYWM6UGF5ZWVGaW5hbmNpYWxBY2NvdW50PjwvY2FjOlBheW1lbnRNZWFucz48Y2FjOlRheFRvdGFsPjxjYmM6VGF4QW1vdW50IGN1cnJlbmN5SUQ9IkFFRCI+MTAwLjAwPC9jYmM6VGF4QW1vdW50PjxjYWM6VGF4U3VidG90YWw+PGNiYzpUYXhhYmxlQW1vdW50IGN1cnJlbmN5SUQ9IkFFRCI+MjAwMC4wMDwvY2JjOlRheGFibGVBbW91bnQ+PGNiYzpUYXhBbW91bnQgY3VycmVuY3lJRD0iQUVEIj4xMDAuMDA8L2NiYzpUYXhBbW91bnQ+PGNhYzpUYXhDYXRlZ29yeT48Y2JjOklEPlM8L2NiYzpJRD48Y2JjOlBlcmNlbnQ+NTwvY2JjOlBlcmNlbnQ+PGNhYzpUYXhTY2hlbWU+PGNiYzpJRD5WQVQ8L2NiYzpJRD48L2NhYzpUYXhTY2hlbWU+PC9jYWM6VGF4Q2F0ZWdvcnk+PC9jYWM6VGF4U3VidG90YWw+PC9jYWM6VGF4VG90YWw+PGNhYzpMZWdhbE1vbmV0YXJ5VG90YWw+PGNiYzpMaW5lRXh0ZW5zaW9uQW1vdW50IGN1cnJlbmN5SUQ9IkFFRCI+MjAwMC4wMDwvY2JjOkxpbmVFeHRlbnNpb25BbW91bnQ+PGNiYzpUYXhFeGNsdXNpdmVBbW91bnQgY3VycmVuY3lJRD0iQUVEIj4yMDAwLjAwPC9jYmM6VGF4RXhjbHVzaXZlQW1vdW50PjxjYmM6VGF4SW5jbHVzaXZlQW1vdW50IGN1cnJlbmN5SUQ9IkFFRCI+MjEwMC4wMDwvY2JjOlRheEluY2x1c2l2ZUFtb3VudD48Y2JjOlBheWFibGVBbW91bnQgY3VycmVuY3lJRD0iQUVEIj4yMTAwLjAwPC9jYmM6UGF5YWJsZUFtb3VudD48L2NhYzpMZWdhbE1vbmV0YXJ5VG90YWw+PGNhYzpJbnZvaWNlTGluZT48Y2JjOklEPjE8L2NiYzpJRD48Y2JjOkludm9pY2VkUXVhbnRpdHkgdW5pdENvZGU9IlBDRSI+MjA8L2NiYzpJbnZvaWNlZFF1YW50aXR5PjxjYmM6TGluZUV4dGVuc2lvbkFtb3VudCBjdXJyZW5jeUlEPSJBRUQiPjIwMDAuMDA8L2NiYzpMaW5lRXh0ZW5zaW9uQW1vdW50PjxjYWM6SXRlbT48Y2JjOk5hbWU+Q2xvdWQgc3Vic2NyaXB0aW9uIOKAlCBCdXNpbmVzcyBwbGFuPC9jYmM6TmFtZT48Y2FjOkNsYXNzaWZpZWRUYXhDYXRlZ29yeT48Y2JjOklEPlM8L2NiYzpJRD48Y2JjOlBlcmNlbnQ+NTwvY2JjOlBlcmNlbnQ+PGNhYzpUYXhTY2hlbWU+PGNiYzpJRD5WQVQ8L2NiYzpJRD48L2NhYzpUYXhTY2hlbWU+PC9jYWM6Q2xhc3NpZmllZFRheENhdGVnb3J5PjwvY2FjOkl0ZW0+PGNhYzpQcmljZT48Y2JjOlByaWNlQW1vdW50IGN1cnJlbmN5SUQ9IkFFRCI+MTAwLjAwPC9jYmM6UHJpY2VBbW91bnQ+PC9jYWM6UHJpY2U+PC9jYWM6SW52b2ljZUxpbmU+PC9JbnZvaWNlPg=="
}

Example The document passed validation and was stored.