Вы находитесь на странице: 1из 9

XDO file name: Mapping of Payment Format: Date: 4/22/2004

Ts1.rtf US NACHA Payments EFT Format

Format Setup:

Hint: Define formatting options…

<TEMPLATE TYPE> FIXED_POSITION_BASED

<OUTPUT CHARACTER SET> iso-8859-1


<NEW RECORD CHARACTER> Carriage Return

Sequences:

Hint: Define sequence generators…


<DEFINE SEQUENCE> PaymentsSeq
<RESET AT LEVEL> PayerInstrument
<INCREMENT BASIS> LEVEL
<END DEFINE SEQUENCE > PaymentsSeq

Format Data Records:

Hint: This is the body of the format. Define your format records here.
Create one table for each record or group of records that are at the same level.
For example, RequestHeader is one level, and Payment is another level.
<Comment_Pls_Delete> The file header record should be mappe d to the PayerInstrument level. One important point to remember is in 11iX
the sender of the OutboundPaymentInstruction is the same as the 1 st party payer; there will be only one 1st party payer for an
OutboundPaymentInstruction. Further, we will have an option in the payment instruction build program. When the option is set it will make one
payment instruction to be built from one payment request only. For US NACHA format the user will set this option. So effectively we will have
only one PayerInstrument in the extract. This is required in order to correctly map the File Header record.
</Comment_Pls_Delete>
<LEVEL> PayerInstrument
<POSITION> <LENGTH> <FORMAT> <PAD> <DATA> <COMMENTS>
<NEW RECORD> FileHeaderRec
1 1 Number 1 Record Type Code

1
2 2 Alpha R, ‘ ‘ ‘01’ Priority Code
4 1 Alpha R, ‘ ‘ Immediate Destination: the first position is a
blank
5 9 Alpha R, ‘ ‘ Immediate Destination: the second to the
BankAccount/BankNumb tenth position of this field is the ABA routing
er number of the receiving bank. The ABA
routing number is a nine digit number
composed of three parts. The first four digits
are the Federal Reserve Routing Symbol;
the next four digits are the ABA Institution
Identifer; and the last one digit is the check
digit. However when the user enters this
number he will always enter the nine digits
together – this is what’s on a US check.
Actually in current AP code it is taking the
bank_num as a whole.
14 1 Alpha R, ‘ ‘ Mutually Agreed
‘1’
15 9 Alpha R, ‘ ‘ Immediate Origin. Currently in the code is
Payer/TaxIdentifi ap_reporting_entities.tax_identification_num
er
24 6 Date, SYSDATE File Creation Date
YYMMDD
30 4 Date, SYSDATE File Creation Time (Military Time)
HHMM
34 1 Alpha R, ‘ ‘ File ID Modifier. Currently in the code AP
counts the number of batches send to the
receiving bank with the same payment date
as the SYSDATE. The first 26 batches will
take letter ‘A’ to ‘Z’; next 9 batches will take
‘0’ to ‘8’; any additional batches will always
get ‘9’. We can use the periodic sequence
number at the payment instruction level –
however we will have to do a big IF
statement here in the template. Otherwise
we will need a special extract field – the
periodic sequence number was taken out

2
from the extract anyway! I will check with
Omar.
35 3 Alpha ‘094’ Record Size
38 2 Number Blocking Factor
10
40 1 Number 1 Format Code
41 23 Alpha R, ‘ ‘ BankAccount/BankName Immediate Destination Name
64 23 Alpha R, ‘ ‘ Payer/LegalEntityNam Immediate Origin Name. Currently in the
e code is ap_reporting_entities.entity_name
87 9 Alpha R, ‘ ‘ Optional Reference Code. Put all comments
and notes in this column otherwise XML
Publisher may not be able to parse it.
<NEW RECORD> BatchHeaderRec
1 1 Number 5 Record Type Code
2 3 Number 200 Service Class Code
5 16 Alpha R, ‘ ‘ Payer/LegalEntityNam Company Name. Currently in the code is
e ap_reporting_entities.entity_name
21 20 Alpha R, ‘ ‘ / Company Discretionary Data. Currently in
OutboundPaymentInstr the code is
uction/PaymentInstru ap_invoice_selection_criteria.checkrun_id
ctionInfo/PaymentIns
tructionInternalID
41 1 Alpha ‘1’ Company Identification: first position is 1
which means the identification is the IRS
EIN for the 1st party payer
42 9 Alpha R, ‘ ‘ Payer/TaxIdentifier Company Identification. Currently in the
code is
ap_reporting_entities.tax_identification_num
. Same as position 14 in the file header rec
51 3 Alpha ‘CCD’ Standard Entry Class
54 10 Alpha R, ‘ ‘ / Company Entry Description. Currently in the
OutboundPaymentInstr code is
uction/PaymentInstru ap_selected_invoice_checks.checkrun_nam
ctionInfo/PaymentIns e
tructionName
64 6 Alpha R, ‘ ‘ Company Descriptive Date
70 6 Date, / Effective Entry Date (Settlement Date).
YYMMDD OutboundPaymentInstr ap_selected_invoice_checks.creation_date

3
uction/PaymentInstru
ctionInfo/PaymentIns
tructionCreationDate
76 3 Alpha R, ‘ ‘ Blank
79 1 Number 1 Originator Status Code
80 8 Alpha R, ‘ ‘ BankAccount/BankNumb Originating DFI Identification. This is the first
er 8 digits of the ABA routing number of the
receiving bank – without the check digit. As
XML Publisher will always truncate on the
right – per our spec so we don’t need to use
SUBSTR here.
88 7 Number 1 Batch Number. This is the sequence
number for the batch – it must match
position 88 to 94 of batch control rec. In the
code AP is hard-coded to 1 as they will
always have one batch in a file. As I
explained earlier, we will support the AP
situation as-is. So we will have 1 here. Note
we can let XML Publisher do the padding.

<LEVEL> OutboundPayment
<SORT ASCENDING> Payee/Name
<POSITION> <LENGTH> <FORMAT> <PAD> <DATA> <COMMENTS>
<NEW RECORD> EntryDetailRecCR
1 1 Number 6 Record type
2 2 Alpha R, ‘ ‘ IF Transaction Code
PaymentAmount/Value
= 0 THEN
‘23’
ELSE
‘22’
END IF
4 8 Alpha R, ‘ ‘ PayeeBankAccount/Ban Receiving DFI Identification. Let XML
kNumber Publisher do the truncation
12 1 Alpha R, ‘ ‘ SUBSTR(PayeeBankAcco Check digit. The validation code will make
unt/BankNumber,9,1) sure that the BankNumber is 9 digits. You
don’t need to use the LENGTH function
here.

4
13 17 Alpha R, ‘ ‘ PayeeBankAccount/Ban DFI Account Number
kAccountNumber
30 10 Number, L, ‘0’ PaymentAmount/Value* Amount
Integer 100
40 15 Alpha R, ‘ ‘ PaymentNumber/CheckN Identification Number
umber
55 22 Alpha R, ‘ ‘ Payee/Name Receiving Company Name/ID Number
77 2 Alpha R, ‘ ‘ Discretionary Data
79 1 Number 0 Addenda record Indicator
80 8 Alpha R, ‘ ‘ / ODFI Routing Number
OutboundPaymentInstr
uction/PayerInstrume
nt/BankAccount/BankN
umber
88 7 Alpha R, ‘ ‘ SEQUENCE_NUMBER( Trace Number. Currently in code this is a
PaymentsSeq) counter - CS_CHECK_NUM which counts
C_ENTRYDETAIL and resets at
G_C_BATCHHEADER. So we need a
sequence number that will generate a
sequence for each of the payments
starting from 1.
<END LEVEL> OutboundPayment

<LEVEL> PayerInstrument
<POSITION> <LENGTH> <FORMAT> <PAD> <DATA> <COMMENTS>
<NEW RECORD> EntryDetailRecDR
1 1 Number 6 Record Type Code
2 2 Alpha R, ‘ ‘ IF Transaction Code
PaymentsTotalAmount/
Value = 0 THEN
‘28’
ELSE
‘27’
END IF
4 9 Alpha R, ‘ ‘ BankAccount/BankNumb Bank number of payer’s bank
er
13 17 Alpha R, ‘ ‘ BankAccount/BankAcco DFI Account Number
untNumber
30 10 Number, L, ‘0’ PaymentsTotalAmount/ Amount

5
Value*100
Integer
40 15 Alpha R, ‘ ‘ ‘BATCH_NAME’ Identification number type for next field
55 22 Alpha R, ‘ ‘ / Receiving Company Name/ID Number
OutboundPaymentInstr
uction/PaymentInstru
ctionInfo/PaymentIns
tructionName
77 2 Alpha R, ‘ ‘ Discretionary Data
79 1 Number 0 Addenda record Indicator
80 8 Alpha R, ‘ ‘ BankAccount/BankNumb ODFI Routing Number
er
88 7 Number R, ‘ ‘ COUNT(EntryDetailRec Trace Number
CR)+1
<NEW RECORD> BatchControlRec
1 1 Number 8 Record Type Code
2 3 Number 200 Service Class Code
5 6 Number L, ‘0’ COUNT(EntryDetailRec Entry/Addenda count
CR)+1
11 10 Number L, ‘0’ SUM(TO_NUMBER(SUBSTR Entry Hash.
(OutboundPayment/Pay
eeBankAccount/BankNu
mber,1,8)))
21 12 L, ‘0’ PaymentsTotalAmount/ Total Debit Dollar Amount of Batch
Number Value*100

33 12 Number L, ‘0’ PaymentsTotalAmount/ Total Credit Dollar Amount of Batch


Value*100
45 1 Alpha R, ‘ ‘ ‘1’ Mutually agreed data for company ID
46 9 Alpha R, ‘ ‘ Payer/TaxIdentifier Company Identification
55 19 Alpha R, ‘ ‘ Message Authentication Code
74 6 Alpha R, ‘ ‘ Reserved
80 8 Alpha R, ‘ ‘ BankAccount/BankNumb Originating DFI Identification
er
88 7 Number 1 Batch Number. Same as last field of
BatchHeaderRec
<NEW RECORD> FileControlRec
1 1 Number 9 Record Type Code

6
2 6 Number L, ‘0’ 1 Batch Count
8 6 Number L, ‘0’ CEIL((COUNT(Outbound Block Count. Total number of records in
Payment)+5) DIV the file, divided by ten and rounded up.
(10)) All records, including both the File Header
and File Control Records are included in
the block count. As there is only one
record – EntryDetailRecCR for
OutboundPayment, we can count on
OutboundPayment as a substitute for
counting on EntryDetailRecCR. I am
doing so just to show the different ways of
doing the same thing. We can do the
same COUNT(EntryDetailRecCR) as we
did for position 88 of the
EntryDetailRecDR rec and position 5 of
the BatchControlRec.
14 8 Number L, ‘0’ PaymentCount+1 Entry/Addenda Count. Another way of
counting – use the count field from the
extract.
22 10 Number L, ‘0’ SUM(TO_NUMBER(SUBSTR Entry Hash.
(OutboundPayment/Pay
eeBankAccount/BankNu
mber,1,8)))
32 12 Number L, ‘0’ PaymentsTotalAmount/ Total Debit Entry Dollar Amount in File
Value*100
44 12 Number L, ‘0’ PaymentsTotalAmount/ Total Credit Entry Dollar Amount in File
Value*100
56 39 Alpha R, ‘ ‘ Blank
<NEW RECORD> FillerRec1
<DISPLAY CONDITION> DECIMAL_PART((PaymentCount+5) DIV (10)) > 0 AND
DECIMAL_PART((PaymentCount+5) DIV (10)) < 2
1 95 Number L, ‘9’ 9 Filler. ACH files are transmitted in blocks of
10 records. Each record is a series of 94
characters – so a block is 940 characters. If
the number of records within a file is not a
multiple of ten, the remainder of the block
must be nine-filled
<NEW RECORD> FillerRec2

7
<DISPLAY CONDITION> DECIMAL_PART((PaymentCount+5) DIV (10)) > 0 AND
DECIMAL_PART((PaymentCount+5) DIV (10)) < 3
1 95 Number L, ‘9’ 9 Filler. ACH files are transmitted in blocks of
10 records. Each record is a series of 94
characters – so a block is 940 characters. If
the number of records within a file is not a
multiple of ten, the remainder of the block
must be nine-filled
<NEW RECORD> FillerRec3
<DISPLAY CONDITION> DECIMAL_PART((PaymentCount+5) DIV (10)) > 0 AND
DECIMAL_PART((PaymentCount+5) DIV (10)) < 4
1 95 Number L, ‘9’ 9 Filler. ACH files are transmitted in blocks of
10 records. Each record is a series of 94
characters – so a block is 940 characters. If
the number of records within a file is not a
multiple of ten, the remainder of the block
must be nine-filled
<NEW RECORD> FillerRec4
<DISPLAY CONDITION> DECIMAL_PART((PaymentCount+5) DIV (10)) > 0 AND
DECIMAL_PART((PaymentCount+5) DIV (10)) < 5
1 95 Number L, ‘9’ 9 Filler. ACH files are transmitted in blocks of
10 records. Each record is a series of 94
characters – so a block is 940 characters. If
the number of records within a file is not a
multiple of ten, the remainder of the block
must be nine-filled
<NEW RECORD> FillerRec5
<DISPLAY CONDITION> DECIMAL_PART((PaymentCount+5) DIV (10)) > 0 AND
DECIMAL_PART((PaymentCount+5) DIV (10)) < 6
1 95 Number L, ‘9’ 9 Filler. ACH files are transmitted in blocks of
10 records. Each record is a series of 94
characters – so a block is 940 characters. If
the number of records within a file is not a
multiple of ten, the remainder of the block
must be nine-filled
<NEW RECORD> FillerRec6
<DISPLAY CONDITION> DECIMAL_PART((PaymentCount+5) DIV (10)) > 0 AND
DECIMAL_PART((PaymentCount+5) DIV (10)) < 7

8
1 95 Number L, ‘9’ 9 Filler. ACH files are transmitted in blocks of
10 records. Each record is a series of 94
characters – so a block is 940 characters. If
the number of records within a file is not a
multiple of ten, the remainder of the block
must be nine-filled
<NEW RECORD> FillerRec7
<DISPLAY CONDITION> DECIMAL_PART((PaymentCount+5) DIV (10)) > 0 AND
DECIMAL_PART((PaymentCount+5) DIV (10)) < 8
1 95 Number L, ‘9’ 9 Filler. ACH files are transmitted in blocks of
10 records. Each record is a series of 94
characters – so a block is 940 characters. If
the number of records within a file is not a
multiple of ten, the remainder of the block
must be nine-filled
<NEW RECORD> FillerRec8
<DISPLAY CONDITION> DECIMAL_PART((PaymentCount+5) DIV (10)) > 0 AND
DECIMAL_PART((PaymentCount+5) DIV (10)) < 9
1 95 Number L, ‘9’ 9 Filler. ACH files are transmitted in blocks of
10 records. Each record is a series of 94
characters – so a block is 940 characters. If
the number of records within a file is not a
multiple of ten, the remainder of the block
must be nine-filled
<NEW RECORD> FillerRec9
<DISPLAY CONDITION> DECIMAL_PART((PaymentCount+5) DIV (10)) > 0 AND
DECIMAL_PART((PaymentCount+5) DIV (10)) < 10
1 95 Number L, ‘9’ 9 Filler. ACH files are transmitted in blocks of
10 records. Each record is a series of 94
characters – so a block is 940 characters. If
the number of records within a file is not a
multiple of ten, the remainder of the block
must be nine-filled
<END LEVEL> PayerInstrument

Вам также может понравиться