ADITUS/Webhooks/Changes in Sales Process

Changes in Sales Process

The webhooks in the Changes in the Sales Process area inform external systems about all relevant events that occur after a sale has been completed.

They cover the entire lifecycle of a sale – including cancellations, invoice changes, payment confirmations, and changes to the legitimation status.

These events enable connected applications to react in real time to changes in the sales process – for example to:

  • Synchronize accounting and ERP systems (e.g., for invoice changes or incoming payments)

  • Trigger cancellation processes in downstream systems (e.g., refunds, ticket invalidation)

  • Provide CRM systems with updated buyer and billing information

  • Monitor and log compliance and legitimation checks

  • Separate test and production data (e.g., via the test flag)

  • Keep monitoring dashboards and reporting systems up to date

In contrast to the webhooks in the Ticket Entry and Validation area, which focus on physical access, the events in this area relate exclusively to the commercial process – i.e., the sale itself, its payment, cancellation, and the associated administrative processes.

Supported Events

The following webhook events are available in this area:

  • sale.canceled - Sale canceled

  • sale.testFlagUpdated - Marked as test flag on sale updated

  • sale.invoiceUpdated - Invoice or buyer details updated

  • sale.markAsPaid - Sale marked as paid

  • sale.legitimationStatusChanged - Legitimation status of sale changed

Flow (typical)

General Notes

  • Payload structure: All events in this group follow a uniform base structure with the top-level fields event, event_id, event_time, endpoint_url, and data. The contents of the data object vary depending on the event.

  • Data dependency: Depending on the event and context, individual objects in the payload may be missing or contain additional fields.

  • Idempotency: Receiving systems should use the event_id for deduplication to ensure that an event is not processed twice.

sale.canceled – Sale canceled

The webhook event sale.canceled is triggered when a previously completed sale is canceled. It informs connected systems about the cancellation so they can, for example, initiate refunds, invalidate tickets, or reverse bookings in the ERP system.

Trigger: The sale transitions to the status Canceled – either by the buyer, a back-office user, or an external system.

Webhook payload sample

{
"event": "sale.canceled",
"event_id": "e3facb49-67f1-421a-aca0-7435cdd11174",
"event_time": "2026-05-29T15:39:10.4396003+02:00",
"api_url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/terp/v1/clearing/sales/1d2ab198-635b-f111-93e7-00155d96040a",
"endpoint_url": "https://webhook.site/9657addd-cab4-43a9-b2c4-383597d029c0",
"data": {
"saleCanceled": {
"saleIdentifier": "1d2ab198-635b-f111-93e7-00155d96040a",
"success": true,
"canceledOn": "2026-05-29T15:39:08.7710564",
"canceledReason": ""
},
"sale": {
"id": "1d2ab198-635b-f111-93e7-00155d96040a",
"number": "0815-2025-815523860",
"saleTimestamp": "2026-05-29T15:38:05.5904799+02:00",
"event": {
"id": "f32adbb6-3c9c-ef11-93d8-00155d96040a",
"name": "Futurama",
"year": "2025",
"number": "0815",
"slug": "fr25",
"dateTimeSpan": {
"start": "2025-04-01T08:00:00+02:00",
"end": "2026-12-31T09:00:00+01:00"
},
"externalId1": "test-id-1",
"externalId2": "fr25",
"externalId3": "test-id-3"
},
"status": {
"rawValue": "Canceled",
"tags": [
0: "PaymentNotPaid",
1: "ReceiptNotCreated"
],
"isBillingAddressChangeEnabled": false
},
"billing": {
"id": "de15a99e-635b-f111-93e7-00155d96040a",
"firstName": "Theo",
"lastName": "Tester",
"email": "u.janssen+2605291533@aditus.de",
"company": "ADITUS GmbH",
"spokenLanguage": "German",
"address": {
"state": {
},
"country": {
"key": "DE",
"value": "Germany"
},
"county": {
"key": "003",
"value": "Lower Saxony (Niedersachsen)"
},
"street": "Straße der Nationen",
"houseNumber": "5",
"postalCode": "30539",
"city": "Hannover"
}
},
"buyer": {
"id": "de15a99e-635b-f111-93e7-00155d96040a",
"firstName": "Theo",
"lastName": "Tester",
"email": "u.janssen+2605291533@aditus.de",
"company": "ADITUS GmbH",
"spokenLanguage": "German",
"address": {
"state": {
},
"country": {
"key": "DE",
"value": "Germany"
},
"county": {
"key": "003",
"value": "Lower Saxony (Niedersachsen)"
},
"street": "Straße der Nationen",
"houseNumber": "5",
"postalCode": "30539",
"city": "Hannover"
}
},
"invoice": {
"number": "",
"grossPrice": 35,
"grossPriceFormatted": "€35.00",
"currency": "EUR",
"status": "NotCreated"
},
"payment": {
"providerName": "WERO",
"status": "NotPaid"
},
"receipts": [
],
"hasTransactions": true,
"hasArticles": true,
"hasConfirmedReservationTransaction": false,
"hasCarts": true
}
}
}

Fields in detail

saleCanceled – Cancellation Details

This object only exists in the sale.canceled event and contains the details of the cancellation.

FieldTypeDescriptionExample Value
saleIdentifierstring (UUID)UUID of the canceled sale.1d2ab198-635b-f111-93e7-00155d96040a
successbooleanIndicates whether the cancellation was successful.true
canceledOnstring (ISO‑8601)Timestamp of the cancellation.2026-05-29T15:39:08.7710564
canceledReasonstringReason for the cancellation. May be empty if no reason was provided.""

sale – Sale Data

Core information about the canceled sale.

FieldTypeDescriptionExample Value
idstring (UUID)UUID of the sale.1d2ab198-635b-f111-93e7-00155d96040a
numberstringHuman-readable sale number.0815-2025-815523860
saleTimestampstring (ISO‑8601)Timestamp when the sale was originally completed.2026-05-29T15:38:05.5904799+02:00

event – Event Information (within sale)

Information about the event (fair/exhibition) in which the sale took place.

FieldTypeDescriptionExample Value
idstring (UUID)UUID of the event.f32adbb6-3c9c-ef11-93d8-00155d96040a
namestringEvent name.Futurama
yearstringEvent year.2025
numberstringEvent number.0815
slugstringURL-friendly short identifier for the event.fr25
dateTimeSpan.startstring (ISO‑8601)Event start date/time.2025-04-01T08:00:00+02:00
dateTimeSpan.endstring (ISO‑8601)Event end date/time.2026-12-31T09:00:00+01:00
externalId1stringExternal reference ID 1 (tenant-specific, optional).test-id-1
externalId2stringExternal reference ID 2 (tenant-specific, optional).fr25
externalId3stringExternal reference ID 3 (tenant-specific, optional).test-id-3

status – Sale Status

FieldTypeDescriptionExample Value
rawValuestringStatus value. Possible values: Completed, Canceled, Pending.Canceled
tagsarray of stringsStatus tags providing additional context. Possible values: PaymentPaid, PaymentNotPaid, ReceiptCreated, ReceiptNotCreated, LegitimationNew, LegitimationAccepted, LegitimationRejected.["PaymentNotPaid", "ReceiptNotCreated"]
isBillingAddressChangeEnabledbooleanIndicates whether the buyer can still change the billing address. Typically false for canceled sales.false

billing – Billing Contact

Billing recipient data for the sale.

FieldTypeDescriptionExample Value
idstring (UUID)UUID of the billing contact.de15a99e-635b-f111-93e7-00155d96040a
firstNamestringFirst name.Theo
lastNamestringLast name.Tester
emailstringEmail address.u.janssen+2605291533@aditus.de
companystringCompany name.ADITUS GmbH
spokenLanguagestringPreferred language.German

billing.address – Billing Address

FieldTypeDescriptionExample Value
stateobjectState/region. May be empty ({}).{}
country.keystringISO country code.DE
country.valuestringCountry name.Germany
county.keystringCounty/region code.003
county.valuestringCounty/region name.Lower Saxony (Niedersachsen)
streetstringStreet name.Straße der Nationen
houseNumberstringHouse number.5
postalCodestringPostal code.30539
citystringCity.Hannover

buyer – Buyer Contact

Same structure as billing. Contains the buyer's contact details (may be identical to the billing contact).

invoice – Invoice Data

FieldTypeDescriptionExample Value
numberstringInvoice number. May be empty if no invoice was created before the cancellation.""
grossPricenumberGross price (incl. VAT).35
grossPriceFormattedstringFormatted gross price with currency symbol.€35.00
currencystringISO currency code.EUR
statusstringInvoice status. Possible values: Created, NotCreated.NotCreated

payment – Payment Data

FieldTypeDescriptionExample Value
providerNamestringName of the payment provider.WERO
statusstringPayment status. Possible values: Paid, NotPaid, Refunded.NotPaid

receipts[] – Receipts

Array containing the receipts for the sale. For canceled sales, this array may be empty if no invoice was created before the cancellation.

FieldTypeDescriptionExample Value
numberstringReceipt number.0815-2025-815513750
typestringReceipt type. Possible values: Bill, Cancellation, BillCorrection, PaymentConfirmation.Bill
createdAtstring (ISO‑8601)Timestamp when the receipt was created.2026-05-29T15:39:08+02:00
urlstring (URL)URL to download the receipt PDF.https://dev.aditus.de/.../receipts/{id}

Boolean Flags (within sale)

FieldTypeDescriptionExample Value
hasTransactionsbooleanIndicates whether the sale has associated payment transactions.true
hasArticlesbooleanIndicates whether the sale contains articles.true
hasConfirmedReservationTransactionbooleanIndicates whether a confirmed reservation exists.false
hasCartsbooleanIndicates whether the sale has associated carts.true

Notes on Other Events in This Group

EventDescriptionPayload Specifics
sale.canceledSale canceledFull payload with all objects (as documented above)
sale.testFlagUpdatedTest flag updatedsale.isTestSale contains the new value (true/false)
sale.invoiceUpdatedInvoice/buyer data updatedUpdated data in buyer_address and/or billing_address
sale.markAsPaidMarked as paidsale.salePaymentStatus = Paid
sale.legitimationStatusChangedLegitimation status changedContains the new legitimation status

sale.testFlagUpdated - Test Flag Updated

The webhook event sale.testFlagUpdated is triggered when the test flag of a sale is changed – i.e., when a sale is marked as a test sale. This allows connected systems to cleanly separate test and production data, for example by excluding test sales from revenue reports, accounting exports, or CRM synchronization.

Trigger: A back-office user or an external system changes the test flag of an existing sale (from production to test).

Webhook payload sample

{
"event": "sale.testFlagUpdated",
"event_id": "3de31295-c9c2-4aa7-88ed-ed2e684374c3",
"event_time": "2026-02-16T16:36:45.9123409+01:00",
"api_url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/terp/v1/clearing/sales/1287f990-4b0b-f111-93e3-00155d960409",
"endpoint_url": "https://webhook.site/9657addd-cab4-43a9-b2c4-383597d029c0",
"data": {
"saleTestFlagUpdated": {
"saleIdentifier": "1287f990-4b0b-f111-93e3-00155d960409",
"success": true,
"isTest": true
},
"sale": {
"id": "1287f990-4b0b-f111-93e3-00155d960409",
"number": "0815-2025-815518487",
"saleTimestamp": "2026-02-16T16:24:27.5569675+01:00",
"event": {
"id": "f32adbb6-3c9c-ef11-93d8-00155d96040a",
"name": "Futurama",
"year": "2025",
"number": "0815",
"slug": "fr25",
"dateTimeSpan": {
"start": "2025-04-01T08:00:00+02:00",
"end": "2026-12-31T23:59:00+01:00"
}
},
"status": {
"rawValue": "Canceled",
"tags": [
0: "PaymentRefunded",
1: "ReceiptCreated",
2: "TestSale"
],
"isBillingAddressChangeEnabled": true
},
"billing": {
"id": "51963397-4b0b-f111-93e3-00155d960409",
"firstName": "A",
"lastName": "B",
"email": "a.yesafau+260213@aditus.de",
"company": "ADITUS GmbH",
"spokenLanguage": "Deutsch",
"address": {
"state": {
},
"country": {
"key": "DE",
"value": "Deutschland"
},
"county": {
"key": "003",
"value": "Niedersachsen"
},
"street": "Straße der Nationen",
"houseNumber": "5",
"postalCode": "30539",
"city": "Hannover"
}
},
"buyer": {
"id": "51963397-4b0b-f111-93e3-00155d960409",
"firstName": "A",
"lastName": "B",
"email": "a.yesafau+260213@aditus.de",
"company": "ADITUS GmbH",
"spokenLanguage": "Deutsch",
"address": {
"state": {
},
"country": {
"key": "DE",
"value": "Deutschland"
},
"county": {
"key": "003",
"value": "Niedersachsen"
},
"street": "Straße der Nationen",
"houseNumber": "5",
"postalCode": "30539",
"city": "Hannover"
}
},
"invoice": {
"number": "0815-2025-815501039",
"grossPrice": 32,
"grossPriceFormatted": "32,00 €",
"currency": "EUR",
"status": "Created"
},
"payment": {
"providerName": "MasterCard",
"status": "Refunded"
},
"receipts": [
0: {
"number": "0815-2025-815511669",
"type": "Bill",
"createdAt": "2026-02-16T16:25:29.584296+01:00",
"url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/receipts/c9abcbb4-fb17-41b2-be7f-a1762c5a3024?s=qnKJLKeDxG9fg"
},
1: {
"number": "0815-2025-815501039",
"type": "Cancellation",
"createdAt": "2026-02-16T16:36:05.4582456+01:00",
"url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/receipts/0d551e1c-a063-4d50-aa2d-8071e483ce33?s=Ty7xWoNkubNysw"
}
],
"hasTransactions": true,
"hasArticles": true,
"hasConfirmedReservationTransaction": false,
"hasCarts": true
}
}
}

Differences from sale.canceled

AspectDifference
data.saleTestFlagUpdatedNew object – contains the updated test flag status (see below). Only exists for this event.
data.sale.status.tagsMay contain the tag TestSale when the sale is marked as a test.
No saleCanceled objectThe saleCanceled object from sale.canceled is not present.

New Object: saleTestFlagUpdated

FieldTypeDescriptionExample Value
saleIdentifierstring (UUID)UUID of the affected sale.1287f990-4b0b-f111-93e3-00155d960409
successbooleanWhether the test flag update was successful.true
isTestbooleanThe new value of the test flag. true = test sale, false = production sale.true

All other fields (sale, buyer, billing, invoice, payment, receipts) follow the same structure as sale.canceled.

sale.invoiceUpdated – Invoice or Buyer Data Updated

The webhook event sale.invoiceUpdated is triggered when invoice information or buyer data of an existing sale is subsequently changed – for example, when the VAT ID is added, the billing address is corrected, or the salutation is updated. Connected systems can use this event to keep their invoice records, accounting exports, and CRM entries in sync.

Trigger: A buyer, back-office user, or external system modifies billing-relevant data of an already completed sale. The system automatically generates a corrected invoice (receipt type BillCorrection) and a new invoice reflecting the updated data.

Webhook payload sample

{
"event": "sale.invoiceUpdated",
"event_id": "fa01500c-bbc4-4ed4-a1f7-bb794ce633f2",
"event_time": "2026-06-03T13:30:29.620173+02:00",
"api_url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/terp/v1/clearing/sales/197bda3f-5cae-f011-93e1-00155d96040a",
"endpoint_url": "https://webhook.site/9657addd-cab4-43a9-b2c4-383597d029c0",
"data": {
"saleInvoiceUpdated": {
"saleIdentifier": "197bda3f-5cae-f011-93e1-00155d96040a",
"success": true,
"changedFields": [
0: {
"fieldName": "SalutationLookup",
"oldValue": "",
"newValue": ""
},
1: {
"fieldName": "VatID",
"oldValue": "",
"newValue": "1234"
}
]
},
"sale": {
"id": "197bda3f-5cae-f011-93e1-00155d96040a",
"number": "6666-2050-6666016123",
"saleTimestamp": "2025-10-21T10:59:31.0128298+02:00",
"event": {
"id": "10b992c5-53e9-ef11-93da-00155d96040a",
"name": "Galaxio Expo",
"year": "2050",
"number": "6666",
"slug": "GalaxioExpo2050",
"dateTimeSpan": {
"start": "3750-01-01T04:20:00+01:00",
"end": "3750-12-31T04:20:00+01:00"
},
"externalId1": "test-id-1",
"externalId2": "GalaxioExpo2050",
"externalId3": "test-id-3"
},
"status": {
"rawValue": "Completed",
"tags": [
0: "PaymentNotPaid",
1: "ReceiptCreated"
],
"isBillingAddressChangeEnabled": true
},
"billing": {
"id": "267bda3f-5cae-f011-93e1-00155d96040a",
"salutationLookup": "",
"salutation": "",
"titleLookup": "Admiral",
"title": "Admiral",
"firstName": "Seren",
"lastName": "Taval",
"email": "d.patanin+125@aditus.de",
"company": "Lyrian Stellar Navy",
"spokenLanguage": "German",
"vatId": "1234",
"address": {
"state": {
},
"country": {
"key": "DE",
"value": "Germany"
},
"county": {
},
"street": "Deck 3, Admiral’s Wing, Star Dreadnought *Eclipse Crown*",
"houseNumber": "3",
"postalCode": "55698",
"city": "High Orbit Command, Lyra Prime"
}
},
"buyer": {
"id": "267bda3f-5cae-f011-93e1-00155d96040a",
"salutationLookup": "",
"salutation": "",
"titleLookup": "Admiral",
"title": "Admiral",
"firstName": "Seren",
"lastName": "Taval",
"email": "d.patanin+125@aditus.de",
"company": "Lyrian Stellar Navy",
"spokenLanguage": "German",
"vatId": "1234",
"address": {
"state": {
},
"country": {
"key": "DE",
"value": "Germany"
},
"county": {
},
"street": "Deck 3, Admiral’s Wing, Star Dreadnought *Eclipse Crown*",
"houseNumber": "3",
"postalCode": "55698",
"city": "High Orbit Command, Lyra Prime"
}
},
"invoice": {
"number": "6666-2050-6666013726",
"grossPrice": 4.2,
"grossPriceFormatted": "€4.20",
"currency": "EUR",
"status": "Created"
},
"payment": {
"providerName": "Invoice",
"status": "NotPaid"
},
"receipts": [
0: {
"number": "6666-2050-6666013726",
"type": "Bill",
"createdAt": "2026-06-03T13:30:29.0183074+02:00",
"url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/receipts/450f9c55-2bcf-48ea-958d-6c049d1c7298?s=iVi0zGRlzJ8J2Q"
},
1: {
"number": "6666-2050-6666001152",
"type": "BillCorrection",
"createdAt": "2026-06-03T13:30:28.0108038+02:00",
"url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/receipts/4f3e612b-eae6-48ea-bbc5-6e3af42d3577?s=UHptPqLuRhl0Q"
},
2: {
"number": "6666-2050-6666010105",
"type": "Bill",
"createdAt": "2025-10-21T10:59:38.9847994+02:00",
"url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/receipts/367cf02b-1200-406a-853e-f4d9dca8ec52?s=YmepJfT8goIKmg"
}
],
"hasTransactions": true,
"hasArticles": true,
"hasConfirmedReservationTransaction": true,
"hasCarts": true
}
}
}

Differences from sale.canceled

AspectDifference
data.saleInvoiceUpdatedNew object – contains details about the update, including a list of changed fields (see below). Only exists for this event.
data.sale.billing / data.sale.buyerMay contain additional fields such as salutationLookup, salutation, titleLookup, title, and vatId.
data.sale.receiptsTypically contains multiple receipts, including the original Bill, a BillCorrection (canceling the old invoice), and a new Bill with the corrected data.

New Object: saleInvoiceUpdated

FieldTypeDescriptionExample Value
saleIdentifierstring (UUID)UUID of the affected sale.197bda3f-5cae-f011-93e1-00155d96040a
successbooleanWhether the invoice update was successful.true
changedFieldsarrayList of fields that were changed (see below).(see below)

changedFields[] – Changed Fields

FieldTypeDescriptionExample Value
fieldNamestringName of the changed field.VatID
oldValuestringPrevious value of the field. May be empty.""
newValuestringNew value of the field.1234

Additional Fields in billing / buyer

FieldTypeDescriptionExample Value
salutationLookupstringSalutation key. May be empty.""
salutationstringSalutation display value. May be empty.""
titleLookupstringTitle key (e.g., Admiral, Dr, Prof).Admiral
titlestringTitle display value.Admiral
vatIdstringVAT identification number.1234

All other fields (sale, buyer, billing, invoice, payment, receipts) follow the same structure as sale.canceled.

sale.markedAsPaid - Sale Marked as Paid

The webhook event sale.markedAsPaid is triggered when a sale is marked as paid – e.g. manually by a back-office user. Connected systems can use this event to update payment statuses in ERP or accounting systems or trigger fulfillment workflows.

Trigger: The payment status of an existing sale changes to Paid. This typically occurs when an invoice-based payment is received and a manual payment confirmation is entered in the back office.

Webhook payload sample

{
"event": "sale.markedAsPaid",
"event_id": "74adee3f-5945-4dc0-baec-52c07e9b8c49",
"event_time": "2026-06-10T10:30:16.2283687+02:00",
"api_url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/terp/v1/clearing/sales/b71fa607-a664-f111-93e7-00155d96040a",
"endpoint_url": "https://webhook.site/92dbc43b-6a18-47a3-b38e-b9c9f96389f1",
"data": {
"saleMarkedAsPaid": {
"saleIdentifier": "b71fa607-a664-f111-93e7-00155d96040a",
"success": true
},
"sale": {
"id": "b71fa607-a664-f111-93e7-00155d96040a",
"number": "2906-2025-2906524311",
"saleTimestamp": "2026-06-10T10:26:10.2358149+02:00",
"event": {
"id": "c583f735-cbc9-ef11-93d9-00155d96040a",
"name": "Imagination Expo 2025-2026",
"year": "2025",
"number": "2906",
"slug": "im26",
"dateTimeSpan": {
"start": "2025-01-03T12:00:00+01:00",
"end": "2026-12-31T23:59:00+01:00"
},
"externalId2": "im26"
},
"status": {
"rawValue": "Completed",
"tags": [
0: "PaymentPaid",
1: "ReceiptCreated"
],
"isBillingAddressChangeEnabled": true
},
"billing": {
"id": "cb1fa607-a664-f111-93e7-00155d96040a",
"salutationLookup": "Herr",
"salutation": "Mr.",
"firstName": "Max",
"lastName": "Muster",
"email": "v.silakov+test_cancel_purchase_invoice_paid@aditus.de",
"company": "Muster GmbH",
"spokenLanguage": "English",
"address": {
"state": {
},
"country": {
"key": "DE",
"value": "Germany"
},
"county": {
"key": "012",
"value": "Brandenburg"
},
"street": "Rheinstraße",
"houseNumber": "8",
"postalCode": "14513",
"city": "Teltow"
}
},
"buyer": {
"id": "cb1fa607-a664-f111-93e7-00155d96040a",
"salutationLookup": "Herr",
"salutation": "Mr.",
"firstName": "Max",
"lastName": "Muster",
"email": "v.silakov+test_cancel_purchase_invoice_paid@aditus.de",
"company": "Muster GmbH",
"spokenLanguage": "English",
"address": {
"state": {
},
"country": {
"key": "DE",
"value": "Germany"
},
"county": {
"key": "012",
"value": "Brandenburg"
},
"street": "Rheinstraße",
"houseNumber": "8",
"postalCode": "14513",
"city": "Teltow"
}
},
"invoice": {
"number": "2906-2025-2906513863",
"grossPrice": 29.75,
"grossPriceFormatted": "€29.75",
"currency": "EUR",
"status": "Created"
},
"payment": {
"providerName": "Invoice",
"status": "Paid"
},
"receipts": [
0: {
"number": "2906-2025-2906513863",
"type": "Bill",
"createdAt": "2026-06-10T10:26:30.7991338+02:00",
"url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/receipts/9a8e7c7c-4e29-464c-95fd-8e8ea176e13f?s=ybd7sDIGzdZYwQ"
},
1: {
"number": "2906-2025-2906513863",
"type": "PaymentConfirmation",
"createdAt": "2026-06-10T10:30:15.5650549+02:00",
"url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/receipts/1e2e0420-d9c7-4ccd-8620-4af96969c6dc?s=ybd7sDIGzdZYwQ"
}
],
"hasTransactions": true,
"hasArticles": true,
"hasConfirmedReservationTransaction": false,
"hasCarts": true
}
}
}

Differences from sale.canceled

AspectDifference
data.saleMarkedAsPaidNew object – confirms the successful payment marking (see below). Only exists for this event.
data.sale.payment.statusValue is Paid.
data.sale.status.tagsContains the tag PaymentPaid.
data.sale.receiptsMay contain a receipt of type PaymentConfirmation in addition to the original Bill.

New Object: saleMarkedAsPaid

FieldTypeDescriptionExample Value
saleIdentifierstring (UUID)UUID of the affected sale.b71fa607-a664-f111-93e7-00155d96040a
successbooleanWhether the payment marking was successful.true

sale.legitimationStatusChanged– Legitimation Status Changed

The webhook event sale.legitimationStatusChanged is triggered when the legitimation status of a sale changes – for example, when a buyer's identity verification transitions from New to Accepted or Rejected. Connected systems can use this event to gate ticket fulfillment until legitimation is confirmed, update compliance records, or trigger manual review workflows.

Trigger: The legitimation status of an existing sale changes (e.g., from New to Accepted, Rejected, or another status). This typically occurs when an automated or manual identity verification process completes.

Webhook payload sample

{
"event": "sale.legitimationStatusChanged",
"event_id": "86c1cdd5-1dab-467d-86a0-bb00bec08b6e",
"event_time": "2026-06-04T13:42:48.7247624+02:00",
"endpoint_url": "https://webhook.site/92dbc43b-6a18-47a3-b38e-b9c9f96389f1",
"data": {
"saleLegitimationStatusChanged": {
"saleIdentifier": "a7e1d74e-0a60-f111-93e7-00155d96040a",
"newStatus": "Accepted",
"oldStatus": "New",
"vettingLevel": 1
},
"sale": {
"id": "a7e1d74e-0a60-f111-93e7-00155d96040a",
"number": "0815-2025-815524067",
"saleTimestamp": "2026-06-04T13:41:27.300632+02:00",
"event": {
"id": "f32adbb6-3c9c-ef11-93d8-00155d96040a",
"name": "Futurama",
"year": "2025",
"number": "0815",
"slug": "fr25",
"dateTimeSpan": {
"start": "2025-04-01T08:00:00+02:00",
"end": "2026-12-31T09:00:00+01:00"
},
"externalId1": "test-id-1",
"externalId2": "fr25",
"externalId3": "test-id-3"
},
"status": {
"rawValue": "Pending",
"tags": [
0: "PaymentPaid",
1: "ReceiptCreated",
2: "LegitimationNew"
],
"isBillingAddressChangeEnabled": true
},
"billing": {
"id": "b1e1d74e-0a60-f111-93e7-00155d96040a",
"firstName": "Thea",
"lastName": "Testerin",
"email": "u.janssen+2606041340@aditus.de",
"company": "ADITUS GmbH",
"spokenLanguage": "Deutsch",
"address": {
"state": {
},
"country": {
"key": "AF",
"value": "Afghanistan"
},
"county": {
},
"street": "Straße der Nationen",
"houseNumber": "5",
"postalCode": "30539",
"city": "Hannover"
}
},
"buyer": {
"id": "b1e1d74e-0a60-f111-93e7-00155d96040a",
"firstName": "Thea",
"lastName": "Testerin",
"email": "u.janssen+2606041340@aditus.de",
"company": "ADITUS GmbH",
"spokenLanguage": "Deutsch",
"address": {
"state": {
},
"country": {
"key": "AF",
"value": "Afghanistan"
},
"county": {
},
"street": "Straße der Nationen",
"houseNumber": "5",
"postalCode": "30539",
"city": "Hannover"
}
},
"invoice": {
"number": "0815-2025-815513750",
"grossPrice": 15,
"grossPriceFormatted": "15,00 €",
"currency": "EUR",
"status": "Created"
},
"payment": {
"providerName": "MasterCard",
"status": "Paid"
},
"legitimation": {
"uniqueId": "b7e1d74e-0a60-f111-93e7-00155d96040a",
"status": "New"
},
"receipts": [
0: {
"number": "0815-2025-815513750",
"type": "Bill",
"createdAt": "2026-06-04T13:41:31.6002585+02:00",
"url": "https://dev.aditus.de/ADITUS-DEV-0_API/api/assets/v1/receipts/0fd3d819-db3f-4d88-b271-6bebd9db85ab?s=5WLvbY5azK8HKA"
}
],
"hasTransactions": true,
"hasArticles": true,
"hasConfirmedReservationTransaction": false,
"hasCarts": true
}
}
}

Differences from sale.canceled

AspectDifference
data.saleLegitimationStatusChangedNew object – contains the old and new legitimation status as well as the vetting level (see below). Only exists for this event.
data.sale.legitimationNew object – contains the legitimation record linked to the sale (see below). Not present in sale.completed.
data.sale.status.rawValueMay be Pending while legitimation is in progress.
data.sale.status.tagsContains legitimation-specific tags such as LegitimationNew, LegitimationAccepted, or LegitimationRejected.
No api_url fieldThe top-level api_url field may be absent for this event.

New Object: saleLegitimationStatusChanged

FieldTypeDescriptionExample Value
saleIdentifierstring (UUID)UUID of the affected sale.a7e1d74e-0a60-f111-93e7-00155d96040a
newStatusstringThe new legitimation status. Possible values: New, Accepted, Rejected, InReview.Accepted
oldStatusstringThe previous legitimation status.New
vettingLevelintegerThe vetting level that was evaluated. Higher levels indicate stricter verification.1

New Object: legitimation (within sale)

FieldTypeDescriptionExample Value
uniqueIdstring (UUID)UUID of the legitimation record.b7e1d74e-0a60-f111-93e7-00155d96040a
statusstringCurrent legitimation status at the time of the event.New

All other fields (sale, buyer, billing, invoice, payment, receipts) follow the same structure as sale.canceled.