Configuring SEPA Direct Debit
SEPA for FinDock is an implementation of the Single Euro Payments Area (SEPA) Core Direct Debit scheme. This enables self-managed direct debit collection through banks using pain files generated by FinDock, and reconciling payments by importing camt and N43 files from banks.
Here we go through configuring SEPA Direct Debit, but the SEPA payment extension includes several other payment methods:
- Acceptgiro
- Bollettino Postale
- SEPA Credit Transfer
- SEPA Direct Debit
- OGM-VCS
Pre-requisites
- FinDock is installed and configured.
- You have a contract with a European bank to process SEPA payments
Install SEPA extension
Follow the standard procedure for installing payment processors to add the SEPA for PaymentHub extension and activate the Direct Debit payment method.
Check and assign the required permissions. If you are using custom permission set groups, ensure the package-specific permission sets are assigned.
Adjust mandate settings for SEPA Direct Debit
Mandates are central to the SEPA payment scheme. A mandate is an agreement between the creditor and the debtor whereby the debtor allows the creditor to take money out of the debtor's bank account. You must have an authorized mandate from the payer to be able to collect direct debit payments.
There are several rules governing the use of mandates, including expiration, white listing, blacklisting, constellations, and so forth. Within FinDock, a mandate is a unique ID representing the agreement whereby you, the creditor, have the right to debit a specific bank account.
Please keep in mind that this is the technical representation of a mandate. The SEPA requirements remain for organizations to have a valid mandate based on the SEPA rules. Individual countries may also have additional rules regarding management.
Adjust the Core mandate settings as described below according to your specific SEPA Direct Debit use case.
- Mandate Reference: You can add an org specific prefix to mandate references. The prefix is combined with the Salesforce ID for the SEPA mandate record to create a unique mandate reference ID.
- Reuse existing mandate: You can enable this setting to reuse an existing mandate for a given payer. However, we recommend not reusing mandates to ensure clarity between a payment authorization and the related mandate.
- Auto-create mandates: Enable (check) this setting to make FinDock automatically generate mandates. If disabled, you need a custom workflow for creating the required Mandate records for SEPA Direct Debit payments.
Add SEPA targets
A target in FinDock determines through which bank a transaction is routed for collection. In addition, when importing files for reconciliation, FinDock uses targets to only process bank statements for IBANs that are configured targets.
The payment reference is primarily used in matching incoming transactions to a particular installment. When performing a SEPA direct debit run, the payment reference is used as the End-to-End Id in the PAIN file.
- Launch the FinDock app and click the FinDock Setup tab.
- Go to Payment Processors & Methods.
- Under Installed Processors, click the SEPA processor entry.
- Click Add account.
- Add a name for the new target, select Target PaymentHub SEPA and Type SEPA.
- Complete the settings according to your needs following the guidance below.
- Click Save.
SEPA target details
To make creating targets easier, we recommend gathering the required details before you start creating targets. The following table includes all the settings for a generic SEPA target.
Setting | Description |
---|---|
Name | The name of the target should be something that is recognizable within your organization. This name is not shown outside of your organization, but it is used to distinguish easily among different accounts. |
Target | The payment extension to be used with this target. For SEPA targets, select โPaymentHub SEPA.โ |
Type | This is the SEPA implementation to be used with this target. The type affects which settings are needed for the target. SEPA is for generic SEPA bank accounts, and SEDA is for Italian SEPA bank accounts. |
Associate charges to | Some banks include charges within transactions, especially with direct debit reversals. These charges are stored automatically and matched against a particular account in Salesforce. Either select or create a relevant Salesforce account record to store these charges. Enter the Salesforce Id of the account you selected. You can find the Salesforce Id from your browser navigation bar. |
Bank account addition | This is the BIC or CODA number of the bank handling the SEPA transactions for this target. Example: INGBNL2A |
Bank account number | The IBAN that identifies your account at a specific bank. If the target is for CODA processing, use BBAN. |
Bank identification number | The Generic Account Identification number for alternative bank detection. This is used, for instance, when you have a special contract with your bank. |
CAMT duplication protection | Prevent duplicate camt files from processing (yes/no) |
CAMT message type | For each target, you need to define whether it will be used for importing camt.053 or camt.054 files. Currently it is not possible to process both CAMT.053 and CAMT.054 bank statements for the same target. However, the data created in Salesforce when processing CAMT.054 is equal to CAMT.053. |
CBI Clearing System Member Id | An unique identifier of your organization and uniquely identifies your relationship with CBI Bank. |
Company name | This is the creditor name is the name that appears on the bank statement of your customer or donor. |
Creditor ID | This is the SEPA Creditor ID provided by your bank when you made the direct debit contract. |
GroupHeader - Initiating Party - OrgId | Some banks may have additional requirements for SEPA transactions. To comply with these requirements, you can fill in the Initiating Party details. One option is: GroupHeader โ Initiating Party โ OrgId (text field). The other option is: GroupHeader โ Initiating Party โ SchemeName (picklist โCOREโ | โCUSTโ) If these fields are used, the values are added to the SEPA transactions accordingly. |
GroupHeader - Initiating Party - SchemeName | (See above, GroupHeader - Initiating Party - OrgId) |
Maximum records per file | Your bank may impose limits such as the maximum number of transactions per PAIN file. These are usually included in the contract with your bank. If such a limit exists, enter the value here. Otherwise, leave as is. |
Maximum records per sequence type | Your bank may impose limits on the maximum number of records per sequence type. These are usually included in the contract with your bank. If such a limit exists, enter the value here. Otherwise, leave as is. |
PAIN file validation | When enabled, PAIN files are validated after generation and before uploading to Chatter. Validation of files with a large number of transactions may take a while. |
PAIN.008 - CBI | When enabled, PAIN.008 files are generated according to CBI standards. |
Payslip option | Define here whether you want the payslip to be attached in the original format as a PNG file or both. |
Upload files to Chatter | Set toggle to active if you want the files generated by ProcessingHub to be uploaded to Chatter. In the majority of cases, this should be selected unless you have your own connection with the bank. |
Use latest XML version | Set toggle to active to use the latest supported XML version for ISO20022 PAIN and related file handling. |
Payment reference and sequence type
Every installment created with a SEPA payment method contains a payment reference. The payment reference is primarily used in matching incoming transactions to a particular installment. When performing a SEPA direct debit payment schedule run, the payment reference is used as the End-to-End Id in the generated pain.008 file.
FinDock also automatically inserts the required sequence type for each entry in the pain.008 file. FNAL, FRST, OOFF, RCUR
Type | Use |
---|---|
FNAL | Final payment of recurring direct debit |
FRST | First payment of recurring direct debit |
OOFF | One-off direct debit payment |
RCUR | Regular payment of recurring direct debit |
SEPA and non-EEA countries
ย ย ย sThis enhanced pain.008 support for non-EEA SEPA Direct Debits is enabled automatically with new FinDock installations. If you have an existing installation and would like this enhancement, please contact FinDock Support.
The SEPA Direct Debit Core scheme was updated to take into account the status change of UK banks due to the regulatory impact of Brexit. Collection files (pain.008) now require additional information if the debtor is using a UK bank account. Specifically, the collection files need to include the full address of the debtor and the BIC code of the debtor bank.
This requirement applies to all non-EEA countries. If the IBAN of the payment profile record indicates the debtor is in a non-EEA country, FinDock maps BIC and address fields on the Payment Profile object for pain.008 file creation.
However, FinDock does not validate the values for address fields and only checks that the format of the BIC is valid. You need to separately ensure the fields are correctly filled in for pain.008 compliance.
The following fields on the payment profile need to be populated:
- Street
- Housename Or Number
- Zipcode
- City
- Country
ย ย ย Please be aware that for this collection scenario, the country field on Payment Profile needs to use the Alpha-2 ISO country code (e.g."GB" for United Kingdom) for the pain.008 to be valid.
Payment API
To test your SEPA configuration, you can use the following message to set up a one-time payment, passing a Target
and holderName
& IBAN
parameters to create the mandate.
{
"SuccessURL": "https://www.example.com/success",
"FailureURL": "https://www.example.com/error",
"WebhookURL" : "https://webhook.site/181568ec-8830-4672-af01-8c99da8e044f",
"Payer": {
"Contact": {
"SalesforceFields": {
"FirstName": "Eric",
"LastName": "Johnson",
"Email": "eric@johnson.com"
}
}
},
"OneTime": {
"Amount": "30"
},
"PaymentMethod": {
"Name": "Direct Debit",
"Processor": "PaymentHub-SEPA",
"Target" : "SEPA-Target",
"Parameters" : {
"IBAN" : "NL13TEST0123456789",
"holderName" : "E. Johnson"
}
},
"Settings": {
"SourceConnector": "PaymentHub"
}
}
The following message sets up a recurring payment, passing a Target
and holderName
& IBAN
parameters to create the mandate.
{
"SuccessURL": "https://www.example.com/success",
"FailureURL": "https://www.example.com/error",
"Payer": {
"Contact": {
"SalesforceFields": {
"FirstName": "Eric",
"LastName": "Johnson",
"Email": "eric@johnson.com"
}
}
},
"Recurring": {
"Amount": "25",
"Frequency": "Monthly",
"StartDate": "2020-11-01"
},
"PaymentMethod": {
"Name": "Direct Debit",
"Processor": "PaymentHub-SEPA",
"Target" : "SEPA-Target",
"Parameters" : {
"IBAN" : "NL13TEST0123456789",
"holderName" : "E. Johnson"
}
},
"Settings": {
"SourceConnector": "PaymentHub"
}
}