# Tutorial: Continuous Transaction Controls (CTC)
Continuous Transaction Controls (CTC) is a country-specific mandate that requires invoices to also be reported to the tax authority. eConnect currently supports Slovakia (party scheme 0245). eConnect submits the report for you as a Tax Data Document (TDD), and requires a Message Level Status (MLS) on the invoice itself.
# Prerequisite
- You generated a DIC verification token and your partyId is registered with scheme
0245(Slovakia). - You know the concepts behind MLS acknowledgements, see Send an MLS response and Receive an MLS response.
# Step 1: Enable CTC
Register a hook with the ctc parameter set to true:
{
"id": "peppol",
"name": "ctc slovakia outbound",
"action": "peppol:?ctc=true",
"topics": [
"Send*"
],
"isActive": true
}
If you're the receiving party (also scheme 0245), you don't need to configure anything. The TDD submission and acknowledgement window described below happen automatically.
# Step 2: Send the invoice
Send the invoice as usual, for example via POST /api/v1/{partyId}/salesInvoice/send?receiverId={receiverId}.
The sender receives an InvoiceSentPending webhook once eConnect has submitted the TDD:
{
"topic": "InvoiceSentPending",
"partyId": "SK:DIC:1234567777",
"hookId": "webhook",
"documentId": "e2519a08-2545-4cff-9ba5-2b6af19a279f",
"message": "'Invoice' successfully sent: '6d18f126-b1d6-4e99-8c2f-8f75e1ed6575@x9639j.econnect.eu' and tax document '961bb234-4fb7-415b-b659-77e28be8e9e2' submitted.",
"details": {
"sender": "SK:DIC:1234567777",
"receiver": "SK:DIC:1234567889",
"mlsType": "ALWAYS_SEND",
"tddDocumentId": "961bb234-4fb7-415b-b659-77e28be8e9e2"
},
"createdOn": "2026-08-18T19:20:22.5806795+00:00",
"sentOn": "2026-08-18T19:20:25.2694569+00:00"
}
The receiving party gets a matching InvoiceReceivedPending webhook, with its own TDD:
{
"topic": "InvoiceReceivedPending",
"partyId": "SK:DIC:1234567889",
"hookId": "webhook",
"documentId": "6d18f126-b1d6-4e99-8c2f-8f75e1ed6575",
"message": "'Invoice' received and tax document '2788abbc-7480-4fd9-bdbe-3056a9199cfc' submitted. Delivery status 'AB' scheduled in 5 minutes.",
"details": {
"sender": "SK:DIC:1234567777",
"receiver": "SK:DIC:1234567889",
"mlsType": "ALWAYS_SEND",
"tddDocumentId": "2788abbc-7480-4fd9-bdbe-3056a9199cfc"
},
"createdOn": "2026-08-18T19:20:35.7143931+00:00",
"sentOn": "2026-08-18T19:20:36.1045676+00:00"
}
Unlike a regular Peppol invoice, a received CTC invoice is not rejected at the AS4 access point if it fails validation. It is always accepted there. Validation happens afterward, and a failure is reported as an MLS RE, same as any other MLS status.
# Step 3: Acknowledge the invoice
ALWAYS_SEND requires the receiving party to send an MLS back. Reply explicitly by calling POST /api/v1-beta/generic/{documentId}/response:
{
"status": "AP"
}
If no reply is sent, eConnect automatically acknowledges with AB after 5 minutes.
See Send an MLS response for the full set of status values.
# Step 4: Final outcome
Once both the recipient MLS and the tax authority MLS for the TDD are known, both parties receive their final webhook.
The receiving party gets InvoiceReceived:
{
"topic": "InvoiceReceived",
"partyId": "SK:DIC:1234567889",
"hookId": "webhook",
"documentId": "6d18f126-b1d6-4e99-8c2f-8f75e1ed6575",
"message": "'Invoice' acknowledged to the sender with status 'AB'.",
"details": {
"sender": "SK:DIC:1234567777",
"receiver": "SK:DIC:1234567889",
"tddDocumentId": "2788abbc-7480-4fd9-bdbe-3056a9199cfc",
"tddMlsDocumentId": "ec27620c-10a0-4497-a997-5429f74aacd8",
"mlsDocumentId": "098da9d3-1cf2-495b-8c6e-a382fe881d9d"
},
"createdOn": "2026-08-18T19:25:36.0338203+00:00",
"sentOn": "2026-08-18T19:25:36.7155265+00:00"
}
The sender party gets InvoiceSent:
{
"topic": "InvoiceSent",
"partyId": "SK:DIC:1234567777",
"hookId": "webhook",
"documentId": "e2519a08-2545-4cff-9ba5-2b6af19a279f",
"message": "'Invoice' sent, confirmed by the recipient with 'AB', and successfully registered with the tax authority with confirmation 'AB'.",
"details": {
"sender": "SK:DIC:1234567777",
"receiver": "SK:DIC:1234567889",
"tddDocumentId": "961bb234-4fb7-415b-b659-77e28be8e9e2",
"tddMlsDocumentId": "be7f7ae8-7982-45f8-a7c7-5b3bd30e851b",
"mlsDocumentId": "284cfcf5-1f61-46ad-afb9-98b19d3b09e3"
},
"createdOn": "2026-08-18T19:25:39.4306667+00:00",
"sentOn": "2026-08-18T19:25:39.6204008+00:00"
}
tddDocumentId, tddMlsDocumentId and mlsDocumentId can each be downloaded as proof via GET /api/v1/{partyId}/generic/{documentId}/download.