Event Webhooks
The collectAI event webhooks focus on claim lifecycle changes and we will push subscribed events to your system. You can also pull all of these from the the Events API. But this requires you to pull on a certain interval and a defined time frame. We usually recommend an integration with webhooks to achieve a resource efficient real time integration.
Data structure
All claim events that can occur will have the same data structure defined below.
Payload | Description |
---|---|
type | The event type |
eventId | The unique event id |
date | The timestamp when the event occurred in UTC (ISO_8601) |
source | The collectAI event source the event originates from. The field is optional and will be null if no source can be provided. |
claim.id | The unique claim identifier used by collectAI |
claim.merchantId | The merchant id the claim belongs to |
claim.referenceNumber | The claim reference number (provided by the merchant) |
claim.customerNumber | The claim customer number (provided by the merchant) |
Please refer to the Claims API for the claim
fields above.
Example request
POST /your-url HTTP/1.1
Body
{
"type": "FEE_ADDED",
"date": "2018-08-24T11:32:23Z",
"eventId": "a1daaeb5-7a71-4df1-9278-c635110e3033",
"source": "ESCALATION",
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345",
...
}
}
Types
Fee step executed
When a fee step has been executed to add a fee to a claim, we will make a POST
request to the configured URL.
This event is only triggered if the escalation process adds a fee. You can also add fees with the API, but this will not result in a webhook event.
Body
The following information will be provided when a fee was added:
Payload | Description |
---|---|
actionStep.name | The name of the action step executed |
claim.fee.id | The id of the fee claim item. |
claim.fee.type | The item fee type DUNNING_FEE . It can be with or without a reference to a primary item. |
claim.fee.value | The value of the fee in cents. |
claim.fee.currency | The currency of the fee's value, i.e. EUR |
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "FEE_ADDED",
"date": "2018-08-24T11:32:23Z",
"eventId": "a1daaeb5-7a71-4df1-9278-c635110e3033",
"source": "ESCALATION",
"actionStep": {
"name": "Add dunning fee 1",
},
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345",
"fee": {
"id": 9876,
"type": "DUNNING_FEE",
"value": "2875",
"currency": "EUR"
}
}
}
Message step executed
When a communication step has been executed and the message has been handed over to our providers, we will make a POST
request to the configured URL. In case of invalid (e.g. missing email address) or suppressed contact details, this event will not be sent.
A fallback communication will also trigger this event, when we have handed over a message to our providers.
The successful delivery of a message is not part of this event definition. In case a message delivery failed, please refer to the following event type Message could not be delivered.
Body
The following information will be provided when a claim is escalated:
Payload | Description |
---|---|
actionStep.name | The name of the action step executed |
claim.communication.channel | SMS , LETTER or EMAIL |
claim.communication.reference | Unique identifier for the communication message, i.e. to retrieve it's details or its content from the API. |
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "ESCALATED",
"date": "2018-08-24T11:32:23Z",
"eventId": "a1daaeb5-7a71-4df1-9278-c635110e3033",
"source": "ESCALATION",
"actionStep": {
"name": "Reminder Email 1",
},
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345",
"communication": {
"channel": "SMS",
"reference": "a6590eb9-497a-4a7f-b5df-xxxxxxxxxxxx"
}
}
}
Message could not be delivered
When a communication step was attempted, but could not be executed or has been executed and our message providers signaled back problems in delivering the message to the customer successfully, we will make a POST
request to the configured URL. It can take up to a few days until providers stop trying to deliver a message and signals an error.
This type can either follow a Message step executed webhook, when the provider wasn't able to deliver the message or can be be triggered directly, when we weren't able to hand over the message to one of our providers.
Body
The following information will be provided when a claim is escalated:
Payload | Description |
---|---|
claim.communication.channel | SMS , LETTER or EMAIL |
claim.communication.reference | Unique identifier for the communication message, i.e. to retrieve its details or its content from the API. |
claim.communication.recipients | The intended recipients of the communication. This may be an array of email addresses, a phone number or a postal address. |
claim.communication.error.type | CONFIGURATION_ERROR , CONTACT_ERROR , RENDER_ERROR , SEND_ERROR - see below for more details. |
Here are some more details on the failure, depending on the value of claim.communication.error.type
:
Error Type ( claim.communication.error.type ) | Possible Reason Codes ( claim.communication.error.reasonCode ) | Details Object ( claim.communication.error.details ) |
---|---|---|
CONFIGURATION_ERROR | INVALID_SENDER_ERROR , COMMUNICATION_PROVIDER_NOT_CONFIGURED | -- |
CONTACT_ERROR | INVALID_MOBILE_NUMBER , INVALID_EMAIL_ADDRESS ,INVALID_POSTAL_ADDRESS | { "details": { "invalidValues": { "phone": "<bad phone>" } } } |
RENDER_ERROR | PLACEHOLDER_ERROR , SNIPPET_ERROR , QRBILL_ERROR , QR_EPC_ERROR , ATTACHMENTS_ERROR | --- |
SEND_ERROR | BOUNCE_PERMANENT_GENERAL , BOUNCE_PERMANENT_ON_SUPPRESSION_LIST ,BOUNCE_PERMANENT_ON_GLOBAL_SUPPRESSION_LIST ,BOUNCE_TRANSIENT_MBX_FULL ,BOUNCE_TRANSIENT_MESSAGE_TOO_LARGE , BOUNCE_TRANSIENT_CONTENT_REJECTED , BOUNCE_TRANSIENT_ATTACHMENT_REJECTED ,SMS_REJECTED , SMS_NOT_DELIVERED ,SMS_EXPIRED , INVALID_CLAIM ,PROVIDER_ERROR ', | { message: 'some message', smtpCode: '200' } |
To learn more about what these codes mean, see here.
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "MESSAGE_NOT_DELIVERED",
"date": "2018-08-24T11:32:23Z",
"eventId": "a1daaeb5-7a71-4df1-9278-c635110e3033",
"source": "ESCALATION",
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345",
"communication": {
"channel": "EMAIL",
"reference": "a6590eb9-497a-4a7f-b5df-xxxxxxxxxxxx",
"recipients": [{"email": "email@mail.com", "cc": [], "bcc": [], }],
"error": {
"type": "SEND_ERROR",
"reasonCode": "BOUNCE_PERMANENT_MBX_NON_EXISTING",
"details": {
"message": "some error occured",
"smtpCode": "200",
...
},
},
}
}
}
Checkpoint step executed
Whenever the claim has reached a custom configured marker step during its lifecycle, we will make a POST
request to notify about this.
This could be used to connect external processes into the collectAI reminder process, i.e. triggering internal system processes.
Body
The following information will be provided when a checkpoint is reached
Payload | Description |
---|---|
actionStep.name | The name of the action step executed |
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "CHECKPOINT_REACHED",
"date": "2018-08-24T11:32:23Z",
"eventId": "a1daaeb5-7a71-4df1-9278-c635110e3033",
"source": "ESCALATION",
"actionStep": {
"name": "Reminder Email 1",
},
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345"
}
}
Disputed
When a dispute is triggered by the Debtor or Merchant, we will make a POST
request to the configured URL for this claim dispute.
Body
In addition to the common claim wrapper information a disputeReason
object will be provided when a dispute is triggered. It does contain justification for a dispute. It contains a type
and an optional message
for custom reasons. type
can have one of the following values:
Dispute Reason | Description |
---|---|
type | Human friendly identifier of the dispute option (e.g DEBTOR_ALREADY_PAID) |
message | Message from the customer disputing the claim (only for type OTHER ) |
disputeId | Unique identifier of the dispute |
Example request
POST /your-url HTTP/1.1
Body
{
"type": "DISPUTED",
"date": "2018-08-24T11:32:23Z",
"eventId": "a1daaeb5-7a71-4df1-9278-c635110e3033",
"source": null,
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345",
"disputeReason": {
"type": "DEBTOR_ALREADY_PAID"
}
}
}
When dispute reason is OTHER
POST /your-url HTTP/1.1
Body
{
"type": "DISPUTED",
"date": "2018-08-24T11:32:23Z",
"eventId": "a1daaeb5-7a71-4df1-9278-c635110e3033",
"source": null,
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345",
"disputeReason": {
"type": "OTHER",
"message": "I have a problem with my bank account."
}
}
}
Payment in progress
When a customer starts a payment process for the given claim, we will make a POST
request to the configured URL for this.
Body
The following information will be provided when a payment is in progress inside the payment
object:
Payload | Description |
---|---|
claim.payment.providerName | Payment service provider (PSP) that the user is using to start the payment |
claim.payment.paymentMethod | Selected payment method of the PSP |
claim.payment.amount | The amount in cents that the customer will pay |
claim.payment.currency | The currency of the payment, i.e. EUR |
claim.payment.reference | The reference of the payment, i.e. CAI-8373461 |
claim.payment.paymentRequestId | Unique identifier of a payment flow |
claim.payment.claimTotalAmount | The total amount (in cents) of the claim |
claim.payment.claimOutstandingAmount | The outstanding amount (in cents) of the claim |
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "PAYMENT_IN_PROGRESS",
"date": "2018-08-24T11:32:23Z",
"eventId": "a1daaeb5-7a71-4df1-9278-c635110e3033",
"source": null,
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345",
"payment": {
"providerName": "COMPUTOP",
"paymentMethod": "CREDIT_CARD",
"amount": 1000,
"currency": "EUR",
"reference": "12345",
"paymentRequestId": "c94e523f-45b8-4ab5-95e2-eae570188b18",
"claimTotalAmount": "1600",
"claimOutstandingAmount": "1400"
}
}
}
Payment completed
When a customer concludes the payment process for the given claim, we will make a POST
request to the configured URL for this.
Body
The following information will be provided when a payment is finished inside the payment
object:
Payload | Description |
---|---|
claim.payment.providerName | Payment service provider (PSP) that the user is using to start the payment (PAYPAL, COMPUTOP, PAYONE,.. etc.) |
claim.payment.paymentMethod | Selected payment method of the PSP (CREDIT_CARD, DIRECT_DEBIT, etc.) |
claim.payment.providerDetails | Payment provider specific external meta data. This field is optional and available only for limited payment providers (Computop only) |
claim.payment.amount | The amount in cents that the customer will pay |
claim.payment.currency | The currency of the payment, i.e. EUR |
claim.payment.claimItems | List of claim items that were paid. See below for more details. |
claim.payment.claimTotalAmount | The total amount (in cents) of the claim |
claim.payment.claimOutstandingAmount | The outstanding amount (in cents) of the claim |
claim.payment.reference | The reference of the payment, i.e. CAI-8373461 |
claim.payment.externalTransactionId | External unique identifier of a completed transaction (usually set by the payment provider) |
claim.payment.paymentRequestId | Unique identifier of a payment flow |
claim.payment.transactionId | Unique identifier of a completed transaction |
The object claim.payment.claimItems
is defined is follows:
Claim Item | Description |
---|---|
claimItem.id | The unique identifier of the item |
claimItem.amount | The amount paid for the item (in cents) |
claimItem.outstanding | The outstanding amount for the item (in cents) |
claimItem.type | (Optional) The item type. Possible values: PRIMARY , DUNNING_FEE , COLLECTION_FEE |
claimItem.reference | (Optional) An external reference to your system. The reference should be unique within an item collection |
claimItem.customFields | (Optional) Additional custom fields in the form of key/value pairs. The value is always a string |
The object claim.payment.providerDetails
is defined as follows:
- Computop
payId
- ID assigned by Computop Paygate for a processed paymentccBrand
- credit card brand name, e.g. VISA, MasterCard, etc. Optional and available only for credit card payment method
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "PAYMENT_COMPLETED",
"date": "2018-08-24T11:32:23Z",
"eventId": "a1daaeb5-7a71-4df1-9278-c635110e3033",
"source": null,
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345",
"payment": {
"providerName": "COMPUTOP",
"paymentMethod": "CREDIT_CARD",
"amount": 1000,
"currency": "EUR",
"reference": "12345",
"externalTransactionId": "7272hhd",
"transactionId": "12264990-a4f0-47cd-b519-f99c6d2b606a",
"paymentRequestId": "c94e523f-45b8-4ab5-95e2-eae570188b18",
"claimItems": [
{ "id": 1, "amount": 300, "outstanding": 0, "type": "PRIMARY", "reference": "ref-123", "customFields": { "extRef": "ABC123" } },
{ "id": 2, "amount": 700, "outstanding": 1400, "type": "DUNNING_FEE", "reference": "ref-123" }
],
"claimTotalAmount": "1600",
"claimOutstandingAmount": "1400",
"providerDetails": {
"payId": "sZGVyTmFtZSI6Ikpv",
"ccBrand": "VISA"
}
}
}
}
Landing page opened
When a customer accesses the details of the landing page, we will make a POST
request to the configured URL for this.
Body
The following information will be provided when this webhook type gets emitted.
Payload | Description |
---|---|
claim.details.communicationType | Type of the communication from which the customer accessed the claim details (SMS, EMAIL, etc.). Note: This will also be populated when the access can not be linked to a communication message. |
claim.details.channel | Channel from which the customer accessed the details of the claim (LANDING_PAGE) |
claim.details.sessionId | Landing page session which lasts for 1 hour - useful to filter this type of event |
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "DETAILS_ACCESSED",
"date": "2018-08-24T11:32:23Z",
"eventId": "a1daaeb5-7a71-4df1-9278-c635110e3033",
"source": null,
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345",
"details": {
"communicationType": "SMS",
"channel": "LANDING_PAGE",
"sessionId": "a4lSkLa8GOyfp5saix2xYEqGTJo95t-I"
}
}
}
Payment modalities state change
When a customer requests a payment modality or a merchant changes the status of such request, POST
request is being triggered to notify about this.
Body
The following information will be provided inside the paymentModality
object when payment modality is requested, or state is changed:
Payment Modality | Description |
---|---|
claim.paymentModality.type | Type of a payment modality (PAYMENT_PLAN, PAYMENT_DEFEREMENT) |
claim.paymentModality.state | State of the payment modality request (REQUESTED, APPROVED, REJECTED) |
claim.paymentModality.modalityId | Payment modality identifier |
claim.paymentModality.requestData | Payment modality request data |
The following information will be provided inside the paymentModality.requestData
object based on the payment modality type:
Payment Modality Type | Field | Description |
---|---|---|
PAYMENT_DEFEREMENT | claim.paymentModality.requestData.defermentDate | The date the customer defers to |
PAYMENT_DEFEREMENT | claim.paymentModality.requestData.amount | (Conditional) Amount (in cents) the customer promises to pay |
PAYMENT_PLAN | - | No paymentModality.requestData for this type |
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "PAYMENT_MODALITY_STATE_CHANGE",
"date": "2018-08-24T11:32:23Z",
"eventId": "a1daaeb5-7a71-4df1-9278-c635110e3033",
"source": null,
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "12345",
"referenceNumber": "REF-123",
"customerNumber": "12345",
"paymentModality": {
"type": "PAYMENT_DEFERMENT",
"state": "REQUESTED",
"modalityId": "646c684f-e77c-4448-9465-22677a66d18a",
"requestData": {
"defermentDate": "2021-03-03T00:00:000Z",
"amount": 5000
}
}
}
}
Archived
Whenever a claim transitions to its archived state, we will make a POST
request to the configured endpoint.
This webhook gets triggered by the escalation process or whenever a claim gets archived via API.
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "ARCHIVED",
"date": "2018-08-24T11:32:23Z",
"eventId": "a1daaeb5-7a71-4df1-9278-c635110e3033",
"source": null,
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345"
}
}
End of escalation reached
Whenever a claim is archived automatically because the escalation process has finished, we will make a POST
request
to the configured endpoint.
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "END_OF_ESCALATION_REACHED",
"date": "2018-08-24T11:32:23Z",
"eventId": "a1daaeb5-7a71-4df1-9278-c635110e3033",
"source": "ESCALATION",
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345"
}
}
Customer data collected
Whenever customer data is collected, we will make a POST
request to the configured endpoint.
Body
The following information will be provided inside the customerData
object:
Customer Data | Description |
---|---|
customerData.contact.type | The type of contact provided by the customer. Could be EMAIL OR MOBILE_NUMBER |
customerData.contact.value | Email or mobile number provided by the customer |
customerData.contact.ipaddress | The ipaddress of the customer when the contact was collected |
customerData.consent1 | The text of the consent form (checkbox) in the language of the contact page. |
customerData.consent2 | The text of the consent form (checkbox) in the language of the contact page. |
customerData.timestamp | The time when the customer contact data was collected |
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "CUSTOMER_DATA_COLLECTED",
"date": "2023-11-10T15:39:28.123Z",
"eventId": "fc428f52-8a6c-4d20-b403-4087077df83f",
"source": null,
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345",
"customerData": {
"contact": {
"type": "EMAIL",
"value": "email@example.com",
"ipaddress": "10.0.0.10"
},
"consent1": "some-text-1",
"consent2": "some-text-2",
"timestamp": "2023-11-10T15:39:28.123Z"
}
}
}
Customer data verified
Whenever customer data is verified, we will make a POST
request to the configured endpoint.
Body
The following information will be provided inside the customerData
object:
Customer Data | Description |
---|---|
customerData.contact.type | The type of contact provided by the customer. Could be EMAIL OR MOBILE_NUMBER |
customerData.contact.value | Email or mobile number provided by the customer |
customerData.contact.ipaddress | The ipaddress of the customer when the contact was collected |
customerData.consent1 | The text of the consent form (checkbox) in the language of the contact page. |
customerData.consent2 | The text of the consent form (checkbox) in the language of the contact page. |
customerData.timestamp | The time when the customer contact data was verified |
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "CUSTOMER_DATA_VERIFIED",
"date": "2023-11-10T15:39:28.123Z",
"eventId": "fc428f52-8a6c-4d20-b403-4087077df83f",
"source": null,
"claim": {
"id": 54321,
"merchantId": 1,
"referenceNumber": "REF-123",
"customerNumber": "12345",
"customerData": {
"contact": {
"type": "EMAIL",
"value": "email@example.com",
"ipaddress": "10.0.0.10"
},
"consent1": "some-text-1",
"consent2": "some-text-2",
"timestamp": "2023-11-10T15:39:28.123Z"
}
}
}
SEPA mandate collected
Whenever SEPA mandate is collected, we will make a POST
request to the configured endpoint.
Body
The following information will be provided inside the sepaMandate
object:
SEPA Mandate | Description |
---|---|
sepaMandate.amount | The amount the customer's bank account will be debited |
sepaMandate.currency | The currency of the amount to be debited |
sepaMandate.creditorId | The sepa mandate creditor id of the merchant |
sepaMandate.debitCycle | The debit cycle of the SEPA mandate e.g RECURRING, WEEKLY, MONTHLY, QUARTERLY, YEARLY |
sepaMandate.iban | The customer's IBAN |
sepaMandate.firstName | The customer's first name |
sepaMandate.lastName | The customer's last name |
The following information will be provided inside the paymentRequest
object:
Payment Request | Description |
---|---|
paymentRequest.id | A unique identifier for the payment request associated with the SEPA mandate |
paymentRequest.claimItems | The items in the claim for which this SEPA mandate has been created |
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "SEPA_MANDATE_COLLECTED",
"date": "2021-04-19T08:19:53.619Z",
"eventId": "a22d20e2-8f45-4127-8346-fb2d256c8af9",
"source": null,
"claim": {
"id": 4609948,
"merchantId": 1425,
"referenceNumber": "CAI-102",
"customerNumber": "1234567",
"sepaMandate": {
"iban": "DE89370400440532013000",
"amount": 1050,
"currency": "EUR",
"lastName": "Last Name",
"firstName": "First Name",
"creditorId": "DE98ZZZ09999999999",
"debitCycle": "QUARTERLY"
},
"paymentRequest": {
"id": "54364c31-b312-47db-a775-63824daf0300",
"claimItems": [
{
"id": 6374999,
"type": "PRIMARY",
"amount": 100,
"reference": "ABCD2222"
},
{
"id": 6375000,
"type": "DUNNING_FEE",
"amount": 950,
"reference": "ABCD2222"
}
]
}
}
}
Installment plan created
Whenever Installment plan is created, we will make a POST
request to the configured endpoint.
Body
The following information will be provided inside the installmentPlan
object:
Installment plan | Description |
---|---|
installmentPlan.id | The installment plan identifier |
installmentPlan.amount | The total sum (including principal and interest) of all installments in cents |
installmentPlan.currency | The currency code (ISO 4217) |
installmentPlan.installments | The list of installments (see Installment) |
installmentPlan.installmentsNumber | The total number of installments |
installmentPlan.interestAmount | The total interest sum of all installments in cents |
installmentPlan.feeAmount | The total fee sum of all installments in cents |
installmentPlan.principalAmount | The total principal sum of all installments in cents |
installmentPlan.startDate | The date when the first installment has to be paid |
Installment | Description |
---|---|
installment.amount | The sum of principal and interest amounts in cents |
installment.dueDate | The date until the installment is due to pay |
installment.interestAmount | The interest amount in cents |
installment.feeAmount | The fee amount in cents |
installment.principalAmount | The principal amount in cents |
installment.remainingBalance | The remaining overall balance after current installment is paid |
installment.sequentialNumber | The sequential number of installment to maintain the order |
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "INSTALLMENT_PLAN_CREATED",
"date": "2022-07-19T08:19:53.619Z",
"eventId": "a22d20e2-8f45-4127-8346-fb2d256c8af9",
"source": null,
"claim": {
"id": 4609948,
"merchantId": 1425,
"referenceNumber": "CAI-102",
"customerNumber": "1234567",
"installmentPlan": {
"id": "988199cb-a08d-4507-8508-d287c8b66daa",
"amount": 150000,
"currency": "EUR",
"startDate": "2022-08-01",
"installments": [
{
"amount": 50000,
"dueDate": "2022-08-01",
"interestAmount": 0,
"feeAmount": null,
"principalAmount": 50000,
"remainingBalance": 100000,
"sequentialNumber": 1
},
{
"amount": 50000,
"dueDate": "2022-09-01",
"interestAmount": 0,
"feeAmount": null,
"principalAmount": 50000,
"remainingBalance": 50000,
"sequentialNumber": 2
},
{
"amount": 50000,
"dueDate": "2022-10-01",
"interestAmount": 0,
"feeAmount": null,
"principalAmount": 50000,
"remainingBalance": 0,
"sequentialNumber": 3
}
],
"installmentsNumber": 3,
"interestAmount": 0,
"feeAmount": null,
"principalAmount": 150000
}
}
}
Installment plan SEPA mandate collected
Whenever Installment plan SEPA mandate is collected, we will make a POST
request to the configured endpoint.
Body
The following information will be provided inside the sepaMandate
object:
Installment plan SEPA mandate collected | Description |
---|---|
sepaMandate.sepaMandateId | The SEPA mandate identifier |
sepaMandate.installmentPlanId | The installment plan identifier |
sepaMandate.iban | The customer's IBAN |
sepaMandate.lastName | The customer's last name |
sepaMandate.firstName | The customer's first name |
sepaMandate.debitCycle | The debit cycle of the SEPA mandate e.g RECURRING |
Example payload
POST /your-url HTTP/1.1
Body
{
"type": "INSTALLMENT_PLAN_SEPA_MANDATE_COLLECTED",
"date": "2022-07-19T08:19:53.619Z",
"eventId": "a22d20e2-8f45-4127-8346-fb2d256c8af9",
"source": null,
"claim": {
"id": 4609948,
"merchantId": 1425,
"referenceNumber": "CAI-102",
"customerNumber": "1234567",
"sepaMandate": {
"sepaMandateId": "f57aea57-a5e3-40c6-8174-4cefc80ef8bb",
"installmentPlanId": "988199cb-a08d-4507-8508-d287c8b66daa",
"iban": "DE89370400440532013000",
"lastName": "Last Name",
"firstName": "First Name",
"debitCycle": "RECURRING",
}
}
}