Configuring SEPA Direct Debit

SEPA for FinDock is an implementation of the Single Euro Payments Area (SEPA) Core Direct Debit scheme for payments in Euros (EUR). 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. The SEPA payment extension includes other payment methods:

Here we go through configuring SEPA Direct Debit.

Multi-merchantMulti-currency
Payment MethodOne-timeRecurringRefunds
SEPA Direct Debit

Prerequisites

  • 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.

  1. Launch the FinDock app and click the FinDock Setup tab.
  2. Go to Payment Processors & Methods.
  3. Under Installed Processors, click the SEPA processor entry.
  4. Click Add account.
  5. Add a name for the new target, select Target PaymentHub SEPA and Type SEPA.
  6. Complete the settings according to your needs following the guidance below.
  7. 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.

SettingDescription
NameThe 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.
TargetThe payment extension to be used with this target. For SEPA targets, select โ€˜PaymentHub SEPA.โ€™
TypeThis 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 toSome 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. Salesforce account Id
Bank account additionThis is the BIC or CODA number of the bank handling the SEPA transactions for this target. Example: INGBNL2A
Bank account numberThe IBAN that identifies your account at a specific bank. If the target is for CODA processing, use BBAN.
Bank identification numberThe Generic Account Identification number for alternative bank detection. This is used, for instance, when you have a special contract with your bank.
CAMT duplication protectionPrevent duplicate camt files from processing (yes/no)
CAMT message typeFor 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 IdAn unique identifier of your organization and uniquely identifies your relationship with CBI Bank.
Company nameThis is the creditor name is the name that appears on the bank statement of your customer or donor.
Creditor IDThis is the SEPA Creditor ID provided by your bank when you made the direct debit contract.
GroupHeader - Initiating Party - OrgIdSome 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 fileYour 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 typeYour 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.
Multi-currency accountSEPA supports Euro payment collection and disbursement for bank accounts that have a SEPA currency other than Euro. Enable this setting if the target is a non-Euro account used for SEPA Direct Debit or Credit Transfer. When enabled, FinDock adds the CCY entity to pain.001 and pain.008 files.
PAIN file validationWhen 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 - CBIWhen enabled, PAIN.008 files are generated according to CBI standards.
Payslip optionDefine here whether you want the payslip to be attached in the original format as a PNG file or both.
Upload files to ChatterSet 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. NOTE: If uploading is disenabled, FinDock does not store the file anywhere in Salesforce.
Use latest XML versionSet 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

TypeUse
FNALFinal payment of recurring direct debit
FRSTFirst payment of recurring direct debit
OOFFOne-off direct debit payment
RCURRegular payment of recurring direct debit

SEPA and non-EEA countries

ย ย ย The 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": "Test",
                "LastName": "Payment",
                "Email": "testpayment@findock.com"
            }
        }
    },
    "OneTime": {
        "Amount": "30"
    },
    "PaymentMethod": {
        "Name": "Direct Debit",
        "Processor": "PaymentHub-SEPA",
        "Target" : "SEPA-Target",
        "Parameters" : {
            "IBAN" : "NL13TEST0123456789",
            "holderName" : "T. Payment"
        }
    },
    "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": "Test",
                "LastName": "Payment",
                "Email": "testpayment@findock.com"

            }
        }
    },

     "Recurring": {
          "Amount": "25",
          "Frequency": "Monthly",
          "StartDate": "2020-11-01"
     },
    "PaymentMethod": {
        "Name": "Direct Debit",
        "Processor": "PaymentHub-SEPA",
        "Target" : "SEPA-Target",
        "Parameters" : {
            "IBAN" : "NL13TEST0123456789",
            "holderName" : "T. Payment"
        }
    },
    "Settings": {
        "SourceConnector": "PaymentHub"
    }
}

Was this page helpful?