Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Wiki Markup
{table-plus:width=665|enableSorting=false}































*Document Logs*
*Change log:*
|| *Date:* || *Author:* || *Version:* || *Changes:* || Completed || Ext. || Int. || Is in Core ||
| {page-info:created-date|dateFormat=dd MMMM yyyy} | {page-info:created-user} | 0.1 | Doc. created | SI | | | |
| 17 July 2013 \\ | Anders Jørgensen \\ | 0.2 \\ | Update allowed values of the STATUS_ID column in SEPA_INCOMING_RECORD table \\ | | | | |
| 23 July 2013 | Esau Castillo | 0.3 | Updated the Diagrams due to engine refactor | | | | |
| 05 September 2013 | Esau Castillo | 0.4 | Updated the datatype of the END_TO_END_ID column | | | | |

*Terms and definitions:*
|| Terms/definitions: || Meaning: ||
| TBD | To be defined |
| N/A | Not applicable |
| CSI | Creditor Scheme Identification |
| DDT | Direct Debit Transaction |
| CTT | Credit Transfer Transaction |
| SEPA | Single Euro Payment Area |
| pain.002 | Process Incoming Payment Initiation file \\ |
| camt.054 \\ | The Cash Management file \\ |

{attachments:patterns=.*pdf,.*xsd,.*zip}




























































h2. 1 - Purpose of Document
The purpose of this document is to provide an overview of the functionality and implementation of the SEPA Payment Engines.































h2. 2 - Introduction to Functionality
The objective of SEPA is to provide standards for Euro payments. All  payments under this regulation are to be considered domestic  transactions and enable users to make payment transactions in Euro from a  single bank account within the SEPA area. SEPA offers a set of instruments to process these payment transactions (SEPA Credit Transfers and SEPA Direct Debits) in an easy and secure way.



































h2. 3 - Architecture and Design
All the payment transactios are XML based. In order to support the XML file generation and XML processing (reading) two Engines will be implemented: 
* SEPA Generator: This engine will read the information from the SEPA Payment table and create the SEPA XML file depending on the payment type (Direct Debit or Credit Transfer).

* SEPA Reader: This engine will read the incoming SEPA XML and update the corresponding SEPA tables. The two incoming files are: Cash Management (camt.054) and Process Incoming Payment Initiation (pain.002).

It is important to notice that the standard [Customers:FTP Engine] will transfer the xml files from the outgoing folders to the remote server and the incoming files from the remote server.















































































































h3. 3.1 - Object Model
The following diagram presents the main classes of the SEPA Generator:

{gliffy:name=UML SEPA Generator|version=12}
The following diagram represents the main classes of the SEPA Reader:
{gliffy:name=UML SEPA Reader|version=3}






















































































































h3. 3.2 - Data Model
The SEPA Engines use specific tables to retrieve and store information. The following ER diagram shows the relationship between the tables of the SEPA Generator Engine:

1 - Purpose of Document

The purpose of this document is to provide an overview of the functionality and implementation of the SEPA Payment Engines.

2 - Introduction to Functionality

The objective of SEPA is to provide standards for Euro payments. All payments under this regulation are to be considered domestic transactions and enable users to make payment transactions in Euro from a single bank account within the SEPA area. SEPA offers a set of instruments to process these payment transactions (SEPA Credit Transfers and SEPA Direct Debits) in an easy and secure way.

3 - Architecture and Design

All the payment transactions are XML based. In order to support the XML file generation and XML processing (reading) two Engines will be implemented:

  • SEPA Generator: This engine will read the information from the SEPA Payment table and create the SEPA XML file depending on the payment type (Direct Debit or Credit Transfer).
  • SEPA Reader: This engine will read the incoming SEPA XML and update the corresponding SEPA tables. The two incoming files are: Cash Management (camt.054) and Process Incoming Payment Initiation (pain.002).

It is important to notice that the standard FTP Engine will transfer the xml files from the outgoing folders to the remote server and the incoming files from the remote server.

3.1 - Object Model

The following diagram presents the main classes of the SEPA Generator:

Wiki Markup
{gliffy:name=UML SEPA Generator|version=12}

The following diagram represents the main classes of the SEPA Reader:

Wiki Markup
{gliffy:name=UML SEPA Reader|version=3}

3.2 - Data Model

The SEPA Engines use specific tables to retrieve and store information. The following ER diagram shows the relationship between the tables of the SEPA Generator Engine:

Wiki Markup
{gliffy:name=ER SEPA Generator Tables|version=3}
|| Table Name || Description ||
| SEPA_PAYMENT | This is the table used by the SEPA Generator Engine to create the SEPA XML files. Contains information for the XML header section like Create date, number of transactions, etc. |
| SEPA_PAYMENT_INFO | Contains information related to the payment: Creditor Info / Debitor Info depending on the type of transaction. |
|  Tables|version=3}

Table Name

Description

SEPA_PAYMENT

This is the table used by the SEPA Generator Engine to create the SEPA XML files. Contains information for the XML header section like Create date, number of transactions, etc.

SEPA_PAYMENT_INFO

Contains information related to the payment: Creditor Info / Debitor Info depending on the type of transaction.

SEPA_PAYMENT_TRANS_INFO

...

Contains

...

information

...

specific

...

to

...

the

...

individual

...

transactions.

...

 

3.2.1 - SEPA_PAYMENT Table

...

Name

Type

Description

Mandatory

ID

NUMBER

 

Autogenerated

TYPE

NUMBER

Indicates the type of incoming file. The possible values are: 2 = SEPA_PAIN and 3 = SEPA_CASH

YES

LOADED_DATE

DATE

The date when the file was loaded.

YES

ORIG_MSG_ID

NUMBER

The original ID of the SEPA_PAYMENT table provided by the pain.002 files. This information is taken from the element: <OrgnlGrpInfAndSts><OrgnlMsgId>

NO

FILE_NAME

VARCHAR(200)

The incoming file name.

YES

RCPT_NAME

VARCHAR(140)

The recipient name. This field is only used by camt.054 files. The information is taken from the element: <GrpHdr><MsgRcpt><Nm>

NO

CREATION_DATE

DATE

Date when the file was created. This field is only used by camt.054 files. The information is taken from the element: <GrpHdr><CreDtTm>

NO

MSG_ID

VARCHAR(35)

The id generated for the incoming file. This information taken from the element: <GrpHdr><MsgId>. Applies to both camt.054 and pain.002

NO

...

Name

Type

Description

Mandatory

ID

NUMBER

 

Autogenerated

SEPA_INCOMING_FILE_ID

NUMBER

Reference to the SEPA_INCOMING_FILE table.

YES

TYPE

NUMBER

The type of record. Several scenarios determinte the type: 1  =  Direct Debit Rejection, 2 = Manual Payment, 3 = Direct Debit Confirmation,
4 = Refund Rejection, 5 = Refund Confirmation.

NO

STATUS_ID

NUMBER

The stauts of the incoming record. The following values are allowed:
0 = New
1 = Processing
2 = Completed
3 = Error
4 = Error Duplicate Rejection
5 = Fatal Error
6 = Manual Handling
7 = Resend Payment
8 = Reprocessing Completed

YES

STATUS_COMMENT

VARCHAR(4000)

Field to insert comments.

NO

END_TO_END_ID

VARCHAR(50)

The End to End Id provided in the file. This field might match the END_TO_END_ID from the SEPA_PAYMENT_TRANS_INFO table.

  • pain.002: <OrgnlPmtInfAndSts><TxInfAndSts><OrgnlEndToEndId>
  • camt.054: <Ntry><NtryDtls><TxDtls><Refs><EndToEndId>

NO

MANDATE_ID

VARCHAR(35)

The mandate Id.

  • pain.002: <OrgnlPmtInfAndSts><TxInfAndSts><OrgnlTxRef><MndtRltdInf><MndtId>
  • camt.054: <Ntry><NtryDtls><TxDtls><MndtId>

NO

ACCOUNT_ID

VARCHAR(34)

Account ID provided by the camt.054 file. This field might be the IBAN or other value. The information is taken either from element: <Ntfctn><Acct><Id><IBAN> or <Ntfctn><Acct><Id><Othr><Id>

NO

FINANTIAL_INST_BIC

VARCHAR(11)

The Finantial Institution BIC. This field is only used by the camt.054 files. The information is taken from the element: <Ntfctn><Acct><Svcr><FinInstnId><BICFI>

NO

AMOUT

NUMBER

The transaction amount.

  • pain.002: <OrgnlPmtInfAndSts><TxInfAndSts><OrgnlTxRef><Amt><InstdAmt>
  • camt.054: <Ntry><NtryDtls><TxDtls><Amt>

NO

TRANSACTION_DATE

DATE

The transaction date.*  pain.002 (credit transfer):<OrgnlPmtInfAndSts><TxInfAndSts><OrgnlTxRef><ReqdExctnDt>

  •  pain.002 (direct debit): <OrgnlPmtInfAndSts><TxInfAndSts><OrgnlTxRef><ReqdColltnDt>
  •  camt.054: <Ntry><NtryDtls><TxDtls><RltdDts><TxDtTm>
  •  camt.054(Credit Transfer): <Ntry><BookgDt>

NO

PYMT_RETURN_ORGTR

VARCHAR(140)

This field is present in case of rejections.* camt.054: <Ntfctn><Ntry><NtryDtls><TxDtls><RtrInf><Orgtr><Nm>

  • pain.002: <OrgnlPmtInfAndSts><TxInfAndSts><StsRsnInf><Orgtr><Nm>

NO

PYMT_RETURN_RSN_CODE

VARCHAR(4)

Payment return reason code. This field is present in case of rejections and only codes of the external ISO 20022 code list are permitted.* camt.054: <Ntfctn><Ntry><NtryDtls><TxDtls><RtrInf><Rsn><Cd>.

  • pain.002: <OrgnlPmtInfAndSts><TxInfAndSts><StsRsnInf><Rsn><Cd>

NO

PYMT_RETURN_PRTRY

VARCHAR(35)

Payment return propietary. This field is only used by the camt.054 files. The information is taken from the element: <Ntfctn><Ntry><NtryDtls><TxDtls><RtrInf><OrgnlBkTxCd><Prtry><Cd>

NO

DEBTOR_NAME

VARCHAR(140)

The debtor name.* pain.002: <OrgnlPmtInfAndSts><TxInfAndSts><OrgnlTxRef><Dbtr><Nm>

  • camt.054: <Ntry><NtryDtls><TxDtls><RltdPties><Dbtr><Nm>

NO

DEBTOR_BIC

VARCHAR(11)

The debtor BIC.* pain.002: <OrgnlPmtInfAndSts><TxInfAndSts><OrgnlTxRef><DbtrAgt><FinInstnId><BIC>

  • camt.054: <Ntry><NtryDtls><TxDtls><RltdAgts><DbtrAgt><FinInstnId><BIC>

NO

DEBTOR_IBAN

VARCHAR(34)

The debtor IBAN.* pain.002: <OrgnlPmtInfAndSts><TxInfAndSts><OrgnlTxRef><DbtrAcct><Id><IBAN>

  • camt.054: <Ntry><NtryDtls><TxDtls><RltdPties><DbtrAcct><Id><IBAN>

NO

CREDITOR_NAME

VARCHAR(140)

The creditor name.* pain.002: <OrgnlPmtInfAndSts><TxInfAndSts><OrgnlTxRef><Cdtr><Nm>

  • camt.054: <Ntry><NtryDtls><TxDtls><RltdPties><Cdtr><Nm>

NO

CREDITOR_BIC

VARCHAR(11)

The creditor BIC.* pain.002: OrgnlPmtInfAndSts><TxInfAndSts><OrgnlTxRef><CdtrAgt><FinInstnId><BIC>

  • camt.054: <Ntry><NtryDtls><TxDtls><RltdAgts><CdtrAgt><FinInstnId><BIC>

NO

CREDITOR_IBAN

VARCHAR(34)

The creditor IBAN. 

  • pain.002: <OrgnlPmtInfAndSts><TxInfAndSts><OrgnlTxRef><CdtrAcct><Id><IBAN>
  • camt.054: <Ntry><NtryDtls><TxDtls><RltdPties><CdtrAcct><Id><IBAN>

NO

BRAND_ID

NUMBER

The brand id.

NO

REFERENCE

VARCHAR(4000)

This field might contain information related to the transaction. In case of manual payment this can be used as a reference.

  • pain.002: <OrgnlPmtInfAndSts><TxInfAndSts><OrgnlTxRef><RmtInf><Ustrd>
  • camt.054: <Ntry><NtryDtls><TxDtls><RmtInf><Ustrd>

NO

...

Name

Type

Description

Mandatory

ID

NUMBER

 

Autogenerated

REFERENCE_ID

NUMBER

Contains the reference of  the SEPA_INCOMING_RECORD

YES

ORG_NAME

VARCHAR(70)

Name of the return originator. Party issuing the return.

NO

ORG_BIC

VARCHAR(11)

BIC of the return originator.

NO

CODE

VARCHAR(4)

Only codes from the ISO 20022 are allowed.

NO

Wiki Markup
{table-plus}