Skip to main content

Using Bacs Manual

FinDock supports collecting one-time and recurring direct debit payments in the UK using Bacs Direct Debit.

Bacs Manual is a self-managed setup where FinDock generates Standard 18 files for lodgement and collection, as well as processes incoming Bacs reports.

Compliance with Bacs rules and file transfer with the Bacs system is handled by your organization using Bacstel-IP software or some other Bacs service arrangement.

Bacs vs. FinDock terminology

When using FinDock to collect Bacs Direct Debit payments, it’s important to keep in mind Bacs terminology and how it relates to FinDock concepts. The following table highlights some key differences.

Direct Debit Instruction (DDI)MandateFinDock stores the payer authorization to collect direct debits as a Mandate record.
Due dateDue dateThe collection due date is communicated to the payer during the DDI sign up and/or in the advance notice. In FinDock, this term has a different meaning. Installment records have a due date that is populated through different means depending on the context (e.g. recurring opportunity, one-time direct debit, etc.). This field is only used by FinDock internally in the installment selection process when running payment schedules.
LodgementMandate scheduleRegistering a new DDI is handled through the Bacs lodgement cycle. FinDock uses mandate schedules to collect the necessary information and generate the file required for registering new DDIs.
PayerDonor / customerThe party whose account will be debited.
Payment Service Provider (PSP)Payment Service Provider (PSP)In the Bacs context, PSP refers to banks or building societies that carry out specific roles in the Bacs scheme, such as “sponsoring PSP” and “paying PSP.” FinDock uses PSP to generally mean any institution that can process payments.
Payment dayCollection dateThe payment day (the date that the Bacs service debits the payer’s account and credits your account) is equivalent to the collection date of the payment schedule.
Payment fileCollection fileThe Standard 18 file that contains the DDI payment instruction(s).
Payment instructionInstallmentThe payment instruction is handled as a DDI transaction in the Bacs scheme. Each individual direct debit payment instruction is an installment in FinDock. Further, FinDock uses status on installments to represent different Bacs payment states.
Processing DayProcessing dateThe Processing Date on payment schedules represents the target Processing Day (Day 2) of a Bacs payment cycle. A processing date is required in Standard 18 files regardless of whether the file contains payment instructions or new DDIs for registration.
Service userCustomerThe Bacs service user is the FinDock customer, i.e. the organization using Salesforce and FinDock to collect direct debits.
N/ASigned dateWhen a mandate record is created, FinDock adds 1 day to calculate the signed date. The mandate does not become active until it is picked up by a mandate schedule that is successfully closed, or if an ADDACS report with reason code R is received.

Installment status and transaction codes

FinDock uses different status values for Installment records. While there is no technical mapping per se, the following table outlines the basic correlation between Bacs payment status and FinDock Installment status. The table also indicates which transaction code is used when installments with the given status are added to a Standard 18 collection file.

Bacs StatusInstallment StatusTransaction Code
PresentedPendingFirst 01, final 19, otherwise 17
Re-presentedPending recollection18

Self-managed Bacs file handling overview

Whether you are running a mandate schedule to register new DDIs or a payment schedule to process payment instructions, the overall process in FinDock is the same, as illustrated below.

Overview of Bacs Manual data flow

  1. Payment or mandate schedule run collects and modifies payment data.
  2. Payment data is sent to ProcessingHub.
  3. ProcessingHub transforms data into a Standard 18 file.
  4. ProcessingHub uploads the Standard 18 file to Chatter.
  5. Standard 18 file is transferred to Bacs service through customer-specific means.
  6. Bacs service processes payment data and generates reports.
  7. Incoming Bacs reports are fetched by the customer and uploaded to Chatter.
  8. ProcessingHub parses Bacs reports and creates Inbound Report records.
  9. Inbound reports are matched and reconciled using Guided Matching rules.

New payer signup

A new payer is defined by a Contact (or Account) record and related unique Payment Profile record. When a new payer is added to Salesforce, FinDock automatically creates a mandate record. For Bacs Manual, FinDock creates an 18-character Mandate Id. The new record is assigned the status Pending Registration.

Sort code and account check

For Bacs Direct Debit payments initiated through the FinDock Payment API, FinDock performs a sort code & bank account check to avoid failed payments due to incorrect code or account values. The checking is done automatically, and the result is included in the synchronous response of the paymentIntent API call. If you are using your own payment form/page design, your need to ensure errors are handled gracefully invalid information is entered.

In addition to the automated API check, you can use the FinDock Lightning component Check Sort Code and Bank Account to do the same validation when manually entering payment information. The component appears on payment profiles with UK bank accounts, but it is not visible for other payment profiles. To validate a sort code and bank account, just click the Validate button on the component.

Sort code and account check validation component

Lodge new DDIs

The DDI lodgment process is fulfilled using mandate schedules. The mandate schedule process creates the appropriate file and uploads the file to Chatter for manual transfer according to your Bacs setup.

Mandate records with Pending Cancellation or Pending Update are also picked up by the mandate schedule for processing, in addition to records with status Pending Registration.


While you can cancel or update a DDI if a payer contacts you directly, it is recommended to request the payer to contact their bank instead. The new DDI information will then come to you through the normal Bacs report process.

To create a new DDI registration file:

  1. Create a mandate schedule as normal.
  2. Select your Bacs target and a Bacs processing date, and then click Start Generation.
  3. After the mandate schedule changes to ‘Generated,’ you can open the related list of the mandate schedule to check the selected records.
  4. Use the Mandate Schedule Path to finish processing the schedule.

When the schedule reaches Generated, the automatic mandate validation starts. FinDock checks if the selected mandates are complete according to the criteria outlined in the following table.

FieldCriteriumError message
Mandate IdMust be > 6 and \< 18 alphanumerical characters.Mandate Id must be between 6 and 18 characters
Mandate IdNon-alphanumeric characters must not be the same.Mandate Id must not contain only the same character.
Mandate IdShould not contain “/”Mandate Id contains "/" character
Contact > Last nameContains at least 3 charactersLast name must contain at least 3 characters
Contact > First NameNot empty, not spaces onlyFirst name cannot be empty
Contact > Address LineNot empty, not spaces onlyAddress line cannot be empty
Contact > Citynot empty, not spaces onlyCity cannot be empty
Contact > Post codenot empty, not spaces onlyPost code cannot be empty
Payment Profile > Sort codeLength 6Sort code must be 6 digits
Payment Profile > Sort codeOnly digitsSort code can only contain digits 0:9
Payment Profile > Account numberLength 8Account number must be 8 digits
Payment Profile > Account numberOnly digitsAccount number can only contain digits 0:9
TargetMust have a Bacs targetMandate does not contain a valid target
StatusAllowed values are: “Pending registration” “Pending validation” “Pending update”Invalid mandate state
Payment Profile > HoldernameNot empty, not spaces onlyHoldername cannot be empty

If a mandate fails validation, the status of the mandate is set to Failed and the error(s) is added to the Last Status Reason field on the mandate.

You can check and fix failed mandates as follows:

  1. Go to the Related tab of the mandate schedule and check for mandates with status Failed.
  2. Fix issues on the mandates (like add address line to Contact) based on the information in the Last Status Reason field.
  3. Put status of fixed mandates from status Failed to their previous status (e.g. Pending Registration).
  4. Go back to the mandate schedule.
  5. Click the Back to Generated button.
  6. Click the Start Validate & Processing button again. If no errors are found, FinDock automatically progresses to the file creation stage.

Transmit registration file and process reports

After you have completed the validation stage, use the mandate schedule path to move to the processing stage. This initiates a process which creates the registration file. The Standard 18 file is uploaded to your file transfer Chatter group (and linked to related objects if configured). ProcessingHub also creates a PaymentHub File record to track the status of the generated file.

The mandate schedule, in turn, is updated to Pending Verification. Download the file from Chatter and transfer it to the Bacs service. If the file is accepted, you can use the mandate schedule path to change the status to Verified.

Please refer to Processing Bacs reports for a complete overview of reports that you may receive confirming or rejecting DDI records. When you upload these reports to your file transfer Chatter group, ProcessingHub automatically picks them up and carries out certain actions. Some actions may require manual intervention.

Once all actions are taken and the mandate records are active (or cancelled), you can go back to the associated mandate schedule and click File Accepted next to the schedule path. This moves the schedule to Done, and FinDock sets the related mandates to active.

Advance notice and cooling-off periods

When a mandate schedule is closed, the related mandate records are set to active. This means they are technically valid and can be used to collect payments. However, it takes 3-4 days for DDIs to be lodged at paying PSPs. In addition, there is the mandate Bacs advance notice requirements and possibly your own cooling-off period to take into account before the first payment is collected on a newly activated mandate.

Salesforce has a range of tools available for handling Bacs-related communications and for controlling or modifying specific data to ensure correct timing of Bacs payment instructions. The collection files for those payment instructions are created using FinDock payment schedules, as explained in the following sections.

Collect Bacs Direct Debit payments

FinDock uses payment schedules to create the collection files needed to instruct banks to collect direct debit payments. The collection file is automatically uploaded to Chatter for you to transfer to the Bacs service.

Setting up payment schedules requires careful attention to dates. Whether you are running individual schedules manually or setting up recurring schedules and automated collection, each individual payment schedule has four essential dates that you need to define in a way that best fits your Bacs Direct Debit arrangements.

Payment schedule fieldDescription
Processing dateThis is the target Day 2 of the Bacs collection cycle (Processing Day). It is required in the generated Standard 18 file format and also plays a role in Bacs report processing.
Collection dateThis is the target payment date when the payer’s account is debited and your account is credited. Typically this is the processing date + 1 day. If the payment schedule is missing a processing date, FinDock falls back to the collection date and uses that in the generated Standard 18 file.
Selection dateThe selection date tells FinDock which installments should be included in the payment schedule. Open installments with a due date on or before the selection date are included.
Run dateThis is the date the schedule process runs and normally the day that the generated Standard 18 file is ready to be transferred to the Bacs service. In practice, the run date can be considered Day 1 of the Bacs collection cycle (Input Day).

Installment aggregation

If more than one installment in a given payment schedule run has the same mandate, FinDock automatically combines the installments into a single aggregated installment in the collection file. Installments for the same mandate with status Pending Recollection are ignored in the aggregation process.

After a payment schedule run for a Bacs target has generated and/or selected installments that meet the schedule’s criteria, FinDock checks if there are installments with the same mandate-date combination.

If such installments are found:

  1. An aggregated installment is created with an open amount equal to the sum of the open amounts of the individual installments.
  2. The payment method of the individual installments is set to Aggregated Installment.
  3. The individual installments are linked to the aggregated installment.
  4. The original installments are removed from the payment schedule.

If a payment is received for the aggregated installment, it is split and distributed across the original individual installments. Both the aggregated installment and linked individual installments are set to Collected, and all open amounts are set to zero. In addition, a corresponding negative payment is created for the aggregated installment to keep the sum of all payments equal to the actual direct debit payment amount.

If an aggregated installment is reversed, a negative payment is created and distributed across the original individual installments. The status of these installments is set to Reversed, and the open amount is set to the original value.

The payment method of the original installments is set back to direct debit, allowing them to be recollected. The positive payment for the Aggregated Installment is created in order to keep the sum of all payments equal to the actual money flow.

Important notes

  • Keep in mind when confirming the direct debit to the customer or donor that you mention the total amount rather than the amount of the single transaction.
  • In order to keep your reports in line with actual expected and/or realized cash flow, exclude aggregated installments from your reports. Use the field paybacs__IsAggregated__c to filter out installments that are aggregated installments.
  • For the same reporting reasons, NPSP Opportunities are not created for an aggregated installment.

Send collection file and process reports

As with DDI registration files, once a collection file is transferred to the Bacs service, you may receive Bacs reports that need to be handled promptly. Please refer to Bacs reports actions and follow-up for further information. ProcessingHub automatically processes new reports that you upload to Chatter.


Refunds are not part of the technical transactions of the Bacs scheme. However, payer indemnity is permanent, so a refund can be requested at any time. This happens between the payer and the paying PSP (the payer’s bank).

If an indemnity claim process results in refunded payments, the paying PSP will issue you a Direct Debit Indemnity Claim (DDIC) report which FinDock automatically processes as explained in Processing Bacs reports.

If a payer requests a refund from you directly and you choose to refund the payer outside the Bacs process, you should manually update the associated record(s) in FinDock accordingly.

Example schedule setup


  • Notification period (first payment collection lead time): 14 days
  • Collection dates: 1st and 15the of each month

Recurring donations

  • Build customization to add 14 days to Start Date on new recurring donations

One-time donation

  • Build customization to add 14 days to Due Date

Mandate schedule

  • Recommend running daily
  • If new donations are low from week to week, consider running on certain days of the week to reduce empty schedule results
  • Use auto-create to automate mandate schedule runs

Payment schedule

  • Selection date: 1 and 15 of each month
  • Processing date: preceding Bacs processing day to collection date according to Bacs calendar
  • Collection date: equal to selection date
  • Frequency/automation: run dates need to be at least one day prior to processing date, assuming the Standard 18 file is submitted to the Bacs network on same day; an easy option would be to run twice a month e.g. 8 (for collection on the 15th) and 22 (for collections on the 1st).