Sub-reports
A submission carries exactly one sub-report, chosen withtype when you open it:
Each sub-report has its own push endpoints. Rounds for different sub-reports are independent and may run at once.
The person is the unit of reporting
Whichever sub-report you are reporting, you push persons, keyed by your ownclientPersonId. Each person becomes exactly one reportable entry, with every account or debt they hold with you attached to it. That id must be unique within the submission, and it is how you address the person on update and delete.
PUT replaces a person rather than merging into them. Send all their accounts or debts every time, not just the ones that changed.
How it works
1
Open a submission
POST /reports/mai55/v1/submissions with the sub-report type and reporting year. You get back a submissionId that scopes every subsequent call. Optionally include a webhookUrl to be notified when the submission finishes processing.2
Push persons
POST /reports/mai55/v1/submissions/{submissionId}/{sipl|slik|skis}/persons with a batch of persons. Push to the path matching the submission’s sub-report; pushing to another one is rejected.3
Submit
POST /reports/mai55/v1/submissions/{submissionId}:submit starts report generation and submission to the tax authority. After this call the submission is no longer editable.4
Track progress and fix errors
Poll
GET .../status for the high-level state, or GET .../report for reported-versus-pending counts of persons and messages. GET .../errors lists the persons with unresolved tax authority validation errors, with the error codes to fix.Corrections
Opening a submission for a sub-report and year that has already been reported returnskind: CORRECTION. A correction works exactly like the first submission, using the same endpoints and keyed by clientPersonId, but each call now acts on what the tax authority already holds:
POST /personsadds persons the tax authority has not seen. One it already holds is rejected, and must be amended withPUTor withdrawn withDELETE.PUT /persons/{clientPersonId}amends an already-reported person, replacing their entry whole. Amending a person the tax authority has never seen is rejected.DELETE /persons/{clientPersonId}withdraws the person’s entry at the tax authority, with every account or debt it carried. A person it has never seen returns404.
409.
Pushing persons
A batch holds up to 10,000 persons. A batch is not all-or-nothing. Persons that fail are reported individually and the rest of the batch is still saved, so a207 response means some persons were rejected while the others were stored. Send the optional Idempotency-Key header to make a retried batch safe.
Two rules are worth knowing before you push:
- An account of type
CURRENT_ACCOUNTmust carry an IBAN as itsaccountNumber; any other account type can carry a different identifier. - Under
SIPL, only persons whose income across all their accounts reaches 15,000 EUR are reportable. The total is summed from the accounts rather than sent, as is theSKIStotal debt.
Submission status
status on a submission moves through:
Webhook
Instead of polling for status, pass awebhookUrl when you open a submission. Once the submission finishes processing, the connector calls it with a POST carrying a JSON body:
status is the tax authority’s validation result for the submission: ACCEPTED or REJECTED. Calls originate from the following IP addresses; whitelist them to receive the webhook.
Authentication
All endpoints require a bearer JWT obtained via the OAuth2client_credentials grant. See Authentication. Each sub-report is authorised separately, so your client is granted access to SIPL, SLIK and SKIS individually. Listing submissions returns those of every sub-report you hold a permission for.
API Reference
Explore the full API specification in the Swagger documentation.IP Whitelisting Required: Before you can access the Swagger documentation, your IP address must be whitelisted. Contact us to register your IP addresses.
Resources
Submissions
Open a reporting batch, submit it, and track its status
SIPL
Report the income you paid into your clients’ accounts
SLIK
Report year-end balances on your clients’ accounts
SKIS
Report the debts your clients still owe you