Webhook - Direct Debit Collections, Mandate Status

Applicable to the Direct Debit Outbound and Direct Debit Collections services

Direct Debit Mandate Status

The DDMANDATE event is triggered when there is a status change to a Direct Debit Mandate for both the Direct Debit Collections and Direct Debit Outbound services.

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.

Mandate Status

Mandates can have the following status during its lifecycle in the respective services. A DDMANDATE event is triggered on any progression between states, and the webhook will give the OldStatus and NewStatus

ServiceStatusMeaning
Direct Debit CollectionsPendingThe Mandate has been created and has not yet been sent to BACS for processing
Direct Debit CollectionsSubmittedThe Mandate has been sent to BACS and waiting for the final decision
Direct Debit CollectionsActiveThe Mandate has successfully lodged.
Direct Debit CollectionsRejectedThe mandate was rejected by the Payer's Bank. Modulr receives a BRAUDDIS file to explain the rejection
Direct Debit CollectionsCancelledAn existing mandate was cancelled
Direct Debit OutboundActiveThere is an active mandate lodged on our Partner's account
Direct Debit OutboundCancelAn existing Mandate was cancelled by our Partner
Direct Debit OutboundRejectThe Mandate was rejected during lodgement
Direct Debit OutboundExpireThe Mandate has expired

Webhook fields & old/new values

A list of all possible fields; 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. Where possible, old/new values showing the progression of fields are given.

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

ADDACS Reason Codes

A DDMANDATE event is triggered for the Direct Debit Collections service when Modulr receives an ADDACS (Automated Direct Debit Amendment and Cancellation Service) advice from a bank holding a Direct Debit Instruction (mandate) from you. The changes are automatically applied to the mandate held in the Modulr system, but you may want to also update any external system (for example when a payer changes bank account details).

The ReasonCode and ReasonMessagemay be:

CodeReason
0Instruction cancelled – Refer to payer
1Instruction cancelled by payer
2Payer deceased
3Account transferred to a new bank or building society
BAccount closed
CAccount transferred to a different branch of bank/building society
DAdvance notice disputed
EInstruction amended
RInstruction re-instated

Bank Rejected AUDDIS reasons

A DDMANDATE event is also triggered in the DD Collections service when a Bank rejects a Direct Debit Instruction (Mandate) - in this case the ReasonCode and ReasonMessage will be given alongside the status change to REJECTED

CodeReason
1Instruction cancelled by payer
2Payer deceased
3Account transferred
5No account
6No Instruction
7DDI amount not zero
BAccount closed
CAccount transferred to a different branch of the bank/building society
FInvalid account type
GBank will not accept Direct Debits on account
HInstruction has expired
IPayer Reference is not unique
KInstruction cancelled by paying PSP
LIncorrect payer’s account details
MTransaction code / user status incompatible
NTransaction disallowed at payer’s branch
OInvalid reference
PPayer’s name not present
QService user’s name blank