You are on page 1of 11

Extraction parameters per transaction

#
1

7
8

Descriptive Name
Clearing Channel
Transaction Level
Clearing Channel Batch
Level
Pay Method
Check Type
Service Level Code Batch
Level
Service Level Code
Transaction Level
Debtor Agent BIC
Debtor Agent Clearing ID

9
10
11
12
13

Debtor Account Number


Debtor Account IBAN
Debtor Agent Proprietary ID
Debtor Agent Country Code
CdtrAgtId

14

Instruction Priorty Batch


Level
Instruction Priorty
Transaction Level
Payment Currency
Payment Amount
Value Date

2
3
4
5
6

15
16
17
18

X Path
Document/pain.001.001.02/PmtInf/CdtTrfTxInf/PmtTpInf/ClrChanl

Variable r
{CLR CHN

Document/pain.001.001.02/PmtInf/PmtTpInf/ClrChanl

{CLR CHN

Document/pain.001.001.02/PmtInf/PmtMtd
Document/pain.001.001.02/PmtInf/CdtTrfTxInf/ChqInstr/ChqTp
Document/pain.001.001.02/PmtInf/PmtTpInf/SvcLvl/Cd

{PAY MTD}
{CHK TYPE
{SVC LVL}

Document/pain.001.001.02/PmtInf/CdtTrfTxInf/PmtTpInf/SvcLvl/Cd

{SVC LVL}

Document/pain.001.001.02/PmtInf/DbtrAgt/FinInstnId/CmbndId/BIC
Document/pain.001.001.02/PmtInf/DbtrAgt/FinInstnId/CmbndId/ClrSysMmbId/I
d (Remove first five chars)
Document/pain.001.001.02/PmtInf/DbtrAcct/Id/PrtryAcct/Id
Document/pain.001.001.02/PmtInf/DbtrAcct/Id/IBAN
Document/pain.001.001.02/PmtInf/DbtrAgt/FinInstnId/CmbndId/PrtryId/Id
Document/pain.001.001.02/PmtInf/DbtrAgt/FinInstnId/CmbndId/PstlAdr/Ctry
Document/pain.001.001.02/PmtInf/CdtTrfTxInf/CdtrAgt/FinInstnId/CmbndId/Clr
SysMmbId/Id
Document/pain.001.001.02/PmtInf/PmtTpInf/InstrPrty

{BANK ID}
{BANK ID}

Document/pain.001.001.02/PmtInf/CdtTrfTxInf/PmtTpInf/InstrPrty

{INST PRT

Document/pain.001.001.02/PmtInf/CdtTrfTxInf/Amt/InstdAmt/@Ccy
Document/pain.001.001.02/PmtInf/CdtTrfTxInf/Amt/InstdAmt
Document/pain.001.001.02/PmtInf/ReqdExctnDt

{PAY CURR
{PAY AMT}
{VAL DATE

{D ACCOU
{IBAN}
{D AGT PR
{DBTR CT
{C AGT BA

{INST PRT

Debtor Agent Clearing ID is present,


1. Determine BANK ID (optional BIC)
a. IF Debtor Agent ID is present, remove first 5 characters and use the rest as {BANK ID}
ELSE
b. IF Debtor Agent BIC is present, use as {BANK ID}
ELSE
c. IF {BANK ID} is still absent, then check if {IBAN} is present.
i. IF {IBAN} present, extract first 2 characters of IBAN and lookup BIC from 2006 table
1. IF 2006 lookup returns a BIC, use as {BANK ID} and proceed
2. ELSE IF {BANK ID} is absent and not derived from 2006 table, then there is no {BANK ID}
for this transaction. Mark the transaction as
a. Pay Vehicle = BAD
b. Pay Method = NULL
c. Pay Type Determination Stops
d. ELSE Mark the transaction as
a. Pay Vehicle = BAD
b. Pay Method = NULL
c. Pay Type Determination Stops
2. Check JNE
a. If Debtor Bank ID has BIC Type = JNE in the 2006 lookup table, then all transactions in the batch are
JNE. Follow steps 2b through 2d if BIC Type = JNE
b. Use or Derive country code {DBTR CTRY CODE}}
i. If {DBTR CTRY CODE} is present use it as country code
ELSE
ii. if {BANK ID} is least 6 characters, then use extract 5th and 6th characters as country code
c. Determine Region: {REGION}
i. Use {DBTR CTRY CODE} and get region from 2014 table
d. JNE pay type logic
i. {REGION} = APAC
1. Pay Vehicle = SWT
2. Pay Method = GIR
3. Pay Type Determination Stops
ii. {REGION} not APAC or NOT valued
1. Pay Vehicle = SWT

3.

4.

5.

6.
7.

8.
9.

2. Pay Method = TLX


3. Pay Type Determination Stops
Set clearing channel {CLR CHNL}
a. IF {CLR CHNL} is present and valued at transaction level, then prefer transaction level {CLR CHNL}
over batch level {CLR CHNL}.
b. IF {CLR CHNL} is absent or not valued, set it as "<BLANK>"
Set instruction priority {INST PRTY}
a. IF {INST PRTY} is present and valued at transaction level, then prefer transaction level {INST PRTY}
over batch level {INST PRTY}.
b. IF {INST PRTY} is absent or not valued, set it as "<BLANK>"
Set service level {SVC LVL}
a. IF {SVC LVL} is present and valued at transaction level, then prefer transaction level {SVC LVL} over
batch level {SVC LVL}.
b. IF {SVC LVL} is absent or not valued, set it as "<BLANK>"
Set service level {PAY MTD}
a. IF {PAY MTD} is not valued or absent, then it as "<BLANK>"
Determine NON US BIC
a. Get country code from Bank ID
i. If {BANK ID} is least 6 characters, then use extract 5th and 6th characters as country code
b. IF Country code from Bank ID not derived or if country code is NOT 'US' and country code is NOT '00'
then BIC type is {NON US BIC} ELSE BIC type is {US BIC}
All steps below this point use lookup against a database combined with flow logic
Lookup static inputs
Input
categoryName
categoryValueC
ount
sourceFormat
targetFormat
targetRank

Value
"PaymentType"
"1"
"ISO20022V10"
"H2HCanonical"
"1"

Constant Output format

Output
targetValue1
targetValue2
targetValue3
xRefError

Variable
{PAY CLASS}
{PAY VEH}
{PAY METHOD}
Status of lookup

10.IF {CLR CHNL} = MPNS


a. IF {SVC LVL} = "SEPA"
i. Lookup as follows
Input
sourceValue1
sourceValue2
sourceValue3
sourceValue4
sourceValue5

Value
{CLR CHNL}
{BANK ID}
{PAY MTD}
"<BLANK>"
{SVC LVL}

b. If {SVC LVL} is not SEPA


i. IF {INST PRTY} = HIGH
1. Lookup as follows
Input
sourceValue1
sourceValue2
sourceValue3
sourceValue4
sourceValue5
sourceValue6

Value
{CLR CHNL}
{BANK ID}
{PAY MTD}
"<BLANK>"
"<BLANK>"
{INST PRTY}

ii. IF {INST PRTY} is not HIGH


1. IF {PAY MTD} = CHK

a. IF {CHK TYPE} = BCHQ


Input
sourceValue1
sourceValue2
sourceValue3
sourceValue4
sourceValue5
b. IF {CHK TYPE} is

Value
{CLR CHNL}
{BANK ID}
{PAY MTD}
{CHK TYPE}
"<BLANK>"
not BCHQ

Input
sourceValue1
sourceValue2
sourceValue3
sourceValue4
sourceValue5

Value
{CLR CHNL}
{BANK ID}
{PAY MTD}
"<BLANK>"
"<BLANK>"

2. IF {PAY MTD} is not CHK


Input
Value
sourceValue1
{CLR CHNL}
sourceValue2
{BANK ID}
sourceValue3
{PAY MTD}
sourceValue4
"<BLANK>"
sourceValue5
"<BLANK>"
11.IF {CLR CHNL} = BOOK
c. IF BIC type is {NON US BIC} then set {BANK ID} to NON_US_BIC
d. IF {PAY MTD} is not TRF set {PAY MTD} as BLANK
e. IF {D AGT PRTRY ID} is not valued then set as BLANK else set {D AGT PRTRY ID} as NO_ID
f. Lookup as follows
Input
sourceValue1

Value
{CLR CHNL}

sourceValue2
sourceValue3
sourceValue4

{BANK ID}
{PAY MTD}
"<BLANK>"
{D AGT PRTRY
sourceValue5
ID}
12.IF {CLR CHNL} is not MPNS and not BOOK
g. IF {SVC LVL} = SEPA, lookup as follows
Input
sourceValue1
sourceValue2
sourceValue3
sourceValue4
sourceValue5

Value
{CLR CHNL}
{BANK ID}
{PAY MTD}
"<BLANK>"
{SVC LVL}

h. IF {SVC LVL} is not SEPA


i. IF {PAY MTD} = CHK
1. IF {CHK TYPE} = DRFT
a. IF BIC type is {NON US BIC} then set {BANK ID} to NON_US_BIC
b. Lookup as follows
Input
Value
sourceValue1
{CLR CHNL}
sourceValue2
{BANK ID}
sourceValue3
{PAY MTD}
sourceValue4
{CHK TYPE}
sourceValue5
"<BLANK>"
2. IF {CHK TYPE} = BCHQ
Input
sourceValue1
sourceValue2
sourceValue3

Value
{CLR CHNL}
{BANK ID}
{PAY MTD}

sourceValue4
sourceValue5

{CHK TYPE}
"<BLANK>"

3. IF {CHK TYPE} = CCHQ


a. IF BIC type is {NON US BIC}
Input
sourceValue1
sourceValue2
sourceValue3
sourceValue4
sourceValue5
b. IF BIC type is {US

Value
{CLR CHNL}
{BANK ID}
{PAY MTD}
{CHK TYPE}
"<BLANK>"
BIC and 5th and 6th position of {BANK ID} = US

Input
Value
sourceValue1
{CLR CHNL}
sourceValue2
"US"
sourceValue3
{PAY MTD}
sourceValue4
"<BLANK>"
sourceValue5
"<BLANK>"
c. IF BIC type is {US BIC and 5th and 6th position of {BANK ID} is not US (also covers
highly unlikely scenario of !00 and !US as well)
Input
Value
sourceValue1
{CLR CHNL}
sourceValue2
{BANK ID}
sourceValue3
{PAY MTD}
sourceValue4
"<BLANK>"
sourceValue5
"<BLANK>"
4. IF {CHK TYPE} is none of CCHQ BCHQ DRFT or not valued
a. IF 5th and 6th position of {BANK ID} = US

Input
Value
sourceValue1
{CLR CHNL}
sourceValue2
"US"
sourceValue3
{PAY MTD}
sourceValue4
"<BLANK>"
sourceValue5
"<BLANK>"
b. IF 5th and 6th position of {BANK ID} is not US (covers 00 and other US BICS of
WaMu etc)
Input
Value
sourceValue1
{CLR CHNL}
sourceValue2
{BANK ID}
sourceValue3
{PAY MTD}
sourceValue4
"<BLANK>"
sourceValue5
"<BLANK>"
ii. IF {PAY MTD} is not CHK
1. IF BIC type is {NON US BIC} set {BANK ID} as NON_US_BIC
a. IF {CHK TYPE} is not DRFT set {CHK TYPE} as BLANK
Input
Value
sourceValue1
{CLR CHNL}
sourceValue2
{BANK ID}
sourceValue3
{PAY MTD}
sourceValue4
{CHK TYPE}
sourceValue5
"<BLANK>"
i. If {PAY CLASS} = GMT AND {PAY VEH} = SWT AND {PAY METHOD} is not
valued
1. Get local currency {LOC CURR} from 1006 table with ISO {BANK ID}
and derived {PAY VEH}
2. IF {LOC CURR} = {PAY CURR} THEN SET {PAY METHOD} = LOC ELSE
set {PAY METHOD} = TLX
2. IF BIC type is {US BIC}

a. IF {D AGT PRTRY ID} is present then set {D AGT PRTRY ID IN} as NO_ID
ELSE IF {D AGT PRTRY ID IN} is absent or not valued then set {D AGT PRTRY ID} as
<BLANK>
b. IF {C AGT BANK ID} is present and starts with USABA then set {C AGT BANK ID
IN} as USABA
ELSE IF {C AGT BANK ID} is present and does not start with USABA then set {C
AGT BANK ID IN} as NON_USABA
ELSE IF {C AGT BANK ID} is absent then set {C AGT BANK ID IN} as <BLANK>
c. IF {C AGT BANK ID IN} = <BLANK>
Input
sourceValue1
sourceValue2
sourceValue3

Value
{CLR CHNL}
{BANK ID}
{PAY MTD}
{C AGT BANK
sourceValue4
ID IN}
{D AGT PRTRY
sourceValue5
ID IN}
d. IF {C AGT BANK ID IN} is not <BLANK>
Input
sourceValue1
sourceValue2
sourceValue3
sourceValue4
sourceValue5

Value
{CLR CHNL}
{BANK ID}
{PAY MTD}
{C AGT BANK
ID IN}
"<BLANK>"

13.IF {PAY VEH} = ACH or {PAY VEH} = BOP the derive Company ID as follows
a. IF {PAY METHOD} = SCT AND {BANK ID} absent in ISO AND {IBAN} PRESENT
Note: Lookup restricted to Partner + IBAN + SVC LVL combination
Input

Value

categoryName
categoryValueC
ount
sourceFormat
targetFormat
targetRank
sourceValue1
sourceValue3

" CompanyID "


"1"
"ISO20022V10"
"H2HCanonical"
"1"
{H2H PARTNER ID}

{IBAN}
<SVC LVL> if present else
<BLANK>
b. ELSE (all other cases i.e. BANK ID must be present)
sourceValue4

Input
categoryName
categoryValueC
ount
sourceFormat
targetFormat
targetRank
sourceValue1
sourceValue2
sourceValue3
sourceValue4
sourceValue5

Value
" CompanyID "
"1"
"ISO20022V10"
"H2HCanonical"
"1"
{H2H PARTNER ID}
{BANK ID}
{IBAN} else use {D ACCOUNT}
<SVC LVL> if present else <BLANK>
<BLANK>

14.At this stage {PAY VEH} and {PAY METHOD} will have been determined. If {PAY VEH} is still not determined,
then {PAY VEH} = BAD and {PAY METHOD} = NULL
15.FCI to ISO field map

FCI field
Pay Method
Pay Vehicle
Transaction Type

ISO Field
{PAY VEH}
{PAY METHOD}
Always "01"

Date classification

{VAL DATE}
If date absent, use 01-01-0001
Current system date = T
If {VAL DATE} is < T, then classify date as
same day
If {VAL DATE} is = T, then classify date as
same day
If {VAL DATE} is = T+1, then classify date as
same day
If {VAL DATE} is > T+1, then classify date as
other day

Transaction Amount

{PAY AMT}

Transaction Currency

{PAY CURR}

Company ID
(for pay vehicles ACH and BOP
only)

Get Company ID from database as mentioned above

Debtors Account

{IBAN} if present else {D ACCOUNT}

Value Date

You might also like