16 Implementing SEPA Payment Processing

Learn how to use Oracle Communications Billing and Revenue Management (BRM) to process Single Euro Payments Area (SEPA) payments.

Topics in this document:

About SEPA Payments

SEPA payments are electronic payment transfers between bank accounts in the euro countries that participate in SEPA.

SEPA defines a common set of standards and rules for any organization or individual making or receiving payments in euro. With SEPA, all bank accounts are uniquely identified by the International Bank Account Number (IBAN), and the banks related to the accounts are uniquely identified by the Business Identifier Code (BIC). These standards improve the ability of consumers to transfer money, for example, from the home bank account to an account in another country that participates in SEPA.

Note:

BRM supports the SEPA specifications in the SEPA Rulebook Version 7.0.

SEPA defines two payment schemes: SEPA Direct Debit and SEPA Credit Transfer. Both SEPA Direct Debit and SEPA Credit Transfer are supported as BRM-initiated payments.

SEPA Direct Debit is a payment transfer that is initiated by the service provider for automated payments from the customer's bank account. This type of payment is commonly used for recurring payments such as automated payments for a monthly subscription charge (can also be used for one-time payments) and requires a pre-authorization (mandate) from the customer.

SEPA Credit Transfer is a payment transfer that is initiated by the service provider to transfer money from the service provider's bank account to the customer's bank account. SEPA Credit Transfer is used to give refunds to customers. The service provider must provide the customer's IBAN and the customer's bank's BIC to initiate the credit transfer.

About Specifying SEPA Payment Information During Account Creation

When you create an account (or when an existing customer purchases a new service) and the customer wants to pay by SEPA Direct Debit, specify SEPA as the payment method.

In addition to the customer's name and address information, your customer must provide a mandate, a pre-authorization form that is signed by your customer, to debit the customer's bank account automatically through SEPA Direct Debit.

SEPA Direct Debit and SEPA Credit Transfer payments are allowed in euro only. When you create an account, the account's primary currency must be euro.

About Registering the Mandate for SEPA Direct Debit Payments

To pay for services by SEPA Direct Debit, your customer must first fill out and sign a mandate (provided by you) to authorize automatic payments from the customer's bank account.

SEPA requires the service provider to send this mandate information with each collection of the SEPA Direct Debit payment. You are also required to retain the mandate (throughout the period when the customer is using SEPA Direct Debit and according to the national legal requirements and its Terms and Conditions) along with any amendments or information concerning its cancellation or lapse with the service provider's bank.

The mandate must include the following information:

  • Your customer's name and address

  • Your customer's IBAN

  • Your customer's bank's BIC

  • Your business name and address

  • Your creditor identification number

  • Type of mandate (recurrent or one-off)

  • Your customer's signature

Your customer service representative (CSR) receives the signed mandate and enters the data into the BRM system by using Billing Care.

A mandate is identified by the unique mandate reference (UMR) number. If a unique mandate reference number is not provided, BRM automatically generates one for the mandate.

In BRM, a mandate is associated with a bill unit and is valid for collection of the payment for this bill unit. If your customer has multiple services associated with different bill units and wants to pay for the different services by SEPA Direct Debit, your customer must provide separate mandates for the collection of payments for each service. If the same mandate is associated with multiple services, it is assumed that your customer has authorized collection of payment for all the services using a single mandate.

For information on the requirements for retaining the paper mandate and any amendments to it, refer to the SEPA Direct Debit Rulebook.

About the Different Types of Mandates

Mandates are of two types: recurrent and one-off.

A recurrent mandate is used to collect multiple bill payments for a bill unit; for example, to collect a recurring monthly service fee. If a recurrent mandate is not used within a 36-month period, it is considered expired; BRM automatically sets the mandate status to Expired.

A one-off mandate is used to collect only one bill payment for a bill unit. For example, your customer pays bills regularly by check or credit card but wants to pay a bill by SEPA Direct Debit. After collection of the one bill payment, the mandate cannot be used to collect other bill payments; BRM automatically sets the mandate status to Expired.

You cannot re-activate a mandate that is expired. A new mandate is required to process any SEPA payment requests.

Managing Customer's SEPA Payment Information

Use Billing Care to change or delete your customer's SEPA payment information.

You can do the following:

  • Change the customer's payment method

    If your customer wants to change from SEPA to a different payment method, you need to register new payment information and associate the customer's services with the new payment information. Your customer's existing SEPA payment method in the BRM database is not changed.

    If your customer wants to change from a different payment method to SEPA, you need to first register the SEPA payment information. For instance, if your customer is currently paying by credit card and wants to pay by SEPA Direct Debit instead, register new payment information that includes the SEPA-related information such as the IBAN, BIC, and the mandate information. Your customer's existing payment information in the BRM database is not changed.

  • Delete the payment method

    When you delete a SEPA payment method, BRM also cancels the mandate that is associated with the payment method and the mandate cannot be used with any future payment requests; a new mandate is required.

    You cannot delete the SEPA payment method if it is associated with a bill unit.

    If the SEPA payment method is associated with a payment request that is pending, BRM cancels the mandate only for future payment requests.

  • Change the mandate information

    To update the creditor information in a mandate, you update the creditor configuration object. See BRM Opcode Guide for more information.

    BRM stores the new mandate information and also keeps a record of the information that is amended and sends both the new and amended information to the bank with the next SEPA payment collection.

Loading Your Creditor Information into the BRM Database

Note:

To update creditor information, see BRM Opcode Guide.

Your creditor information includes your business name and address and the creditor identification number. You load the creditor information into the creditor configuration objects (/config/creditor) in the BRM database (see "Loading Your Creditor Information into the BRM Database").

During account creation, Billing Care or Customer Center retrieves your creditor configuration information from the BRM database.

Creditor information is stored in the /config/creditor object in the BRM database.

To set up and load creditor information:

  1. Open the BRM_home/sys/data/config/config_creditor.xml file in a text editor, where BRM_home is the directory in which the BRM server software is installed.

  2. In the CREDITOR_INFO child element, provide the values listed in Table 16-1.

    Table 16-1 Elements in the CREDITOR_INFO Child Element

    Element Description

    ADDRESS

    Your business street address

    BIC

    Your Business Identifier Code

    CITY

    The city where your business is located

    COUNTRY

    The country where your business is located

    CREDITOR_ID

    Your creditor identification number

    CURRENCY

    Your currency

    IBAN

    Your International Bank Account Number

    NAME

    Your business name

    REF_PARTY

    The name of your reference party

    REF_PARTY_ID_CODE

    The identification code of your reference party

    ZIP

    The postal code where your business is located

  3. Save and close the file.

  4. Run the following command, which loads the contents of the file into the /config/creditor object:

    BRM_home/apps/load_config/load_config -v config_creditor.xml

    The load_config utility validates the contents using the config_creditor.xsd file before loading the data.

    See "load_config" in BRM Developer's Guide for more information about the utility's syntax and parameters.

  5. Read the object by using the robj command with the testnap utility or by using Object Browser in Developer Center to verify that the creditor configurations are loaded.

    See "Using the testnap Utility to Test BRM" in BRM Developer's Guide for general instructions on using the testnap utility.

  6. Stop and restart the Connection Manager (CM).

You can use load_config utility to add new creditor configuration data; it does not overwrite any existing data in the configuration objects. However, to update or delete a creditor configuration object, you need to use opcodes. See "Amending Creditor Information" in BRM Opcode Guide.

Processing SEPA Payments

Processing of SEPA payments includes these tasks:

Creating SEPA Direct Debit Payment Requests

You run the pin_collect utility to create the SEPA Direct Debit payment requests in the BRM database.

The SEPA Direct Debit payment requests record the customer's payment details, such as the amount due and mandate information, and the payment transaction ID.The pin_collect utility retrieves the pending bills for accounts that use the SEPA payment method and calculates the amount due. For each bill unit, it records the payment details in the payment request (/sepa/dd) and sets the payment request status to Pending.

The pin_collect utility does not create a payment request if the mandate for the bill unit is expired. To collect the payment, your customer has to provide a valid mandate or use another payment method.

SEPA Direct Debit payments are applied to the accounts at the time payment requests are created (before payment requests are sent to the bank). If your bank is unable to collect the payment from your customer's bank, you reverse the payment recorded in BRM using the pin_sepa utility (see "Processing SEPA Response XML Files to Handle Failed Payment Transactions").

For more information about the pin_collect utility, see "pin_collect".

Creating SEPA Credit Transfer Payment Requests

You run the pin_mass_refund and the pin_refund utilities to create SEPA Credit Transfer refund requests in the BRM database.

The SEPA Credit Transfer payment requests record the customer's payment details, such as the refund amount and the payment transaction ID.The pin_mass_refund utility aggregates the credit balance for each bill unit for each account and generates refund items for the aggregated credit amount.

The pin_refund utility retrieves the refund items for the accounts that use the SEPA payment method. For each bill unit, it records the payment details in the refund request (/sepa/ct) and sets the refund request status to Pending. You run the pin_refund utility after running the pin_mass_refund utility.

SEPA Credit Transfer refunds are applied to the accounts at the time refund requests are created (before refund requests are sent to the bank). If your bank is unable to process the refund, you reverse the refund recorded in BRM using the pin_sepa utility (see "Processing SEPA Response XML Files to Handle Failed Payment Transactions").

For more information about the pin_mass_refund and pin_refund utilities, see "About Refunds " in BRM Managing Accounts Receivable.

Generating SEPA Request XML Files

You run the pin_sepa utility to generate the SEPA request XML files (see "pin_sepa" for more information about the utility syntax).

Before running pin_sepa, configure the utility to provide the information it requires for generating the SEPA request XML files (see "Configuring the pin_sepa Utility for Generating and Processing SEPA XML Files").

The pin_sepa utility extracts payment details from the SEPA Direct Debit and SEPA Credit Transfer payment requests (created by the pin_collect and pin_refund utilities), which are in Pending status, from the BRM database into SEPA request XML files. All the payment transactions belonging to the same creditor are grouped in one file. The number of payment transactions in a file is configurable by using the infranet.threadpool.fetchsize entry in the Infranet.properties file for pin_sepa.

You must manually send the SEPA request XML files to your bank for collection of the payments (see "Sending the SEPA Request XML Files to Your Bank to Collect Payment").

After the SEPA request XML files are generated, BRM considers the payment as successful and changes the status of the payment requests to Requested. The payment requests remain in Requested status unless the payment is reversed for any reason.

Note:

  • The SEPA request XML files cannot be regenerated. You must ensure the files are protected from accidental loss or corruption.

  • The SEPA request XML files contain sensitive customer data. You must ensure the files are protected from unauthorized access.

For more information on security, see BRM Security Guide.

By default, the pin_sepa utility is not included in the pin_bill_day billing script. You can either add it to the daily billing script or run it separately; however, Oracle recommends to run pin_sepa daily for SEPA payment collection. You can run the pin_sepa utility manually or as a cron job that runs at specified times.

Sending the SEPA Request XML Files to Your Bank to Collect Payment

The SEPA request XML files are stored in the directory that you specify in the Infranet.properties file until they are delivered to your bank for collection of payment. You must manually send the files to your bank or payment processing center: BRM does not send the files.

After sending the files, ensure the files were successfully delivered to your bank. Potential revenue loss can occur if the SEPA request XML files that are generated in BRM are not received by your bank for processing.

Processing SEPA Response XML Files to Handle Failed Payment Transactions

Your bank sends back the SEPA response XML files with the payment transactions that are rejected. Your bank may reject a SEPA payment or refund request for reasons such as the following:

  • The payment or refund request contains an invalid IBAN or BIC.

  • The payment request contains an invalid or incorrect mandate.

  • The customer's bank account has insufficient funds to process the payment.

SEPA Direct Debit payments and SEPA Credit Transfer refunds are applied to the accounts in BRM at the time payment requests are created. Therefore, any payment transactions that are rejected by the bank needs to be reversed in BRM.

The SEPA response XML file indicates a status at the group level, payment-information level, and transaction level.

If the group-level status is Reject, all the payment transactions in the response file are rejected.

If the payment-information-level status is Reject, all the payment transactions in the payment information are rejected.

If the transaction-level status is Reject, only the payment for this transaction is rejected.

You run pin_sepa utility to process the rejected payments in the SEPA response file (see "pin_sepa" for more information about the utility syntax). The utility automatically initiates the payment reversal in BRM. Using the payment transaction ID, BRM locates the corresponding SEPA payment request in the database and changes the status of the payment request to Reject.

Reversing an Erroneous Payment Collection

An erroneous or duplicate payment occurs when your customer is billed twice for the same charge. The payment is recorded in BRM, and the payment transaction is successfully completed by the bank.

Unlike a payment reversal that occurs when a payment is rejected by the bank, duplicate payment reversals are not initiated by BRM.

After the payment reversal requests are created, you run the pin_sepa utility to generate the SEPA reversal request XML files (see "pin_sepa" for more information about the utility syntax). The pin_sepa utility extracts the payment details from the payment reversal requests, which are in Pending status, from the BRM database into SEPA reversal request XML files.

After the SEPA reversal request XML files are generated, BRM considers the payment reversal as successful and changes the status of the payment reversal requests to Requested.

You must manually send the SEPA reversal request files to your bank to reverse the charges from the customer's bank account.

Using SEPA XML Messages to Exchange Customer's Payment Information

For SEPA compliance, banks are required to use SEPA ISO20022 XML messages to exchange customer's payment information.

BRM supports the following ISO20022 XML messages:

For SEPA Credit Transfer:

  • Customer Credit Transfer Initiation (pain.001.001.03): This message transports the customer-to-bank credit transfer information sent by the customer (originator) to the customer's bank.

  • Customer Payment Status Report (pain.002.001.03): This message transports the credit transfer reject instruction between the bank and its remitting customer.

For SEPA Direct Debit:

  • Customer Direct Debit Initiation (pain.008.001.02): This message transports the direct debit collection instruction from the creditor to the creditor's bank.

  • Customer to Bank Payment Reversal (pain.007.001.02): This message transports the customer-to-bank reversal instruction for a collection sent by the creditor to the creditor's bank.

  • Bank to Customer Payment Status Report (pain.002.001.03): This message transports the direct debit reject instruction between the bank and its remitting customer.

You and your bank must use this version of ISO20022 XML message to ensure the messages sent and received are interpreted correctly.

The SEPA request and response XML files must comply with the XML schema definitions (XSD) that are provided in BRM.

Before processing a SEPA response file, BRM validates the contents using the XSD. BRM cannot process a response file that uses a different XSD.

Configuring the pin_sepa Utility for Generating and Processing SEPA XML Files

You use the pin_sepa utility to generate the SEPA request XML files and to process SEPA response XML files.

Before running the pin_sepa utility, you must edit the utility's Infranet.properties file to include the information that it requires to generate and process SEPA request and response XML files.

To configure the Infranet.properties file:

  1. Open the BRM_home/apps/pin_sepa/Infranet.properties file in a text editor.

  2. Provide the values listed in Table 16-2.

    The Infranet.properties file for the pin_sepa utility includes standard configuration entries. See "Using Configuration Files to Connect and Configure Components" in BRM System Administrator's Guide for more information.

    Table 16-2 pin_sepa Infranet.properties Configuration Entries

    Entry Description

    infranet.connection

    Specifies the connection information to connect to the BRM database.

    infranet.login.type

    Specifies if a login name and password is required to connect to the BRM database. The default is 1.

    infranet.log.level

    Specifies the error reporting level. The default is 1.

    • 0: no logging

    • 1: log error messages only

    • 2: log error messages and warnings

    • 3: log error, warning, and debugging messages.

    infranet.log.file

    Specifies the file name used to log errors. The default is pin_sepa.pinlog.

    infranet.threadpool.size

    Specifies the number of threads. The default is 3.

    infranet.threadpool.maxsize

    Specifies the maximum number of threads. The default is 5.

    infranet.threadpool.fetchsize

    Specifies the number of records fetched from the BRM database and assigned to a thread at one point of time.

    This entry also controls the maximum number of payment transactions that can be in a SEPA request XML file. The default is 100.

    infranet.sepa_dd_req_dir.path

    Specifies the directory path to the SEPA Direct Debit request XML files. The default directory is BRM_home/apps/pin_sepa/sepa_dd.

    If you change the default directory path, you must create the new directory where you want to store the files before running pin_sepa.

    infranet.sepa_ct_req_dir.path

    Specifies the directory path to the SEPA Credit Transfer request XML files. The default directory is BRM_home/apps/pin_sepa/sepa_ct.

    If you change the default directory path, you must create the new directory where you want to store the files before running pin_sepa.

    infranet.sepa_rev_req_dir.path

    Specifies the directory path to the SEPA Direct Debit reversal request XML files. The default directory is BRM_home/apps/pin_sepa/sepa_rev.

    If you change the default directory path, you must create the new directory where you want to store the files before running pin_sepa.

    infranet.sepa_resp_dir.path

    Specifies the directory path to the SEPA Direct Debit, Credit Transfer, and Direct Debit reversal response XML files. The default directory is BRM_home/apps/pin_sepa/sepa_resp/input.

    If you change the default directory path, you must create the new directory where you want to store the files before running pin_sepa.

    The utility reads all the files in the directory for processing. Hence, it recommended to store only response XML files in this directory.

    infranet.sepa.sddrequest.ReqdColltnDt.pattern

    Specifies the date pattern for the SEPA Direct Debit request.

    infranet.sepa.sddrequest.ReqdColltnDt.value

    Specifies the date on which to collect the money from the customer.

    infranet.sepa.sddrequest.InitgPty.Nm

    Specifies the name of the party initiating the SEPA Direct Debit request.

    infranet.sepa.sddrequest.InitgPty.OrgId

    Specifies the ID of the party initiating the SEPA Direct Debit request.

    infranet.sepa.sddrequest.PmtInf.PmtMtd

    Specifies the SEPA Direct Debit payment method.

    This entry must be set to DD.

    infranet.sepa.sddrequest.InstrPrty

    Specifies the instruction priority for the SEPA Direct Debit request. The default is NORM.

    infranet.sepa.sddrequest.ChrgBr

    Specifies the party who will pay for the charges. The default is SLEV.

    According to the SEPA Rulebook, the only value allowed for this entry is SLEV.

    infranet.sepa.sddrequest.PmtTpInf.LclInstrm

    Specifies the Local instrument code for SEPA Direct Debit request. The default is CORE.

    • CORE: Core Scheme

    • B2B: Business to Business Scheme

    infranet.sepa.sddrequest.PmtTpInf.SvcLvl

    Specifies the service level for the SEPA Direct Debit request. The default is SEPA.

    infranet.sepa.sctrequest.PmtInf.PmtMtd

    Specifies the SEPA Credit Transfer payment method.

    This entry must be set to TRF.

    infranet.sepa.sctrequest.ReqdExctnDt.pattern

    Specifies the date pattern for the SEPA Credit Transfer request.

    infranet.sepa.sctrequest.ReqdExctnDt.value

    Specifies the date on which to credit the money to customer account.

    infranet.sepa.sctrequest.InstrPrty

    Specifies the instruction priority for SEPA Credit Transfer request. The default is NORM.

    infranet.sepa.sctrequest.ChrgBr

    Specifies the party who will pay for the charges. The default is SLEV.According to the SEPA Rulebook, the only value allowed for this entry is SLEV.

    infranet.sepa.sctrequest.InitgPty.Nm

    Specifies the name of the party initiating the SEPA Credit Transfer request.

    infranet.sepa.sctrequest.InitgPty.OrgId

    Specifies the ID of the party initiating the SEPA Credit Transfer request.

    infranet.sepa.sctrequest.PmtTpInf.LclInstrm

    Specifies the Local instrument code for SEPA Credit Transfer request. The default is CORE.

    • CORE: Core Scheme

    • B2B: Business to Business Scheme

    infranet.sepa.sctrequest.PmtTpInf.SvcLvl

    Specifies the service level for the SEPA Credit Transfer request. The default is SEPA.

    infranet.sepa.sddreversal.InitgPty.Nm

    Specifies the name of the party initiating the SEPA Direct Debit Reversal request.

    infranet.sepa.sddreversal.InitgPty.OrgId

    Specifies the ID of the party initiating the SEPA Direct Debit Reversal request.

  3. Save and close the file.