Skip to main content

Overview

Complete both scenarios in the test environment before moving to production: report accounts for a year, then correct one of them. See Testing for the test environment and the practices shared by every report.

Test Scenarios

Create a submission for a reporting year, push your accounts, then submit.
Objective: Create a new submission for a reporting year.Request: POST /reports/crs/v1/submissionsRequest Body:
webhookUrl is optional. Include it and the connector calls it with the final verdict once the submission finishes processing:
Whitelist the sending IP addresses first. They are listed under Webhook. Test whichever route you plan to use in production.
Expected Response: HTTP 201 Created
Confirm kind is SUBMISSION. Store the submissionId. It scopes every call in Test Cases 2 to 4.
Objective: Add the accounts you report for the year. Call this as many times as you need.The example below pushes three: a reportable entity, a passive entity with a controlling person, and a closed individual account.Request: POST /reports/crs/v1/submissions/{submissionId}/accountsRequest Body:
Send the optional Idempotency-Key header so a retry returns the original response instead of pushing the batch twice.
Expected Response: HTTP 201 Created
Objective: Hand the submission off to be reported to the tax authority.Request: POST /reports/crs/v1/submissions/{submissionId}:submitNo request body.Expected Response: HTTP 200 OK
After this call the submission is no longer editable. Push all accounts first.
Objective: Follow the submission until the tax authority accepts it.
Use these calls instead of the webhook, or alongside it whenever you want to check a submission by hand.
Request: GET /reports/crs/v1/submissions/{submissionId}/statusExpected Response: HTTP 200 OK
Poll until status becomes REPORTEDTo check whether any accounts failed CRS validation, call GET /reports/crs/v1/submissions/{submissionId}/accounts/errors.
Last modified on September 1, 2026