--- title: "Payloads - Beispiele" slug: "payloads-examples" description: "Frisbii Media Callbacks: Beispiele für Kunden, Rechnungen und Abonnements sowie Signale für Kündigung, Cross-Selling und fehlgeschlagene Zahlungen." updated: 2026-11-06T12:08:45Z published: 2026-11-06T14:30:00Z canonical: "help.frisbii.com/payloads-examples" --- > ## Documentation Index > Fetch the complete documentation index at: https://help.frisbii.com/llms.txt > Use this file to discover all available pages before exploring further. # Payloads - Beispiele Die folgenden Callbacks werden von Frisbii Media ausgelöst: | Callback Typ | Entity Typ | Entity | Beschreibung | | --- | --- | --- | --- | | CREATION | APP_STORE_ORDER | AppStoreOrder | Erstellen oder Aktualisieren einer bestehenden Bestellung über einen App-Store (Apple oder Google) | | CHANGE | APP_STORE_SUBSCRIPTION | AppStoreSubscription | Gesendet beim Aktivieren oder Deaktivieren des App-Store-Abonnements | | CREATION | APP_STORE_SUBSCRIPTION | AppStoreSubscription | Gesendet bei der Erstellung eines App-Store-Abonnements | | CHANGE | CUSTOMER | Customer | Gesendet bei der Änderung von kundenbezogenen Daten - zum Beispiel Benutzername, Passwort, E-Mail, Name, Anrede, Status oder andere Daten oder Token-Verifizierung | | CREATION | CUSTOMER | Customer | Gesendet bei der Kundenerstellung oder Registrierung | | DELETION | CUSTOMER | - | Benachrichtigt über Kundenlöschung | | CHANGE | CUSTOMER_OPT_IN | OptIns | Gesendet bei der Erstellung oder Aktualisierung des Kundenoptins | | PAYMENT_FAILED | FAILED_PAYMENT | FailedPaymentNotification | Gesendet im Falle einer fehlgeschlagenen Zahlung | | CHANGE | INVOICE | Invoice | Gesendet im Falle einer Rechnungsänderung - Stornierung, Korrektur, Statusänderung | | CREATION | INVOICE | Invoice | Gesendet bei der Rechnungserstellung | | CREATION | INVOICE_CANCELLATION | Invoice | Gesendet bei Rechnungsstornierung | | CREATION | INVOICE_CORRECTION | Invoice | Gesendet bei Rechnungskorrektur | | CANCELLATION | MULTIUSER_SUBSCRIPTION | MultiuserSubscription | Gesendet bei Kündigung eines Multi-User-Abonnements | | CREATION | MULTIUSER_SUBSCRIPTION | MultiuserSubscription | Gesendet bei Erstellung eines Multi-User-Abonnements | | UNDO_CANCELLATION | MULTIUSER_SUBSCRIPTION | MultiuserSubscription | Gesendet bei Kündigungsrücknahme eines Multi-User-Abonnements | | CREATION | ORDER | Order | Gesendet bei Bestellung | | CONDITIONS_FULFILLED | PURCHASED_ADDON | PurchasedAddon | Gesendet bei der Bestellung, wenn es gekaufte Add-ons gibt | | CANCELLATION | SUBSCRIPTION | Subscription | Gesendet, wenn das Abonnement gekündigt wird | | CHANGE | SUBSCRIPTION | Subscription | Gesendet, wenn das Abonnement geändert wird | | CREATION | SUBSCRIPTION | Subscription | Gesendet bei der Erstellung des Abonnements | | ENDED | SUBSCRIPTION | Subscription | Gesendet, wenn das Abonnement endet | | UNDO_CANCELLATION | SUBSCRIPTION | Subscription | Gesendet bei Kündigungsrücknahme | | CREATION | CALLBACK_RENEWAL | ApiAccessTokenCallback | Gesendet, wenn das API-Zugangstoken erneuert wurde | 💡 Alle Schemas befinden sich im angehängten Dokument. > [!TIP] > **Hinweis:** Die folgenden Beispiele sollen einen exemplarischen Eindruck von den zu erwartenden Daten liefern. Der Umfang der Daten kann allerdings variieren. Vor der produktiven Inbetriebnahme sollten die Callbacks auf dem Stage-System geprüft werden. ### Allgemeiner Aufbau eines Callbacks: ```json {  „entityType“: „CUSTOMER“, -> die Entität, für die der Callback erstellt wurde (Kunde/Rechnung/Abonnement/etc.)  „callbackType“: „CREATION“, -> der entsprechende Callback-Typ (erstellen/ändern/löschen/etc.) „entityId“: „29", - entityID entspricht der Kundennummer/Rechnungsnummer/Abonummer/etc., abhängig vom EntityType.)  „entityId“: „29", -> entityID entspricht der Kundennummer/Rechnungsnummer/Abonummer/etc., abhängig vom EntityType  „entity“: {-> die Daten der Entität gemäß der API-Dokumentation     xxxx } } ``` ### Kunde erstellen ```json {  "entityType": "CUSTOMER",  "callbackType": "CREATION",  "entityId": "29",  "entity": {    "ageVerificationPinEnabled": false,    "birthday": null,    "changedBy": "10001",    "changedByType": "MERCHANT",    "changedDate": "2024-08-27T11:49:41.389622Z",    "createdBy": "10001",    "createdByType": "MERCHANT",    "createdDate": "2024-08-27T11:49:41.389622Z",    "customerId": "29",    "email": "plenigo+callback@plenigo.com",    "externalSystemId": "",    "firstName": "Test",    "invoiceEmail": "",    "language": "de",    "lastName": "",    "miscellaneousData": {},    "mobileNumber": "",    "registrationDate": "2024-08-27T11:49:41.389622Z",    "registrationSource": "Supporter",    "salutation": "",    "ssoLoginProviders": null,    "status": "ACTIVATED",    "twoFactorEnabled": false,    "username": "Test"  } } ``` ### Rechnung erstellen ```json {  "entityType": "INVOICE",  "callbackType": "CREATION",  "entityId": "223",  "entity": {    "accumulatedPrice": 0.5,    "analogInvoice": false,    "cancellationInvoiceId": 0,    "changedDate": "2024-08-28T00:08:51.914437Z",    "currency": "EUR",    "customerEmail": "plenigo@plenigo.com",    "invoiceAddress": {      "businessAddress": false,      "city": "Kempten",      "country": "DE",      "firstName": "Test",      "lastName": "User",      "postbox": "48576525",      "postcode": "87435",      "salutation": "NONE",      "type": "INVOICE"    },    "invoiceCustomerId": "23",    "invoiceDate": "2024-08-28T00:08:51.868510Z",    "invoiceId": 223,    "items": [      {        "changedDate": "2024-08-28T00:08:51.916800Z",        "createdDate": "2024-08-28T00:08:51.916800Z",        "deliveryAddress": {          "businessAddress": false,          "country": "DE",          "salutation": "NONE",          "type": "DELIVERY"        },        "deliveryCustomerId": "23",        "discountPercentage": 0,        "periodEndDate": "2024-08-29T23:59:59.000000Z",        "periodStartDate": "2024-08-28T00:00:00.000000Z",        "plenigoOfferId": "O_D0SO735QL1AXZH7FTG",        "plenigoProductId": "P_DSQ20PV66PNWGK0LPV",        "plenigoStepId": "S_O38DOOQI9ZE6DESDWC",        "position": 1,        "price": 0.5,        "productId": "P_DSQ20PV66PNWGK0LPV",        "purchasedAddonId": 0,        "quantity": 1,        "subscriptionItemId": 1230101,        "tax": 7,        "taxCountry": "DE",        "taxType": "DIGITALNEWSPAPER",        "title": "Angebot A kurzes Abo-Intervall Leistungszeitraum 28.08.2024 - 29.08.2024"      }    ],    "orderId": 0,    "paymentChangedToBilling": false,    "paymentMethod": "BILLING",    "paymentMethodId": 0,    "precursorId": 0,    "status": "NOT_PAID",    "successorId": 0,    "type": "INVOICE"  } } ``` ### Abonnement ändern ```json {  "entityType": "SUBSCRIPTION",  "callbackType": "CHANGE",  "entityId": "1230116",  "entity": {    "accessBlocked": false,    "accountingPeriod": 0,    "accountingPeriodTimeSpan": "NONE",    "activePartners": null,    "analogInvoice": false,    "cancellationDate": null,    "cancellationPeriod": 5,    "cancellationPeriodTimeSpan": "DAY",    "cancellationReasonUniqueId": "",    "cancellationType": "ISSUE_BASED_REGULAR",    "chainId": 1230116,    "changedBy": "PLENIGO",    "changedByType": "SYSTEM",    "changedDate": "2024-08-28T00:00:07.717485Z",    "chargeableDeliveries": 8,    "connectedOffer": false,    "connectedOfferInfo": null,    "createdBy": "8",    "createdByType": "CUSTOMER",    "createdDate": "2024-08-02T09:43:13.41412Z",    "currency": "EUR",    "customerCancellationBlocked": false,    "customerCancellationReasonId": 0,    "deliveries": 8,    "deliveryAddressId": 1230037,    "deliveryCustomerId": "8",    "deliveryPaused": null,    "durationPeriod": 0,    "durationPeriodTimeSpan": "NONE",    "endDate": null,    "externalBilling": false,    "externalSystemId": "",    "finishedDeliveries": 4,    "firstBookingDate": "2024-08-02T09:43:13.348227Z",    "invoiceAddressId": 1230038,    "invoiceCustomerId": "8",    "items": null,    "lastBookingDate": "2024-08-02T09:43:13.348227Z",    "managedBy": "PLENIGO",    "managedExternal": false,    "nextBookingDate": null,    "openDeliveries": 4,    "paused": null,    "paymentMethod": "CREDIT_CARD",    "paymentMethodDetails": {      "brand": "AMERICAN_EXPRESS"    },    "paymentMethodId": 1230005,    "paymentPaused": null,    "paymentTriesDone": 0,    "plenigoOfferId": "O_628IU8F9CB7I6EH5ZG",    "precursorId": 0,    "precursorReason": "",    "precursorReasonDetail": "",    "purchaseOrderIndicator": "",    "recurringDeliveries": false,    "referenceStartDate": "2024-08-02T00:00:00Z",    "startDate": "2024-08-02T09:43:13.348191Z",    "status": "ACTIVE",    "subscriptionId": 1230116,    "subscriptionType": "ISSUE_BASED",    "successorId": 0,    "successorReason": "",    "successorReasonDetail": "",    "suppressInvoiceSending": false,    "term": 0,    "termTimeSpan": "NONE"  } } ``` ### Kunde löschen ```json {  "entityType": "CUSTOMER",  "callbackType": "DELETION",  "entityId": "33",  "entity": null } ``` > [!CAUTION] > *entityId* ist die Kundennummer. *Entity* = bearbeitete Daten, hier null, da die betroffenen Daten gelöscht wurden. ### In-App Abonnement erstellen ```json {  "entityType": "APP_STORE_SUBSCRIPTION",  "callbackType": "CREATION",  "version": "3.0",  "entityId": "1230306",  "entity": {    "accessRightUniqueId": "inappsub",    "appStoreSubscriptionId": 1230206,    "cancellationDate": "null",    "chainId": 1230206,    "changedBy": "2VYpOnyFbem8IWY9DyoVaLgOAuG",    "changedByType": "API",    "changedDate": 2023-12-29T15:02:05.353082Z",    "customerId": "29",    "endDate": "2023-12-29T15:06:32.364Z",    "externalSystemId: "subscription_1_app_2",    "startDate": "2023-12-29T15:01:34.393Z",    "status": "ACTIVE"   } } ``` --- ## Callback-Beispiele Vertriebsregeln Die folgenden Beispiele zeigen die Felder, anhand derer sich regelbasierte Abonnement-Callbacks von regulären Nutzerkündigungen unterscheiden lassen. ### Altersbedingte Regel: ENDED-Callback (Vorgängerabonnement zum Wechseldatum) ```json {  "entityType": "SUBSCRIPTION",  "callbackType": "ENDED",  "entityId": "1230200",  "entity": {    "subscriptionId": 1230200,    "status": "INACTIVE",    "cancellationDate": null,    "endDate": "2025-03-15T00:00:00Z",    "successorReason": "AGE",    "successorReasonDetail": "",    "successorId": 1230201,    "precursorReason": "",    "precursorId": 0,    "plenigoOfferId": "O_UNDER25_OFFER",    "startDate": "2022-03-15T00:00:00Z",    "changedBy": "PLENIGO",    "changedByType": "SYSTEM",    "changedDate": "2025-03-15T00:00:01Z"  } } ``` > `successorReason: "AGE"` und die befüllte `successorId`, die auf das Folgeabonnement verweist, sind die entscheidenden Signale. Es ist kein `cancellationDate` gesetzt. ### Cross-Selling-Regel: CANCELLATION-Callback beim automatisch gekündigten Abhängigkeitsabonnement ```json {  "entityType": "SUBSCRIPTION",  "callbackType": "CANCELLATION",  "entityId": "1230310",  "entity": {    "subscriptionId": 1230310,    "status": "ACTIVE",    "cancellationDate": "2025-06-01T10:00:00Z",    "endDate": "2025-07-01T00:00:00Z",    "successorReason": "",    "successorReasonDetail": "",    "successorId": 0,    "precursorReason": "",    "precursorId": 0,    "plenigoOfferId": "O_DISCOUNTED_OFFER",    "startDate": "2024-06-01T00:00:00Z",    "changedBy": "PLENIGO",    "changedByType": "SYSTEM",    "changedDate": "2025-06-01T10:00:01Z"  } } ``` > Dieser Payload ist **strukturell identisch mit einer Nutzerkündigung** — `cancellationDate` ist gesetzt, `successorReason` ist leer. Eine durch eine Cross-Selling-Regel ausgelöste automatische Kündigung lässt sich anhand des Payloads allein nicht zuverlässig von einer manuellen Kündigung unterscheiden. ### Up-/Down-Selling: CHANGE-Callback beim alten Abonnement (Übergang: NOW / END_OF_TERM / NEXT_BOOKING) ```json {  "entityType": "SUBSCRIPTION",  "callbackType": "CHANGE",  "entityId": "1231822",  "entity": {    "accessBlocked": false,    "accountingPeriod": 1,    "accountingPeriodTimeSpan": "DAY",    "activePartners": null,    "analogInvoice": false,    "cancellationDate": null,    "cancellationPeriod": 1,    "cancellationPeriodTimeSpan": "DAY",    "cancellationReasonUniqueId": "",    "cancellationType": "TIME_BASED",    "chainId": 1231822,    "changedBy": "66666668260",    "changedByType": "CUSTOMER",    "changedDate": "2026-06-03T07:41:50.242229Z",    "chargeableDeliveries": 0,    "connectedOffer": false,    "connectedOfferInfo": null,    "createdBy": "66666668260",    "createdByType": "CUSTOMER",    "createdDate": "2026-06-03T07:41:15.892031Z",    "currency": "EUR",    "customerCancellationBlocked": false,    "customerCancellationReasonId": 0,    "deliveries": 0,    "deliveryAddressId": 1230755,    "deliveryCustomerId": "66666668260",    "deliveryPaused": null,    "durationPeriod": 0,    "durationPeriodTimeSpan": "MONTH",    "endDate": "2026-06-05T00:00:00Z",    "externalBilling": false,    "externalSystemId": "",    "finishedDeliveries": 0,    "firstBookingDate": "2026-06-03T07:41:15.815532Z",    "invoiceAddressId": 0,    "invoiceCustomerId": "66666668260",    "items": [      {        "accessRightUniqueId": "time-misc",        "chainItemId": 1232077,        "changedBy": "66666668260",        "changedByType": "CUSTOMER",        "changedDate": "2026-06-03T07:41:50.247454Z",        "connectedOfferInfo": null,        "corporateAccountId": 0,        "costCenter": "",        "createdBy": "66666668260",        "createdByType": "CUSTOMER",        "createdDate": "2026-06-03T07:41:15.892031Z",        "creditCount": 0,        "creditWalletUniqueId": "",        "discountPercentage": 0,        "discountSettings": null,        "internalTitle": "Test",        "multiuserSettings": null,        "packageCancellationLocked": false,        "packageId": "",        "packageTitle": "",        "plenigoProductId": "P_NWM7KKEIW1970TR1NS",        "plenigoStepId": "S_O0AHMK0A2862NKMSB0",        "price": 1,        "priceIssueId": 100041,        "productContractId": 100080,        "productId": "P_NWM7KKEIW1970TR1NS",        "purchaseNumber": "",        "quantity": 1,        "status": "ACTIVE",        "subscriptionItemId": 1232077,        "taxType": "DIGITALPRODUCT",        "title": "Test"      }    ],    "lastBookingDate": "2026-06-03T07:41:15.815532Z",    "managedBy": "PLENIGO",    "managedExternal": false,    "multiuserSettings": null,    "nextBookingDate": "2026-06-04T00:00:00Z",    "openDeliveries": 0,    "paused": null,    "paymentMethod": "CREDIT_CARD",    "paymentMethodDetails": {      "brand": "VISA"    },    "paymentMethodId": 1230295,    "paymentPaused": null,    "paymentTriesDone": 0,    "plenigoOfferId": "O_MSNCU5I4FL4K08QXKJ",    "precursorId": 0,    "precursorReason": "",    "precursorReasonDetail": "",    "purchaseOrderIndicator": "",    "recurringDeliveries": false,    "referenceStartDate": "2026-06-03T00:00:00Z",    "startDate": "2026-06-03T07:41:15.815512Z",    "status": "ACTIVE",    "subscriptionId": 1231822,    "subscriptionType": "TIME_BASED",    "successorId": 1231823,    "successorReason": "CROSS_SELLING",    "successorReasonDetail": "END_OF_TERM",    "successorReasonMerchant": "",    "suppressInvoiceSending": false,    "term": 2,    "termTimeSpan": "DAY"  } } ``` > `successorReason: "CROSS_SELLING"` und die befüllte `successorId` kennzeichnen dies als regelbasierten Angebotsübergang. `successorReasonDetail` gibt die konfigurierte Übergangsoption wieder (`NOW`, `END_OF_TERM` oder `NEXT_BOOKING`). ### Up-/Down-Selling: CANCELLATION-Callback beim alten Abonnement (Übergang: LAST_BOOKING / NOW_WITH_INVOICING) ```json {  "entityType": "SUBSCRIPTION",  "callbackType": "CANCELLATION",  "entityId": "1231820",  "entity": {    "accessBlocked": false,    "accountingPeriod": 1,    "accountingPeriodTimeSpan": "DAY",    "activePartners": null,    "analogInvoice": false,    "cancellationDate": null,    "cancellationPeriod": 1,    "cancellationPeriodTimeSpan": "DAY",    "cancellationReasonUniqueId": "",    "cancellationType": "TIME_BASED",    "chainId": 1231820,    "changedBy": "PLENIGO",    "changedByType": "SYSTEM",    "changedDate": "2026-06-03T07:36:28.184834Z",    "chargeableDeliveries": 0,    "connectedOffer": false,    "connectedOfferInfo": null,    "createdBy": "66666668260",    "createdByType": "CUSTOMER",    "createdDate": "2026-06-03T07:35:53.851576Z",    "currency": "EUR",    "customerCancellationBlocked": false,    "customerCancellationReasonId": 0,    "deliveries": 0,    "deliveryAddressId": 1230755,    "deliveryCustomerId": "66666668260",    "deliveryPaused": null,    "durationPeriod": 0,    "durationPeriodTimeSpan": "MONTH",    "endDate": "2026-06-03T07:35:53.778014Z",    "externalBilling": false,    "externalSystemId": "",    "finishedDeliveries": 0,    "firstBookingDate": "2026-06-03T07:35:53.778031Z",    "invoiceAddressId": 0,    "invoiceCustomerId": "66666668260",    "items": [      {        "accessRightUniqueId": "time-misc",        "chainItemId": 1232074,        "changedBy": "66666668260",        "changedByType": "CUSTOMER",        "changedDate": "2026-06-03T07:36:28.192109Z",        "connectedOfferInfo": null,        "corporateAccountId": 0,        "costCenter": "",        "createdBy": "66666668260",        "createdByType": "CUSTOMER",        "createdDate": "2026-06-03T07:35:53.851576Z",        "creditCount": 0,        "creditWalletUniqueId": "",        "discountPercentage": 0,        "discountSettings": null,        "internalTitle": "Test",        "multiuserSettings": null,        "packageCancellationLocked": false,        "packageId": "",        "packageTitle": "",        "plenigoProductId": "P_VFQFK5I7XLL2OW03BA",        "plenigoStepId": "S_XP3FJQH32LX3WVWRHC",        "price": 1,        "priceIssueId": 100041,        "productContractId": 100080,        "productId": "P_VFQFK5I7XLL2OW03BA",        "purchaseNumber": "",        "quantity": 1,        "status": "ACTIVE",        "subscriptionItemId": 1232074,        "taxType": "DIGITALPRODUCT",        "title": "Test"      }    ],    "lastBookingDate": "2026-06-03T07:35:53.778031Z",    "managedBy": "PLENIGO",    "managedExternal": false,    "multiuserSettings": null,    "nextBookingDate": null,    "openDeliveries": 0,    "paused": null,    "paymentMethod": "CREDIT_CARD",    "paymentMethodDetails": {      "brand": "VISA"    },    "paymentMethodId": 1230295,    "paymentPaused": null,    "paymentTriesDone": 0,    "plenigoOfferId": "O_9MDKAABUM8FG7TT5KB",    "precursorId": 0,    "precursorReason": "",    "precursorReasonDetail": "",    "purchaseOrderIndicator": "",    "recurringDeliveries": false,    "referenceStartDate": "2026-06-03T00:00:00Z",    "startDate": "2026-06-03T07:35:53.778014Z",    "status": "ACTIVE",    "subscriptionId": 1231820,    "subscriptionType": "TIME_BASED",    "successorId": 1231821,    "successorReason": "CROSS_SELLING",    "successorReasonDetail": "LAST_BOOKING",    "successorReasonMerchant": "",    "suppressInvoiceSending": false,    "term": 2,    "termTimeSpan": "DAY"  } } ``` > Bei `LAST_BOOKING` und `NOW_WITH_INVOICING` lautet der Callback-Typ `CANCELLATION` statt `CHANGE`. Die entscheidenden Unterscheidungsmerkmale sind `successorReason: "CROSS_SELLING"` und die befüllte `successorId` — diese Felder sind bei einer reinen Nutzerkündigung nie vorhanden. --- ### Fehlgeschlagene Zahlung Dieser Callback (`entityType: FAILED_PAYMENT`, `callbackType: PAYMENT_FAILED`) wird bei jedem einzelnen fehlgeschlagenen Zahlungsversuch eines Abonnements gesendet — also auch bei jedem automatischen Wiederholungsversuch der Prozesssteuerung, nicht nur beim letzten. ```json {  "entityType": "FAILED_PAYMENT",  "callbackType": "PAYMENT_FAILED",  "entityId": "0",  "entity": {    "paymentRetry": 3,    "subscription": {      "accessBlocked": false,      "accountingPeriod": 1,      "accountingPeriodTimeSpan": "MONTH",      "activePartners": null,      "analogInvoice": false,      "cancellationDate": null,      "cancellationPeriod": 7,      "cancellationPeriodTimeSpan": "DAY",      "cancellationReasonUniqueId": "",      "cancellationType": "TIME_BASED",      "chainId": 1230391,      "changedBy": "10013",      "changedByType": "MERCHANT",      "changedDate": "2026-05-30T00:01:13.240032Z",      "chargeableDeliveries": 0,      "connectedOffer": false,      "connectedOfferInfo": null,      "createdBy": "10013",      "createdByType": "MERCHANT",      "createdDate": "2026-05-21T09:20:02.599792Z",      "currency": "EUR",      "customerCancellationBlocked": false,      "customerCancellationReasonId": 0,      "deliveries": 0,      "deliveryAddressId": 1230174,      "deliveryCustomerId": "97",      "deliveryPaused": null,      "durationPeriod": 0,      "durationPeriodTimeSpan": "MONTH",      "endDate": null,      "externalBilling": false,      "externalSystemId": "",      "finishedDeliveries": 0,      "firstBookingDate": "2026-05-21T09:20:02.395838Z",      "invoiceAddressId": 1230175,      "invoiceCustomerId": "97",      "items": [        {          "accessRightUniqueId": "Digi",          "chainItemId": 1230477,          "changedBy": "10013",          "changedByType": "MERCHANT",          "changedDate": "2026-05-21T09:20:02.599792Z",          "connectedOfferInfo": null,          "corporateAccountId": 0,          "costCenter": "",          "createdBy": "10013",          "createdByType": "MERCHANT",          "createdDate": "2026-05-21T09:20:02.599792Z",          "creditCount": 0,          "creditWalletUniqueId": "",          "discountPercentage": 0,          "discountSettings": null,          "internalTitle": "Monthly Subscription",          "multiuserSettings": null,          "packageCancellationLocked": false,          "packageId": "",          "packageTitle": "",          "plenigoProductId": "P_A81TR7E86V3QTZ88NT",          "plenigoStepId": "S_P3PBYAXRG2ZKCIS02N",          "price": 17.99,          "priceIssueId": 100001,          "productContractId": 100001,          "productId": "P_A81TR7E86V3QTZ88NT",          "purchaseNumber": "",          "quantity": 1,          "status": "ACTIVE",          "subscriptionItemId": 1230477,          "taxType": "DIGITALNEWSPAPER",          "title": "Monthly Subscription"        }      ],      "lastBookingDate": "2026-05-21T09:20:02.395838Z",      "managedBy": "PLENIGO",      "managedExternal": false,      "multiuserSettings": null,      "nextBookingDate": "2026-06-01T00:00:00Z",      "openDeliveries": 0,      "paused": null,      "paymentMethod": "CREDIT_CARD",      "paymentMethodId": 1230037,      "paymentPaused": null,      "paymentTriesDone": 3,      "plenigoOfferId": "O_B6AN8XIDB96XXQDT7Y",      "precursorId": 0,      "precursorReason": "",      "precursorReasonDetail": "",      "purchaseOrderIndicator": "",      "recurringDeliveries": false,      "referenceStartDate": "2026-05-26T00:00:00Z",      "startDate": "2026-05-26T00:00:00Z",      "status": "ACTIVE",      "subscriptionId": 1230391,      "subscriptionType": "TIME_BASED",      "successorId": 0,      "successorReason": "",      "successorReasonDetail": "",      "successorReasonMerchant": "",      "suppressInvoiceSending": false,      "term": 1,      "termTimeSpan": "MONTH"    }  } } ``` #### Die wichtigsten Felder | Feld | Bedeutung | | --- | --- | | `entityId` | Bei diesem Callback-Typ immer `0`. Die betroffene Abonnementnummer steht in `entity.subscription.subscriptionId`. | | `entity.paymentRetry` | Der wievielte Wiederholungsversuch als nächstes **eingeplant** wurde — keine Zählung der bereits unternommenen Versuche. Beim finalen Versuch wird kein weiterer eingeplant, der Wert wiederholt daher die vorherige Zahl. | | `entity.subscription.paymentTriesDone` | Anzahl der für die aktuelle Abrechnungsperiode bereits unternommenen Zahlungsversuche. | | `entity.subscription.accessBlocked` | Ob der Produktzugriff zum Zeitpunkt des Callbacks gesperrt ist. | | `entity.subscription.status` | Status des Abonnements. Bleibt während der Wiederholungsversuche `ACTIVE` — ein fehlgeschlagener Zahlungsversuch ändert den Status für sich genommen nicht. | | `entity.subscription.changedBy` / `changedByType` | Beziehen sich auf die letzte Änderung am **Abonnement**, nicht auf den Auslöser des Zahlungsversuchs. Im Beispiel oben steht hier `MERCHANT`, obwohl der Zahlungsversuch systemseitig durch die Prozesssteuerung ausgelöst wurde. | #### Was Du mit diesem Callback bauen kannst Typischer Anwendungsfall ist eine eigene Erinnerungs- oder Warn-Mail an Deine Kunden, zusätzlich zu den Systemmails von Frisbii Media. Dafür musst Du wissen, welcher Callback der letzte in einer Wiederholungsserie ist — und das ist anhand von `paymentRetry` allein nicht erkennbar, weil sich der höchste Wert wiederholt. Im obigen Beispiel steht `paymentRetry: 3`; bei vier konfigurierten Zahlungsversuchen tritt dieser Wert sowohl beim vorletzten als auch beim finalen Callback auf. Zwei zuverlässige Wege: 1. **Trigger trennen (empfohlen)** — Nutze `FAILED_PAYMENT` ausschließlich für Warn-Mails und steuere die "Abonnement gekündigt"-Mail über den Kündigungs-Callback `SUBSCRIPTION / CANCELLATION`. 2. **Callbacks pro Abrechnungsperiode zählen** — Du erhältst pro Abrechnungsperiode genau einen `FAILED_PAYMENT`-Callback je konfiguriertem Zahlungsversuch. Der zweite Callback mit der höchsten `paymentRetry`-Zahl ist der finale. > [!TIP] > **Hinweis:** Nach dem letzten fehlgeschlagenen Versuch wird der Wiederholungszähler zurückgesetzt. Eine neue Abrechnungsperiode beginnt daher wieder bei `1`. Eine erneute „1" bedeutet also nicht, dass der vorherige Mahnzyklus noch läuft. > [!CAUTION] > In drei Fällen bricht die Prozesssteuerung sofort ab und der `FAILED_PAYMENT`-Callback wird **nicht** ausgelöst: gesperrte Zahlungsart, nicht implementierte Zahlungsart und nicht verfügbarer PSP. Verlasse Dich in diesen Fällen nicht auf den Callback, sondern auf das Transaktionslog. → [Fehlgeschlagene Zahlungen](/frisbii-media/docs/de/failed-payment) --- ### Kündigung durch die Prozesssteuerung erkennen Kündigt die Prozesssteuerung ein Abonnement nach ausgeschöpften Zahlungsversuchen, sendet Frisbii Media `SUBSCRIPTION / CANCELLATION` und zusätzlich `SUBSCRIPTION / ENDED`, sobald das Abonnement inaktiv wird. Es gibt **kein dediziertes Feld**, das einen Zahlungsausfall als Kündigungsgrund ausweist. Im ersten Schritt unterscheidest Du anhand von `changedByType` und `changedBy`, aus welcher Richtung die Kündigung kam: | Kündigung ausgelöst durch | `changedByType` | `changedBy` | | --- | --- | --- | | Systemseitig — Prozesssteuerung **oder** Vertriebsregel | `SYSTEM` | `PLENIGO` | | Kunde (Self Service) | `CUSTOMER` | Kunden-ID | | Kundenservice (Merchant Backend) | `MERCHANT` | Benutzer-ID | Da auch Kündigungen durch Vertriebsregeln `SYSTEM` und `PLENIGO` tragen (siehe die Beispiele oben), brauchst Du für systemseitige Kündigungen ein zweites Unterscheidungsmerkmal: | Merkmal | Vertriebsregel | Prozesssteuerung (Zahlungsausfall) | | --- | --- | --- | | `successorReason` | Gefüllt, z. B. `AGE` oder `CROSS_SELLING` | Leer | | `successorId` | Verweist auf das Folgeabonnement | `0` | | Vorangehender `FAILED_PAYMENT`-Callback für dasselbe Abonnement | Nein | Ja | > [!TIP] > **Hinweis:** Die zuverlässigste Methode ist die Korrelation: Ordne den `SUBSCRIPTION / CANCELLATION`-Callback einem vorangehenden `FAILED_PAYMENT`-Callback für dieselbe `subscriptionId` zu. Beide werden als Teil desselben Prozesssteuerungsvorgangs gesendet.