Webhook - Direct Debit Collections, Mandate Status

Direct Debit Mandate Status

The DDMANDATE event is triggered when there is a status change to a Direct Debit Mandate.

ParameterDescription
EventIdUnique id for the webhook event. This can change if webhook needs to be resent.
AccountIdModulr Unique Account reference for the account that the mandate is linked to.
EventNameType of event: DDMANDATE - DD Mandate Status Update
EventTimeDate and Timestamp for the Event - All Dates and times are UTC based.
CustomerIdModulr Unique Customer Reference for the customer that the mandate is linked to.
ExternalReferenceThis is the reference you can set on the mandate to correlate back to your system.
ReferenceReference of the mandate to match with the collections
MandateIdModulr Unique Mandate reference.
NewStatusUpdated mandate status.
OldStatusPrevious mandate status.
ReasonCodeReason Code for any failed mandates
ReasonMessageReason Message for any failed mandates
OldDueDateCollection due date before the change
RequestedDueDateCollection due date after the change
OldPaymentFrequencyCollection frequency before the change
RequestedPaymentFrequencyCollection frequency after the change
OldAmountOfPaymentCollection amount before the change
RequestedAmountOfPaymentCollection amount after the change
EffectivePaymentDateDate of the last collection before the change
RequestedLastPaymentDateDate of the last collection after the change
NewAccountNameNew account name of the customer
NewAccountNumberNew account number of the customer
NewAccountSortCodeNew account sort code of the customer
OldAccountNameOld account name of the customer
OldAccountNumberOld account name of the customer
OldAccountSortCodeOld account sort code of the customer

Mandate Status

Mandate can have the following status.

Payment DirectionStatusMeaning
InboundPendingThe Mandate has been created and has not yet been sent to BACS for processing
InboundSubmittedThe Mandate has been sent to BACS and waiting for the final decision
InboundActiveThe Mandate has successfully lodged.
InboundRejectedThe mandate was rejected by the Payer's Bank. Modulr receives a BRAUDDIS file to explain the rejection
InboundCancelledAn existing mandate was cancelled
OutboundActiveThere is an active mandate lodged on our Partner's account
OutboundCancelAn existing Mandate was cancelled by our Partner
OutboundRejectThe Mandate was rejected during lodgement
OutboundExpireThe Mandate has expired

Example DDMANDATE Webhook

{
	"EventId": "3c4f3c54-b8e3-4a8b-a1f9-f68429c449c6",
	"AccountId": "A120C8D3",
	"EventName": "DDMANDATE",
  "EventTime": "2020-01-01T03:27:41+0000",  
  "CustomerId": "C130CYKD",
  "ExternalReference": "4F82222B86J99",
  "Reference": "GYM-8973XC",
  "MandateId": "M101BPSG",
  "NewStatus": "ACTIVE",
  "OldStatus": "SUBMITTED",
  "ReasonCode":"INSTRUCTION_CANCELLED_BY_PAYER",
  "ReasonMessage":"Instruction has been cancelled by Payer",
  "OldDueDate":"2021-05-04",
  "RequestedDueDate":"2021-05-14",
  "OldPaymentFrequency":"W",
  "RequestedPaymentFrequency":"M",
  "OldAmountOfPayment":"34.56",
  "RequestedAmountOfPayment":"35.78",
  "EffectivePaymentDate":"2021-05-14",
  "RequestedLastPaymentDate":"2022-05-14",
  "NewAccountName":"JOE BLOGGS",
  "NewAccountNumber":"11111111",
  "NewAccountSortCode":"010101",
  "OldAccountName":"JOE M BLOGGS",
  "OldAccountNumber":"12121212",
  "OldAccountSortCode":"020202"
}

Please note that only non-null fields will be sent. If a field has no value, then it will not be part of the webhook.