Mandate Initiation Request and Response
Use case 1: Receive the Mandate
Typical flow
Step Action Description A new mandates is received by LHV from the scheme on day 2 of Bacs cycle. LHV will validate duplicates, account, agreement.
Mandate initiation request (pain.009) is sent to the client
LHV creates mandate initiation request (pain.009) and sends it to the customer. In one file there is information about one Mandate.
Client accepts the mandate by sending Mandate Initiation Response to LHV (pain.012)
A mandate acceptance is received by LHV from the customer with pain.012. Acceptance should be send by the end of the day 3 of the Bacs cycle.
LHV will validate mandate, duplicates, account, initiation request, acceptance data. Validation response is send to customer by LHV.
On day 3 of the Bacs cycle, all mandates will be activated. See cut-offs.
Use case 2: Reject the Mandate
Typical flow
Step Action Description A new mandates is received by LHV from the scheme on day 2 of Bacs cycle. LHV will validate duplicates, account, agreement.
Mandate initiation request (pain.009) is sent to the client
LHV creates mandate initiation request (pain.009) and sends it to the customer. In one file there is information about one Mandate.
Client Rejects the mandate by sending Mandate Initiation Response to LHV (pain.012)
A mandate rejection is received by LHV from the customer with pain.012. Rejection should be sent by the end of the day 3 of the Bacs cycle.
LHV will validate mandate, duplicates, account, initiation request, rejection data. Validation response is sent to customer by LHV.
Create mandate return resource
Mandate return resource is created by the LHV and send to the Bacs via AUDDIS. Return is received by the scheme and mandate will not be activated.
Mandate return can be send until the end of the day 3 of the Bacs cycle. See cut-offs.
Example of Mandate Initiation Request and Response (Acceptance and Rejection)
Example of Mandate Initiation Request
Copy <? xml version = '1.0' encoding = 'UTF-8' ?>
< Document xmlns = "urn:iso:std:iso:20022:tech:xsd:pain.009.001.07" >
< MndtInitnReq >
< GrpHdr >
< MsgId >43642128e20c435387444d9c806b4f65</ MsgId >
< CreDtTm >2024-06-19T12:03:01.249+01:00</ CreDtTm >
</ GrpHdr >
< Mndt >
< MndtId >9665c298f1cc4f9294598a4fc97ac060</ MndtId >
< MndtReqId >TEST-112</ MndtReqId >
< TrckgInd >false</ TrckgInd >
< Cdtr >
< Nm >ACCOUNT NAME</ Nm >
< Id >
< OrgId >
< Othr >
< Id >539614</ Id >
< SchmeNm >
< Cd >BANK</ Cd >
</ SchmeNm >
</ Othr >
</ OrgId >
</ Id >
</ Cdtr >
< CdtrAcct >
< Id >
< Othr >
< Id >20201555555555</ Id >
< SchmeNm >
< Cd >BBAN</ Cd >
</ SchmeNm >
</ Othr >
</ Id >
< Ccy >GBP</ Ccy >
</ CdtrAcct >
< Dbtr >
< Nm >TESTING COMPANY</ Nm >
< Id >
< OrgId >
< Othr >
< Id >539614</ Id >
< SchmeNm >
< Cd >BANK</ Cd >
</ SchmeNm >
</ Othr >
</ OrgId >
</ Id >
</ Dbtr >
< DbtrAcct >
< Id >
< Othr >
< Id >04031300000287</ Id >
< SchmeNm >
< Cd >BBAN</ Cd >
</ SchmeNm >
</ Othr >
</ Id >
< Ccy >GBP</ Ccy >
</ DbtrAcct >
< DbtrAgt >
< FinInstnId >
< ClrSysMmbId >
< ClrSysId >
< Cd >GBDSC</ Cd >
</ ClrSysId >
< MmbId >040313</ MmbId >
</ ClrSysMmbId >
</ FinInstnId >
</ DbtrAgt >
</ Mndt >
</ MndtInitnReq >
</ Document >
Example of Mandate Initiation Response (Acceptance and Rejection)
Acceptance with pain.012 Rejection with pain.012
Copy <? xml version = "1.0" encoding = "utf-8" ?>
< Document xmlns = "urn:iso:std:iso:20022:tech:xsd:pain.012.001.07" >
< MndtAccptncRpt >
< GrpHdr >
< MsgId >TEST-111</ MsgId >
< CreDtTm >2024-04-17T13:57:01.326</ CreDtTm >
</ GrpHdr >
< UndrlygAccptncDtls >
< OrgnlMsgInf >
< MsgId >43642128e20c435387444d9c806b4f65</ MsgId >
< CreDtTm >2024-04-17T13:57:01.326</ CreDtTm >
</ OrgnlMsgInf >
< AccptncRslt >
< Accptd >0</ Accptd >
</ AccptncRslt >
< OrgnlMndt >
< OrgnlMndtId >9665c298f1cc4f9294598a4fc97ac060</ OrgnlMndtId >
</ OrgnlMndt >
</ UndrlygAccptncDtls >
</ MndtAccptncRpt >
</ Document >
Copy <? xml version = "1.0" encoding = "utf-8" ?>
< Document xmlns = "urn:iso:std:iso:20022:tech:xsd:pain.012.001.07" >
< MndtAccptncRpt >
< GrpHdr >
< MsgId >TEST-112</ MsgId >
< CreDtTm >2024-04-17T13:57:01.326</ CreDtTm >
</ GrpHdr >
< UndrlygAccptncDtls >
< OrgnlMsgInf >
< MsgId >43642128e20c435387444d9c806b4f65</ MsgId >
< CreDtTm >2024-04-17T13:57:01.326</ CreDtTm >
</ OrgnlMsgInf >
< AccptncRslt >
< Accptd >1</ Accptd >
< RjctRsn >
< Cd >AC01</ Cd >
</ RjctRsn >
</ AccptncRslt >
< OrgnlMndt >
< OrgnlMndtId >9665c298f1cc4f9294598a4fc97ac060</ OrgnlMndtId >
</ OrgnlMndt >
</ UndrlygAccptncDtls >
</ MndtAccptncRpt >
</ Document >
Example of the Response to invalid pain.012
Copy {
"GrpHdr.MsgId" : "pain012_message_id" ,
"AcceptanceStatus" : "PARTIAL" ,
"Messages" : [
{
"OrgnlMsgInf.MsgId" : "message_id_pain009" ,
"Confirmed" : true
} ,
{
"OrgnlMsgInf.MsgId" : "invalid_message_id" ,
"Confirmed" : false ,
"ErrorInfo" : {
"ErrorCode" : "NOT_FOUND" ,
"ErrorDescription" : "Mandate not found"
}
}
]
}
Error codes
Error Code Error Description Mandate is expected to be in status PENDING, but is in status ...
Duplicate message in file
pain.009 message file not found
NO_RIGHTS_TO_DEBTOR_ACCOUNT
User have no rights to debtor account.
Mandate Cancellation Request
Use case 3: Cancel the mandate
Typical flow
Step Action Description Client and LHV have previously received mandate in status βactiveβ
Insert cancellation request (pain.011)
A mandate cancellation is received by LHV from the customer with pain.011.
Validate cancellation request
Request is validated by the LHV. LHV is validating mandate, mandate initiation request, duplicates, data in pain.011, account.
Validation response is send to customer by LHV with pain.012.
Create mandate cancellation resource
Mandate cancellation resource is created by the LHV and send to the Bacs via ADDACS.
Example of Mandate Cancellation Request
Copy <? xml version = "1.0" encoding = "UTF-8" ?>
< Document xmlns = "urn:iso:std:iso:20022:tech:xsd:pain.011.001.07" >
< MndtCxlReq >
< GrpHdr >
< MsgId >iso-msg-id</ MsgId >
< CreDtTm >2024-02-28T09:30:47</ CreDtTm >
< Authstn >
< Cd >AUTH</ Cd >
</ Authstn >
< InitgPty >
< Nm >Company ABC</ Nm >
</ InitgPty >
</ GrpHdr >
< UndrlygCxlDtls >
< OrgnlMsgInf >
< MsgId >79fa86cf9e844a62879ef7c713baac5f</ MsgId >
< MsgNmId >pain.009.001.05</ MsgNmId >
< CreDtTm >2024-02-27T09:30:00</ CreDtTm >
</ OrgnlMsgInf >
< CxlRsn >
< Rsn >
< Cd >AC04</ Cd >
</ Rsn >
</ CxlRsn >
< OrgnlMndt >
< OrgnlMndtId >312d60e61acf47d28083ac2e3729d6fc</ OrgnlMndtId >
</ OrgnlMndt >
</ UndrlygCxlDtls >
</ MndtCxlReq >
</ Document >
Example of Mandate Cancellation Response
Acceptance with pain.012 Rejection with pain.012
Copy <? xml version = '1.0' encoding = 'UTF-8' ?>
< Document xmlns = "urn:iso:std:iso:20022:tech:xsd:pain.012.001.07" >
< MndtAccptncRpt >
< GrpHdr >
< MsgId >49fa9d40c0fb43b5901df7fe15dbb502</ MsgId >
< CreDtTm >2024-05-24T11:14:01.793+01:00</ CreDtTm >
</ GrpHdr >
< UndrlygAccptncDtls >
< OrgnlMsgInf >
< MsgId >iso-msg-id</ MsgId >
< MsgNmId >pain.011</ MsgNmId >
</ OrgnlMsgInf >
< AccptncRslt >
< Accptd >true</ Accptd >
</ AccptncRslt >
< OrgnlMndt >
< OrgnlMndtId >3ac2dec8369b4849a105f41a73e369f3</ OrgnlMndtId >
</ OrgnlMndt >
</ UndrlygAccptncDtls >
</ MndtAccptncRpt >
</ Document >
Copy <? xml version = '1.0' encoding = 'UTF-8' ?>
< Document xmlns = "urn:iso:std:iso:20022:tech:xsd:pain.012.001.07" >
< MndtAccptncRpt >
< GrpHdr >
< MsgId >300745cd294c4673be20ffd9cd70e573</ MsgId >
< CreDtTm >2024-05-27T08:32:43.507+01:00</ CreDtTm >
</ GrpHdr >
< UndrlygAccptncDtls >
< OrgnlMsgInf >
< MsgId >iso-msg-id</ MsgId >
< MsgNmId >pain.011</ MsgNmId >
</ OrgnlMsgInf >
< AccptncRslt >
< Accptd >false</ Accptd >
< RjctRsn >
< Cd >NARR</ Cd >
</ RjctRsn >
< AddtlRjctRsnInf >Mandate cancel failed.</ AddtlRjctRsnInf >
</ AccptncRslt >
< OrgnlMndt >
< OrgnlMndtId >3ac2dec8369b4849a105f41a73e369f3</ OrgnlMndtId >
</ OrgnlMndt >
</ UndrlygAccptncDtls >
</ MndtAccptncRpt >
</ Document >
Error codes
Validation Reject Reason Code in pain.012 Reject Reason Proprietary in pain.012 Additional Information in pain.012 Mandate request file is found.
Mandate exists in status βpendingβ or βactiveβ.
Duplicate mandate ID in the pain.011 request
Duplicate message in file
Process the data from pain.011
MANDATE_CANCEL_INVALID_DATA
Mandate cancel request contains invalid data
Check if all accounts belong to the user who initiated the message.
NO_RIGHTS_TO_DEBTOR_ACCOUNT
User has no rights to debtor account.
Direct Debit Notification and Response
Use case 4: Receive the Direct Debit notification
Typical flow
Step Action Description Receive and validate Direct Debit
On day 2 of the Bacs cycle LHV receives Direct Debit Collection message
Send DD collection message to client
A DD collections message will be sent to the LHV Customer with pain.008.
Receive Acceptance of the Collection message
PSP customer accepts that collection with pain.002.
If no response received from the customer then it will be processed as accepted. See cut-offs.
LHV will validate collection, duplicates, account, initiation request, acceptance data. Validation response is sent to customer by LHV.
On day 3 of the Bacs cycle LHV will debit customers account. See cut-offs.
Use case 5: Reject the Direct Debit Collection
Typical flow
Step Action Description Receive and validate Direct Debit
On day 2 of the Bacs cycle LHV receives Direct Debit Collection message
Send DD collection message to client
A DD collections message will be sent to the LHV Customer with pain.008.
Receive Rejection of the Collection message
PSP customer Rejects that collection with pain.002. Rejection should be sent by the end of the day 3 of the Bacs cycle. See cut-offs.
LHV will validate collection, duplicates, account, initiation request, rejection data. Validation response is sent to customer by LHV.
Create Direct Debit return resource
Direct Debit return resource is created by the LHV and send to the Bacs via ARUDD.
Rejection should be sent by the end of the day 3 of the Bacs cycle. See cut-offs.
Scheme Acceptance of the Return
Return is received and accepted by the scheme and credit payment will be initiated.
Debit initial sum on Direct Debit Collection
Credit initial sum on Direct Debit Collection
Client will be credited on day 5 of the Bacs Return cycle. See cut-offs.
Example of Direct Debit Incoming Collection Notification and Response (Acceptance and Rejection)
Example of Direct Debit Incoming Collection Notification
Copy <? xml version = '1.0' encoding = 'UTF-8' ?>
< Document xmlns = "urn:iso:std:iso:20022:tech:xsd:pain.008.001.11" >
< CstmrDrctDbtInitn >
< GrpHdr >
< MsgId >04d8746c3da84cb0aedf7a0a47b38f19</ MsgId >
< CreDtTm >2024-07-03T15:12:01.663+01:00</ CreDtTm >
< NbOfTxs >1</ NbOfTxs >
< CtrlSum >700.00</ CtrlSum >
< InitgPty >
< Nm >ACCOUNT NAME</ Nm >
</ InitgPty >
</ GrpHdr >
< PmtInf >
< PmtInfId >6CB2EACA0FBC4D48A6F9430FABE1F857</ PmtInfId >
< PmtMtd >DD</ PmtMtd >
< NbOfTxs >1</ NbOfTxs >
< CtrlSum >700.00</ CtrlSum >
< PmtTpInf >
< SvcLvl >
< Prtry >BACSDD</ Prtry >
</ SvcLvl >
< SeqTp >FRST</ SeqTp >
</ PmtTpInf >
< ReqdColltnDt >2024-07-04</ ReqdColltnDt >
< Cdtr >
< Nm >ACCOUNT NAME</ Nm >
</ Cdtr >
< CdtrAcct >
< Id >
< Othr >
< Id >20201555555555</ Id >
< SchmeNm >
< Cd >BBAN</ Cd >
</ SchmeNm >
</ Othr >
</ Id >
< Ccy >GBP</ Ccy >
</ CdtrAcct >
< CdtrAgt >
< FinInstnId >
< ClrSysMmbId >
< ClrSysId >
< Cd >GBDSC</ Cd >
</ ClrSysId >
< MmbId >202015</ MmbId >
</ ClrSysMmbId >
</ FinInstnId >
</ CdtrAgt >
< DrctDbtTxInf >
< PmtId >
< EndToEndId >e84065357fbc47ae833a18b0e76ba832</ EndToEndId >
</ PmtId >
< PmtTpInf >
< SvcLvl >
< Prtry >BACSDD</ Prtry >
</ SvcLvl >
< SeqTp >FRST</ SeqTp >
</ PmtTpInf >
< InstdAmt Ccy = "GBP" >700.00</ InstdAmt >
< DbtrAgt >
< FinInstnId >
< ClrSysMmbId >
< ClrSysId >
< Cd >GBDSC</ Cd >
</ ClrSysId >
< MmbId >040313</ MmbId >
</ ClrSysMmbId >
</ FinInstnId >
</ DbtrAgt >
< Dbtr >
< Nm >Testing Company</ Nm >
</ Dbtr >
< DbtrAcct >
< Id >
< Othr >
< Id >04031300000287</ Id >
< SchmeNm >
< Cd >BBAN</ Cd >
</ SchmeNm >
</ Othr >
</ Id >
< Ccy >GBP</ Ccy >
< Nm >Testing Company</ Nm >
</ DbtrAcct >
</ DrctDbtTxInf >
</ PmtInf >
</ CstmrDrctDbtInitn >
</ Document >
Example of Direct Debit Incoming Collection Notification Response (Acceptance and Rejection)
Acceptance with pain.002 Rejection with pain.002
Copy <? xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
< Document xmlns = "urn:iso:std:iso:20022:tech:xsd:pain.002.001.14" >
< CstmrPmtStsRpt >
< GrpHdr >
< MsgId >68605e51e6ba463a9ecb2cf8ac315a9f</ MsgId >
< CreDtTm >2024-04-20T13:37:00.00Z</ CreDtTm >
</ GrpHdr >
< OrgnlGrpInfAndSts >
< OrgnlMsgId >37b2a633146f4a1495c5002af3127d86</ OrgnlMsgId >
< OrgnlMsgNmId >pain.008.001.11</ OrgnlMsgNmId >
< GrpSts >ACSP</ GrpSts >
</ OrgnlGrpInfAndSts >
< OrgnlPmtInfAndSts >
< OrgnlPmtInfId >A192FA117F8A443F8EEE7AB3738B6840</ OrgnlPmtInfId >
< PmtInfSts >ACSP</ PmtInfSts >
</ OrgnlPmtInfAndSts >
</ CstmrPmtStsRpt >
</ Document >
Copy <? xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
< Document xmlns = "urn:iso:std:iso:20022:tech:xsd:pain.002.001.14" >
< CstmrPmtStsRpt >
< GrpHdr >
< MsgId >68605e51e6ba463a9ecb2cf8ac315a9f</ MsgId >
< CreDtTm >2024-04-20T13:37:00.00Z</ CreDtTm >
</ GrpHdr >
< OrgnlGrpInfAndSts >
< OrgnlMsgId >37b2a633146f4a1495c5002af3127d86</ OrgnlMsgId >
< OrgnlMsgNmId >pain.008.001.11</ OrgnlMsgNmId >
< GrpSts >RJCT</ GrpSts >
< StsRsnInf >
< Rsn >
< Cd >AC04</ Cd >
</ Rsn >
</ StsRsnInf >
</ OrgnlGrpInfAndSts >
< OrgnlPmtInfAndSts >
< OrgnlPmtInfId >A192FA117F8A443F8EEE7AB3738B6840</ OrgnlPmtInfId >
< PmtInfSts >RJCT</ PmtInfSts >
< StsRsnInf >
< Rsn >
< Cd >AC04</ Cd >
</ Rsn >
</ StsRsnInf >
</ OrgnlPmtInfAndSts >
</ CstmrPmtStsRpt >
</ Document >
Example of the Response to invalid pain.002
Copy {
"GrpHdr.MsgId" : "pain002_message_id" ,
"OrgnlMsgInf.MsgId" : "message_id_pain008" ,
"AcceptanceStatus" : "PARTIAL" ,
"Messages" : [
{
"OrgnlPmtInfId" : "payment account servicer reference" ,
"Confirmed" : true
} ,
{
"OrgnlPmtInfId" : "payment account servicer reference" ,
"Confirmed" : false ,
"ErrorInfo" : {
"ErrorCode" : "NOT_FOUND" ,
"ErrorDescription" : "Direct Debit not found"
}
}
]
}
Error codes
Error Code Description DIRECT_DEBIT_INVALID_STATUS
Direct Debit is expected to be in status RECEIVED, but is in status ...
Duplicate payment in file
DIRECT_DEBIT_RESPONSE_PROCESSED
Direct Debit response already processed
DIRECT_DEBIT_FILE_NOT_FOUND
pain.008 message file not found
NO_RIGHTS_TO_DEBTOR_ACCOUNT
User have no rights to debtor account
DIRECT_DEBIT_FILE_INVALID
Payment doesnβt exists in corresponding pain.008 file
Provided reason code is invalid
Direct Debit Reversal Notification
Use case 6: Receive the Direct Debit Reversal Notification
Typical flow
Step Action Description Previously received Direct Debit Collection
Client and LHV have previously received Direct Debit Collection
LHV receive Reversal from the scheme
A Reversal notification is received by LHV from the scheme. Reversal can be initiated up to 6 days after original Direct Debit Collection event. LHV will validate duplicates, account, reversal creation time.
Reversal notification (pain.007) is sent to the client
LHV creates Direct Debit Reversal notification (pain.007) and sends it to the customer. In one file there is information about one Direct Debit.
Next day LHV will credit the PSP account.
Example of Direct Debit Reversal Notification
Copy <? xml version = '1.0' encoding = 'UTF-8' ?>
< Document xmlns = "urn:iso:std:iso:20022:tech:xsd:pain.007.001.11" >
< CstmrPmtRvsl >
< GrpHdr >
< MsgId >664ab8a9313f45f7bda640c7a58c5769</ MsgId >
< CreDtTm >2024-08-01T13:58:55.928+01:00</ CreDtTm >
< NbOfTxs >1</ NbOfTxs >
< CtrlSum >700.03</ CtrlSum >
< GrpRvsl >false</ GrpRvsl >
</ GrpHdr >
< OrgnlGrpInf >
< OrgnlMsgId >267fd3b67eb940c2a4a73d002947c20c</ OrgnlMsgId >
< OrgnlMsgNmId >pain.008.001.11</ OrgnlMsgNmId >
< OrgnlCreDtTm >2024-08-01T13:48:01.413+01:00</ OrgnlCreDtTm >
< RvslRsnInf >
< Rsn >
< Prtry >R</ Prtry >
</ Rsn >
< AddtlInf >Same day reversal item by Bacs</ AddtlInf >
</ RvslRsnInf >
</ OrgnlGrpInf >
< OrgnlPmtInfAndRvsl >
< RvslPmtInfId >484B725E34724A2BBF0E5CEADA6593A9</ RvslPmtInfId >
< OrgnlPmtInfId >F59270913BAF45B6905F2EE6833982E4</ OrgnlPmtInfId >
< OrgnlNbOfTxs >1</ OrgnlNbOfTxs >
< OrgnlCtrlSum >700.03</ OrgnlCtrlSum >
< RvslRsnInf >
< Rsn >
< Prtry >R</ Prtry >
</ Rsn >
< AddtlInf >Same day reversal item by Bacs</ AddtlInf >
</ RvslRsnInf >
</ OrgnlPmtInfAndRvsl >
</ CstmrPmtRvsl >
</ Document >