Webhook - Direct Debit Collections Indemnity Claim (DDIC)

A webhook notification raised whenever a Direct Debit Indemnity Claim (DDIC) has been received or changes status. This webhook enables Partners and Customers to receive real-time notifications when a new DDIC advice is received from Bacs, when a claim is cancelled following a successful challenge, or when a claim settles against a Collateral account.

This webhook is subscribed to at Customer level and fires for each status transition on an Indemnity Claim.

📘

This webhook is part of the DDIC Report Automation project. It replaces manual email notifications that were previously sent by Payment Operations. Partners who wish to receive real-time claim notifications must explicitly subscribe to this webhook.

When Does This raised?

The webhook notification will be raised on each of the following status transitions:

StatusCircumstances
NEWA new DDIC advice has been received from Bacs and processed by Direct Debit Service. A new Indemnity Claim record has been created.
CANCELLEDA cancellation advice has been received from Bacs. The DDIC was successfully challenged and the existing Indemnity Claim record has been cancelled.
REJECTEDThe DDIC settlement transaction has been processed via STS transactional output. The claim amount has been debited from the Partner's Collateral account.

Webhook Parameters

ParameterTypeDescription
IndemnityClaimIdStringUnique ID for the Indemnity Claim. Prefix: ICC. Use this as the primary identifier for deduplication.
DdicReferenceStringDDIC reference received from Bacs. Always prefixed with DDIC. Note: a ddicReference is not unique and may be shared across multiple claims.
ReferenceStringService User Reference of the mandate associated with the claim. A mandate may have more than one claim at a time.
AmountDecimalTotal amount for the DDIC advice. Expressed as a decimal with up to 2 decimal places (e.g. 20.02).
ReasonCodeStringReason code indicating why the indemnity claim was raised. Examples: INSTRUCTION_CANCELLED_BY_PAYER, ADVANCE_NOTICE_DISPUTED.
StatusStringCurrent status of the Indemnity Claim. Possible values: NEW | CANCELLED | SETTLED.
TotalDirectDebitsIntegerTotal number of direct debit collections included in the DDIC advice.
CustomerIdStringThe Customer ID being notified about the status change. Webhook is subscribed at this customer level.
CollectionIdsString[]Array of Modulr collection IDs that have been matched to the direct debits in this DDIC. May be empty if no match could be found.
ChangeDateDateDate of the status change. Format: YYYY-MM-DD.
SchemeIdStringScheme ID of the DDIC advice in Bacs service. Used for reconciliation with the settlement transaction.
EventNameStringName of the webhook event
EventIdStringID of the webhook event
EventDateTimeDateTimeDate and time the event occurred. All timestamps are UTC. Format: ISO 8601 (e.g. 2025-01-03T09:15:00+0000).

Duplication Check

When deduplicating incoming webhook notifications, use indemnityClaimId combined with status. This combination uniquely identifies a specific state transition for a given claim. The same indemnityClaimId will appear with different statuses as the claim progresses through its lifecycle (e.g. NEW → CANCELLED, or NEW → SETTLED).

This is important particularly if a webhook has failed and needs to be resent — ensure you do not process the same state transition twice.


Example Webhook Payloads


{

  "IndemnityClaimId": "ICC3289458",
  "DdicReference": "DDIC-10223264",
  "Reference": "AA3473475",
  "Amount": 20.02,
  "ReasonCode": "INSTRUCTION_CANCELLED_BY_PAYER",
  "Status": "NEW",
  "TotalDirectDebits": 2,
  "CustomerId": "C2100004",
  "CollectionIds": ["K29758748", "K93474575"],
  "ChangeDate": "2025-01-03",
  "SchemeId": "S12345678",
  "EventName": "DD_INDEMNITY_CLAIM_STATUS",
  "EventId": "363f0ba4-a60f-40a9-a644-62fa6552c056",
  "EventDateTime": "2025-01-03T09:15:00+0000"
}
{
  "IndemnityClaimId": "ICC3289458",
  "DdicReference": "DDIC-10223264",
  "Reference": "AA3473475",
  "Amount": 20.02,
  "ReasonCode": "INSTRUCTION_CANCELLED_BY_PAYER",
  "Status": "CANCELLED",
  "TotalDirectDebits": 2,
  "CustomerId": "C2100004",
  "CollectionIds": ["K29758748", "K93474575"],
  "ChangeDate": "2025-01-10",
  "SchemeId": "S12345679",
  "EventName": "DD_INDEMNITY_CLAIM_STATUS",
  "EventId": "363f0ba4-a60f-40a9-a644-62fa6552c056",
  "EventDateTime": "2025-01-10T11:32:00+0000"
}
{
  "IndemnityClaimId": "ICC3289458",
  "DdicReference": "DDIC-10223264",
  "Reference": "AA3473475",
  "Amount": 20.02,
  "ReasonCode": "INSTRUCTION_CANCELLED_BY_PAYER",
  "Status": "SETTLED",
  "TotalDirectDebits": 2,
  "CustomerId": "C2100004",
  "CollectionIds": ["K29758748", "K93474575"],
  "ChangeDate": "2025-01-16",
  "SchemeId": "S12345680",
  "EventName": "DD_INDEMNITY_CLAIM_STATUS",
  "EventId": "363f0ba4-a60f-40a9-a644-62fa6552c056",
  "EventDateTime": "2025-01-16T08:00:00+0000"
}

Retrieveing Claim Details

On receiving a DD_INDEMNITY_CLAIM_STATUS webhook, Partners can use the indemnityClaimId to retrieve the full details of the claim via the API:

StatusCircumstances
GET/direct-debit-service/indemnity-claims/{indemnityClaimId}
GET/direct-debit-service/indemnity-claims?accountId={accountId}&status={status}