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.
Bacs | FinDock | Explanation |
---|---|---|
Direct Debit Instruction (DDI) | Mandate | FinDock stores the payer authorization to collect direct debits as a Mandate record. |
Due date | Due date | The 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. |
Lodgement | Mandate schedule | Registering 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. |
Payer | Donor / customer | The 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 day | Collection date | The 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 file | Collection file | The Standard 18 file that contains the DDI payment instruction(s). |
Payment instruction | Installment | The 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 Day | Processing date | The 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 user | Customer | The Bacs service user is the FinDock customer, i.e. the organization using Salesforce and FinDock to collect direct debits. |
N/A | Signed date | When 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 Status | Installment Status | Transaction Code |
---|---|---|
Presented | Pending | First 01, final 19, otherwise 17 |
Re-presented | Pending recollection | 18 |
Paid | Collected | N/A |
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.
- Payment or mandate schedule run collects and modifies payment data.
- Payment data is sent to ProcessingHub.
- ProcessingHub transforms data into a Standard 18 file.
- ProcessingHub uploads the Standard 18 file to Chatter.
- Standard 18 file is transferred to Bacs service through customer-specific means.
- Bacs service processes payment data and generates reports.
- Incoming Bacs reports are fetched by the customer and uploaded to Chatter.
- ProcessingHub parses Bacs reports and creates Inbound Report records.
- 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.
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:
- Create a mandate schedule as normal.
- Select your Bacs target and a Bacs processing date, and then click Start Generation.
- After the mandate schedule changes to ‘Generated,’ you can open the related list of the mandate schedule to check the selected records.
- 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.
Field | Criterium | Error message |
---|---|---|
Mandate Id | Must be > 6 and < 18 alphanumerical characters. | Mandate Id must be between 6 and 18 characters |
Mandate Id | Non-alphanumeric characters must not be the same. | Mandate Id must not contain only the same character. |
Mandate Id | Should not contain “/” | Mandate Id contains "/" character |
Contact > Last name | Contains at least 2 characters | Last name must contain at least 2 characters |
Contact > First Name | Not empty, not spaces only | First name cannot be empty |
Contact > Address Line | Not empty, not spaces only | Address line cannot be empty |
Contact > City | not empty, not spaces only | City cannot be empty |
Contact > Post code | not empty, not spaces only | Post code cannot be empty |
Payment Profile > Sort code | Length 6 | Sort code must be 6 digits |
Payment Profile > Sort code | Only digits | Sort code can only contain digits 0:9 |
Payment Profile > Account number | Length 8 | Account number must be 8 digits |
Payment Profile > Account number | Only digits | Account number can only contain digits 0:9 |
Target | Must have a Bacs target | Mandate does not contain a valid target |
Status | Allowed values are: “Pending registration” “Pending validation” “Pending update” | Invalid mandate state |
Payment Profile > Holdername | Not empty, not spaces only | Holdername 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:
- Go to the Related tab of the mandate schedule and check for mandates with status Failed.
- Fix issues on the mandates (like add address line to Contact) based on the information in the Last Status Reason field.
- Put status of fixed mandates from status Failed to their previous status (e.g. Pending Registration).
- Go back to the mandate schedule.
- Click the Back to Generated button.
- 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 field | Description |
---|---|
Processing date | This 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 date | This 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 date | The 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 date | This 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:
- An aggregated installment is created with an open amount equal to the sum of the open amounts of the individual installments.
- The payment method of the individual installments is set to Aggregated Installment.
- The individual installments are linked to the aggregated installment.
- 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
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
Criteria
- 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).