Examples

Examples of Bacs Direct Debit related flows and messages for typical use cases

Mandate Initiation Request and Response

Use case 1: Receive and confirm the Mandate

Typical flow

Drawing
Receive and accept inbound Bacs DD Mandate
Step
Action
Description

1.

LHV receives new mandate

A new mandates is received by LHV from the scheme on day 2 of Bacs Cycle. LHV will validate duplicates, account, agreement.

2.

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.

3.

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.

4.

Validate the response

LHV will validate mandate, duplicates, account, initiation request, acceptance data. Validation response is send to customer by LHV.

5.

Activate the mandate

On day 3 of the Bacs Cycle, all mandates will be activated. See cut-offs.

Use case 2: Reject the Mandate

Typical flow

Drawing
Receive and reject inbound Bacs DD Mandate
Step
Action
Description

1.

LHV receives new mandate

A new mandates is received by LHV from the scheme on day 2 of Bacs Cycle. LHV will validate duplicates, account, agreement.

2.

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.

3.

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.

4.

Validate the response

LHV will validate mandate, duplicates, account, initiation request, rejection data. Validation response is sent to customer by LHV.

5.

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

<?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)

<?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>

Example of the Confirmation to Mandate Initiation Response (pain.012)

{
  "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"
      }
    }
  ]
}

List of all possible error codes can be found here.

Mandate Cancellation Request

Use case 3: Cancel the mandate

Typical flow

Drawing
Initiate Bacs DD Mandate cancellation
Step
Action
Description

Existing mandate

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

<?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

<?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>

List of all possible error codes can be found here.

Direct Debit Notification and Response

Use case 4: Receive and confirm the Direct Debit notification

Typical flow

Drawing
Receive and accept inbound Bacs DD
Step
Action
Description

1.

Receive and validate Direct Debit

On day 2 of the Bacs cycle LHV receives Direct Debit Collection message

2.

Send DD collection message to client

A DD collection message will be sent to the LHV Customer with pain.008.

3.

Receive Acceptance of the Collection message

Customer accepts that collection with pain.002.

If no response received from the customer then it will be processed as accepted. See cut-offs.

4.

Validate the response

LHV will validate collection, duplicates, account, initiation request, acceptance data. Validation response is sent to customer by LHV.

5.

Debit customer account

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

Drawing
Receive and reject inbound Bacs DD
Step
Action
Description

1.

Receive and validate Direct Debit

On day 2 of the Bacs Cycle LHV receives Direct Debit Collection message

2.

Send DD collection message to client

A DD collections message will be sent to the LHV Customer with pain.008.

3.

Receive Rejection of the Collection message

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.

4.

Validate the response

LHV will validate collection, duplicates, account, initiation request, rejection data. Validation response is sent to customer by LHV.

5.

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.

6.

Scheme Acceptance of the Return

Return is received and accepted by the scheme and credit payment will be initiated.

7.

Debit initial sum on Direct Debit Collection

Client will be debited on day 3 of the Bacs cycle. See cut-offs.

8.

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

<?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)

<?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>

Example of the Confirmation to Direct Debit Collection Notification Response (pain.002)

{
  "GrpHdr.MsgId": "pain002_message_id",
  "OrgnlGrpInfAndSts.OrgnlMsgId": "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"
      }
    }
  ]
}

List of all possible error codes can be found here.

Direct Debit Reversal Notification

Use case 6: Receive the Direct Debit Reversal Notification

Typical flow

Drawing
Receive inbound Bacs DD Reversal
Step
Action
Description

1.

Previously received Direct Debit Collection

Customer and LHV have previously received Direct Debit Collection

2.

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.

3.

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.

4.

Credit PSP account

Next day LHV will credit the PSP account.

Example of Direct Debit Reversal Notification

<?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>

Last updated

Was this helpful?