Batch Upload
Multiple ACH transactions can be submitted in a batch file either programatically or by manually submitting the file on the Merchant Center website. Batch Transactions are usually not run against your merchant profile's verification options ( for instance AccountChek or FraudChek ). This can be updated with the Batch Verification option.
This section focuses on uploading batches programatically
Batch types
You can submit a batch with the IsAuth parameter. This will change the type of batch you are uploading. A batch can either be Batch of Authorizations, or a Batch of Transactions. The format is the same between the two.
Batch Verification
Batch Verification is an option set on your merchant account. When you upload a batch ( Auth or Transactional ), we can create the transactions in a pending state. We will run these transaction through your verification methods setup on your account and update the items. You should use the FileDownload, FileDownloadAuth batch interfaces, or Status, AuthStatus to get the statuses of your items after they have been verified.
Endpoints
URL | XML Endpoint |
---|---|
/EpnPublic/FileUpload.aspx | CGI |
File Parameters
Batch upload files may be submitted in one of 3 formats: CSV (Comma-Separated Values), XML, or ACH. In the CSV format, the fields may be delimited by either commas (,) or semicolons (;) or pipes (|). In both CSV and XML formats, each transaction consists of the following fields.
Field or XML Element Name | Type | Max. Chars. | Requirements | Notes |
CompanyID | Int32 | 6 | Required | Merchant's 6-digit Company Number. |
TransID | Int32 | 8 | Ignored | Unused. |
ServiceType | Int32 | 3 | Ignored | Unused. |
NewResubmit | Char | 1 | Optional | N = new, R = resubmission. |
ExternalClientID | String | 40 | Required | ReferenceNumber: Identifier assigned by merchant to the transaction. |
BillerName | String | 16 | Ignored | Unused. |
BankAccountName | String | 50 | Required | Consumer's full name, first name first, last name last, with no commas. |
ExtTransID | Int32 | 15 | Ignored | Unused. |
CreationDate | Date | 10 | Ignored | Unused. |
TransmitDate | Date | 10 | Ignored | Unused. |
TransmitTime | Time | 8 | Ignored | Unused. |
EnteredBy | String | 10 | Optional | Data entry clerk. |
TransType | Char | 1 | Required | D = Debit, C = Credit. |
Amount | Decimal | 9 | Required | U.S. Dollars. For Prenote, set Amount to 0. |
EntryDescription | String | 10 | Ignored | Unused. |
ItemDescription | String | 15 | Depends | SEC Code – for example ARC, BOC, RCK, CCD, PPD, TEL, or WEB. |
BankName | String | 20 | Ignored | Unused. |
BankPhone | String | 20 | Ignored | Unused. |
TRN | Int32 | 9 | Required | Bank routing number. Always 9 digits. |
DDA | Int64 | 17 | Required | Bank account number. |
AccountType | Char | 1 | Required | C = Checking, S = Savings. |
CheckNumber | Int32 | 8 | Optional |
|
TypeCode | String | 2 | Ignored | Unused. |
CollectionType | Char | 1 | Ignored | Unused. |
ClientAddress | String | 50 | Optional | Street and number. |
ClientAddress2 | String | 50 | Optional | Unit number, etc. |
ClientCity | String | 50 | Optional |
|
ClientState | String | 2 | Optional |
|
ClientZip | String | 10 | Optional | Can be 5 or 9 digits, in the format "12345" or "12345-6789". |
ClientPhone | Int32 | 10 | Optional | 10-digit North American phone numbers only. |
ClientSSN | String | 9 | Optional | Optional. Social Security Number, in the format "123456789". |
ClientDOB | Date | 10 | Optional | Date Of Birth, in the format: "MM/DD/YYYY". |
ClientDL | String | 20 | Optional | Driver's License Number. |
AuthID | Int | 15 | Depends | Authorization ID for PreAuthorization. Only required if account is set up this way. |
ConsumerId | String | 40 | Optional | GUID Authorization ID |
Addenda | String | 80 | Optional |
|
Trace15 | String | ? | Depends | Is optional, but depends if the merchant is configured to allow entering this parameter |
String | ? | Optional | ||
Note | String | 900 | Optional | |
PaymentType | String | 20 | Optional | |
PaymentTypeFallback | String | 20 | Optional |
For CSV:
There must be 1 transaction per line. Lines must be terminated by CR+LF (DOS style) line breaks. Each line consists of the 38 fields described above, delimited by either commas ,
or semicolons ;
or pipes |
as desired. All 41 fields must be delimited even when they are blank, so each line must always contain exactly 40 delimiters. There must be no extraneous white space nor quotation marks. Since the fields are not labeled in any way, they must appear in the order given by the above table.
For XML:
The root element is <ImportFile>
. Inside the root element is one <Transactions>
element. Inside the <Transactions>
element are one or more <Transaction>
elements. Inside each <Transaction>
element are elements described in the above table, which may appear in any order. The data for each element should lie between the begin and end tags. Remember that XML is, by definition, always case-sensitive.
For ACH:
ACH format is defined by NACHA, and is described elsewhere.
CGI Parameters
Element Name | Type | Max. Chars. | Requirements | Notes |
UserID | String | 16 | Required | Normally this is the merchant's 6-digit Company Number. |
Password | String | 16 | Required |
|
Format | String | 3 | Required | "TXT" for CSV format, "XML" for XML format, or "ACH" for NACHA format. |
Delimiter | String | 16 | Optional | Either "Comma" (default), "Semicolon", or "Pipe". Ignored when Format=XML. |
IsAuth | Boolean | 1 | Optional | Either “True”, “False”, “1”, or “0”. |
Request Samples
a) CSV
Query parameters
/EPNPublic/FileUpload.aspx?UserID={MerchantNumber}&Password={MerchantPassword}&Format=TXT
CSV file contents
{MerchantNumber},,,,2024041803,,John Smith,,,,,,D,2,,,,,888888884,111333444,C,,,,,,,,,,,,,,,,,,
b) XML
Query parameters
/EPNPublic/FileUpload.aspx?UserID={MerchantNumber}&Password={MerchantPassword}&Format=XML
Request body
<ImportFile> <Transactions> <Transaction> <CompanyID>{MerchantNumber}</CompanyID> <ExternalClientID>2024041901</ExternalClientID> <BankAccountName>John Smith</BankAccountName> <TransType>D</TransType> <Amount>10</Amount> <TRN>888888884</TRN> <DDA>111133334444</DDA> <AccountType>C</AccountType> </Transaction> </Transactions> </ImportFile>
Response
Success