# 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.

SK CTC invoice flow (happy flow)

C2 (sender AP) C3 (receiver AP) C5 (tax authority AP) Invoice TDD (submit) TDD (submit) MLS AP / auto AB MLS (on TDD) MLS (on TDD) InvoiceSent InvoiceReceived
Happy flow for a CTC invoice: TDD submission, MLS acknowledgement, and the final outcome for both parties.

# Prerequisite

# 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.

# See also

© 2026 eConnect International B.V.