NAV Navbar
  • Bacs Direct Debit Indemnity Claims for Paying Banks
  • Bacs Direct Debit Indemnity Claims for Paying Banks

    This tutorial shows you how to create a Bacs Direct Debit Indemnity Claim (DDIC) in the Form3 API as well as how to cancel a DDIC sent in error. We provide an overview of how indemnity claims work in Bacs, followed by a step by step guide on how to send a DDIC using the Form3 API.

    This tutorial focuses on the paying bank side of Bacs and services that are available through the "automated route" of Bacs.

    For more detailed information about Bacs Direct Debit and indemnity claims, please take a look at the Bacs scheme documentation available for members at https://www.bacs.co.uk.

    Bacs Direct Debit Indemnity Claim basics

    The Bacs Direct Debit services comes with the Direct Debit Guarantee, an assurance to Direct Debit users that in case of an error, they can easily reclaim money that has been debited from them. There is no limit on the time between a Direct Debit collection and the reclaim or the amount (other than that is has to match the Direct Debit it's reclaiming).

    Whenever a user notices an error in a Direct Debit collection made from their account, they can request a refund from their bank (the "paying bank" in Bacs terminology). The paying bank should refund the requested amount immediately unless it has significant doubts about the rightfulness of the request.

    If the error has been caused by the paying bank, it has to bear the consequences of that error. In case the error has been caused by the originator of the Direct Debit collection request, the paying bank can issue a Direct Debit Indemnity Claim (DDIC) to reclaim funds from the originator.

    Settlement of a DDIC occurs 14 Bacs working days after the DDIC has been submitted. This involves a debit to the organisation that originated the Direct Debit. For the paying bank, settlement is indicated by the receival of a contra record.

    The diagram below gives an overview of the steps involved in an Indemnity Claim from start to finish:

    Bacs DDIC from a paying bank perspective

    DDIC countermeasures

    A DDIC can generally not be refused by the Direct Debit originator. However, in case a DDIC has obviously been sent in error (e.g. to the wrong originator or with a wrong amount), an originator can challenge a DDIC. This does not happen via the automated channels of Bacs and is therefore outside the scope of Form3 and this tutorial.

    If the paying bank agrees with the challenge or otherwise notices that it has sent the DDIC in error, it can cancel the DDIC up until Bacs day 11 after issuing the claim. If a DDIC is cancelled, no settlement happens.

    In case a Direct Debit originator wants to challenge a DDIC with reason code 2 ("No Advance Notice received by Payer/or the amount quoted is disputed"), it can accept the claim and issue a counter claim. Counter claims, just like claims for "Consequential Loss", are handled outside the automated Bacs services and thus not covered in this tutorial or the Form3 API.

    Indemnity Claims in the Form3 API

    In the Form3 API, Direct Debit Indemnity Claims are represented by the Claim resource. To issue a DDIC, create a Claim resource followed by creating a Claim Submission resource. To cancel a DDIC you have sent, create a Claim Reversal resource followed by creating a Claim Reversal Submission resource.

    The inbound contra record to indicate settlement is represented by a Payment resource and a Payment Admission resource in the API.

    Step by step guide

    In this section, we'll walk you through each step of sending a Direct Debit Indemnity Claim and receiving the payment and contra record using the Form3 API. We'll also cover how to cancel a DDIC that has already been sent.

    Following the guide, you will:

    Prerequisites

    Before getting started, make sure you have the following things ready to follow along:

    Previously received messages

    To be able to raise a Direct Debit Indemnity Claim, you need to have received two things in the past:

    In the Form3 API, a Direct Debit request is represented by a Direct Debit resource and a Direct Debit Admission resource. A Direct Debit Instruction is represented by a Mandate resource. A Direct Debit Instruction can also be received through channels outside the Form3 API, so there's a chance you don't have a Mandate resource for the given instruction.

    Take a look at our tutorials about Direct Debits and Direct Debit Instructions to learn how to receive them via the Form3 API.

    The following table lists the information you need from the Direct Debit request, together with the corresponding attribute in the Direct Debit resource and the example value we're using in this tutorial.

    Field Attribute name Example value
    amount amount 700.00
    date admission_datetime (in Direct Debit Admission) 2019-03-12
    Direct debit originator bank ID beneficiary​_party​.account​_with​.bank​_id 333333
    Direct debit originator account number beneficiary_party.account_number 87654321
    Direct debit originator account name beneficiary_party.account_name Mr Originator
    Direct debit debtor bank ID debtor_party.account​_with​.bank​_id 222222
    Direct debit debtor acccount number debtor_party.account_number 12345678

    You also need a Direct Debit Instruction for the disputed Direct Debit request on your files. The table below shows the required information from the Direct Debit Instruction, together with the attribute in the Mandate resource (in case there is one for the instruction) and the example value used in the tutorial.

    Field Attribute name Example value
    Bacs core reference reference AB/123456
    Bacs Service User Number (SUN) clearing_id 654321

    Sending a Direct Debit Indemnity Claim

    To send a Direct Debit Indemnity Claim, create a Claim resource followed by creating a Claim Submission resource to send the DDIC.

    Creating the Claim resource

    To create a Claim resource, use this API call: POST /v1/transaction/claims

    The body of the resource requires a number of attributes:

    Below is an example of a Claim resource using our examples values:

    Claim resource example

    {
      "data": {
        "id": "82f8895f-a9e7-4e46-a337-a25b31e350bd",
        "organisation_id": "232e2259-62cf-4bba-ba60-7a704e712b15",
        "type": "claims",
        "version": 0,
        "attributes": {
          "beneficiary_party": {
            "account_number": "12345678",
            "bank_id": "222222"
          },
          "clearing_id": "123123",
          "contact_name": "Mr Claim Contact",
          "debtor_party": {
            "account_name": "Mr Originator",
            "account_number": "87654321",
            "bank_id": "333333"
          },
          "disputed_transactions": [
            {
              "amount": "700.00",
              "date": "2019-03-12"
            }
          ],
          "number_of_claims": 1,
          "original_instruction": {
            "clearing_id": "654321",
            "reference": "AB/123456"
          },
          "payment_scheme": "Bacs",
          "reason_code": "1",
          "reference": "DDIC123456789",
        }
      }
    }
    

    Creating the Claim Submission resource

    In order to send the DDIC, create a Claim Submission resource using the following API call: POST v1/transaction/claims/{claim_id}/submissions

    The call requires the ID of the Claim resource in the claim_id URL parameter.

    Receiving the contra record

    Once the Indemnity Claim is submitted, it is processed by Bacs on the following Bacs working day and delivered to the recipient on the Bacs working day after that. Settlement of the claim occurs 14 Bacs working days later through an inbound contra record to the paying bank. This contra record is modelled in the Form3 API as an inbound payment, consisting of a Payment Resource and a Payment Admission resource.

    In case multiple DDICs have been issued on the same Bacs working day, they will be settled together and one cumulative contra record is generated for all DDICs.

    The transaction simulator does not support these transactions as part of a single scenario. See our tutorial on inbound payments to learn how to trigger separate inbound transactions.

    Subscribe to inbound contra events

    You can use Form3's Notification API to be notified when inbound contra record (and payments) arrive. The API allows you to create a subscription for an event type and record type to be notified through a webhook or SQS queue when this event occurs for a type of resource.

    When an inbound contra or payment arrives, Form3 creates a Payment resource and a Payment Admission resource. In order to be notified when this happens, subscribe to the creation of Payment Admission resources using the following parameters:

    See this tutorial to learn how to create a subscription and receive notifications.

    Receiving the contra record

    Contra records appear similar to regular payments, but there are two main characteristics to distinguish them:

    The amount of the contra will be the sum of all disputed transactions in the claim, in our case 700.00. Below is an example of a Payment resource and the corresponding Payment Admission resource for an inbound contra record.

    Payment resource and admission for a contra

     {
      "data": {
        "type": "payments",
        "id": "8b5f27b6-392d-4873-939d-bdf8ebf8a3b7",
        "version": 0,
        "organisation_id": "232e2259-62cf-4bba-ba60-7a704e712b15",
        "attributes": {
          "amount": "700.00",
          "beneficiary_party": {
            "account_number": "12345678",
            "account_number_code": "BBAN",
            "account_with": {
              "bank_address": null,
              "bank_id": "222222",
              "bank_id_code": "GBDSC"
            },
            "address": null
          },
          "clearing_id": "177155",
          "debtor_party": {
            "account_number": "12345678",
            "account_number_code": "BBAN",
            "account_with": {
              "bank_address": null,
              "bank_id": "222222",
              "bank_id_code": "GBDSC"
            },
            "address": null
          },
          "numeric_reference": "0001",
          "scheme_transaction_id": "28503880502823333",
          "unique_scheme_id": "12345678",
          "payment_scheme": "BACS",
          "processing_date": "2019-01-04",
          "scheme_processing_date": "2019-03-29",
          "reference": "              BACS",
          "scheme_payment_type": "Credit"
        },
        "relationships": {
          "payment_submission": {
              "data": []
          },
          "payment_return": {
              "data": []
          },
          "payment_admission": {
            "data": [
              {
                "type": "PaymentAdmission",
                "id": "2786d061-2aab-4d2e-9c1c-63c4922d6133",
                "version": 0,
                "organisation_id": "232e2259-62cf-4bba-ba60-7a704e712b15",
                "attributes": {
                  "status": "confirmed",
                  "scheme_status_code": "",
                  "scheme_status_code_description": "",
                  "status_reason": "accepted",
                  "admission_datetime": "2019-04-01T15:38:12.709Z"
                }
              }
            ]
          },
          "payment_reversal": {
              "data": []
          },
          "payment_recall": {
              "data": []
          },
          "payment_advice": {
              "data": []
          }
        }
      },
      "links": {
        "self": "/v1/transaction/payments",
        "first": "/v1/transaction/payments?page[number]=first",
        "last": "/v1/transaction/payments?page[number]=last"
      }
    }
    

    Cancelling a submitted DDIC

    You can cancel a DDIC in case you notice that you have sent a DDIC in error or it has been challenged by the recipient and you agree with the challenge. To do this, create a Claim Reversal resource and a Claim Reversal Submission resource.

    Creating the Claim Reversal resource

    To create a Claim Reversal resource, use the following API call: POST v1/transaction/claims/{claim_id}/reversals

    Note that the ID of the Claim resource you want to reverse needs to be provided in the claim_id parameter in the URL.

    The body of the Claim Reversal resource requires the orignal_instruction_id attribute. This is the Bacs Sequence Number of the DDIC which can be found in the DDIC submission report. See the API documentation for more information on how to download reports.

    Claim Reversal resource

    "data": {
      "type": "claim_reversals",
      "id": "ef853f00-5676-4c60-a1b7-ed7d81383416",
      "organisation_id": "232e2259-62cf-4bba-ba60-7a704e712b15",
      "attributes": {
        "original_instruction_id": "1234"
      }
    }
    

    Creating the Claim Reversal Submission resource

    In order to send the reversal, create a Claim Reversal Submission resource using the following API call: POST v1/transaction/claims/{claim_id}/reversals/{reversal_id}/submissions

    The call requires the ID of the Claim resource in the claim_id URL parameter as well as the ID of the Claim Reversal resource in the reversal_id parameter.

    Further Reading

    This tutorial explained how to handle Bacs Direct Debit Indemnity Claims in the Form3 API. For more information on using Bacs with Form3, see our other tutorials: