Introduction
USIO - Payments API 2.0 Documentation
USIO Payments API 2.0 is a robust web service with SOAP, WCF and REST/JSON endpoints.
This API allows you to submit debits and credits through the Debit Card/ACH/Credit Card networks.
You will also be able to setup recurring payments, Void or Return payments, view transaction details, and run reports.
Last updated on, 10/4/2019 © USIO
.
Change Log
Date | Author | Doc Version | Change Summary |
---|---|---|---|
11/7/2018 | Tracy Rickman | 2.0 | Initial web release |
12/5/2018 | Rachel Carlini | 2.01 | Minor text fixes |
12/28/2018 | Tracy Rickman | 2.02 | Updates to Printed Check Method and Minor text fixes |
1/14/2019 | Tracy Rickman | 2.03 | Added Cash Payment method |
3/12/2019 | Tracy Rickman | 2.04 | Added MasterCard RPPS methods and ConvFee Amount output |
3/13/2019 | Tracy Rickman | 2.05 | Added new Gateway and PDS response codes |
3/25/2019 | Rachel Carlini | 2.06 | Added Get Convenience Fee method |
4/12/2019 | Tracy Rickman | 2.07 | Added mobile wallet support |
4/30/2019 | Rachel Carlini | 2.08 | Added Biller Class to FindBiller return object |
5/8/2019 | Tracy Rickman | 2.09 | Added sample check image for Printed Checks. Corrected JSON response from RPPS FindBiller. |
5/20/2019 | Rachel Carlini | 2.10 | Updated Repeating Payments to include notes on ACH and CC transactions. |
5/24/2019 | Rachel Carlini | 2.11 | Added Remote Check Creation section |
5/29/2019 | Bhumika Kachhadia | 2.12 | Added final status messagae table |
6/5/2019 | Tracy Rickman | 2.13 | Added Prefunding Balance method |
6/6/2019 | Andrew Reese | 2.14 | Added Remote Check Return Codes |
6/12/2019 | Tracy Rickman | 2.15 | Added Void Print Check and Void RPPS payment methods |
6/27/2019 | Andrew Reese | 2.16 | Added Additional PDS Response Codes |
7/8/2019 | Andrew Reese | 2.17 | Added Additional Gateway Response Codes |
7/15/2019 | Andrew Reese | 2.18 | Added Cancel Repeat Payment method |
7/23/2019 | Tracy Rickman | 2.19 | Added Secondary Amount to the Repeating Payments method |
8/8/2019 | Tracy Rickman | 2.20 | Correction to GetConvenienceFee return values |
8/26/2019 | Andrew Reese | 2.21 | Added IsPinless boolean to the GetConvenienceFee method |
8/27/2019 | Andrew Reese | 2.22 | Added SecondaryAmount to PinlessDebit/Credit methods |
10/4/2019 | Andrew Reese | 2.23 | Added Verify ACH Account method |
Environment
SANDBOX & PRODUCTION
https://api.securepds.com
Sandbox & Production
https://api.securepds.com
Our sandbox and production servers share the same URL.
The correct systems will be chosen based on the credentials submitted.
SOAP/WFC WSDL
https://api.securepds.com/2.0/payments.svc?wsdl
REST/JSON Endpoints and definitions:
https://api.securepds.com/2.0/payments.svc/json/help
Required Parameters in all calls
Parameter Name | Description |
---|---|
MerchantID | Merchant ID assigned by USIO Systems |
Login | API Username |
Password | API Password |
Parameter values for Sandbox
Parameter Name | Test Value |
---|---|
MerchantID | 0000000001 |
Login | API0000000001 |
Password | Temp1234! |
If you require a private sandbox please contact us at integrations@usio.com
Pinless Debit Card Payments
Pinless Bin Check
POST https://api.securepds.com/2.0/payments.svc/JSON/PinlessBinCheck
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"CardNumber": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"PinlessCredit": true,
"PinlessDebit": true
}
This method is used to check the eligibility of a card number for pinless debit and credit operations.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/PinlessBinCheck
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
CardNumber | string | Required | 14-17 | Debit Card Number |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
PinlessCredit | bool | Boolean result of pinless credit operation eligibility |
PinlessDebit | bool | Boolean result of pinless credit operation eligibility |
Pinless Debit/Credit
POST https://api.securepds.com/2.0/payments.svc/JSON/PinlessDebit
POST https://api.securepds.com/2.0/payments.svc/JSON/PinlessCredit
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"CardNumber": "string",
"CVV": "string",
"ExpDate": "string",
"Amount": "string",
"FirstName": "string",
"LastName": "string",
"EmailAddress": "string",
"Address1": "string",
"Address2": "string",
"City": "string",
"State": "string",
"Zip": "string",
"Province": "string",
"Country": "string",
"MerchantPayAccount": "string",
"OfficeID": "string",
"UserID": "string",
"AdditionalSearch": "string",
"AccountCode1": "string",
"AccountCode2": "string",
"AccountCode3": "string",
"SecondaryAmount": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
These methods are used to debit (retrieve) funds from a Debit Card or credit (send) funds to a Debit Card
Important Information
To tokenize the card number send in an amount of 0.00, this will not authorize the card.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/PinlessDebit
POST https://api.securepds.com/2.0/payments.svc/JSON/PinlessCredit
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
CardNumber | string | Required | 14-17 | Debit Card Number |
CVV | string | Optional | 3-4 | CVC/CVV Number |
ExpDate | string | Required | 6 | Expiration Date (MMYYYY) |
Amount | string | Required | max 8 | Total Amount of Transaction including fees (#0.00) |
FirstName | string | Required | 2-19 | Card holder first name |
LastName | string | Required | 2-19 | Card holder last name |
EmailAddress | string | Required | 2-39 | Card holder email address |
Address1 | string | Required | 2-39 | Card holder address 1 |
Address2 | string | Optional | 2-39 | Card holder address 2 |
City | string | Required | 2-39 | Card holder city |
State | string | Required | 2 | Card holder state code |
Zip | string | Required | 4-10 | Card holder zip code (international supported) |
Province | string | Optional | 2-39 | Card holder Province |
Country | string | Required | 2 | Card holder Country |
MerchantPayAccount | string | Optional | max 32 | Optional reporting field |
OfficeID | string | Optional | max 10 | Optional reporting field |
UserID | string | Optional | max 15 | Optional reporting field |
AdditionalSearch | string | Optional | max 20 | Optional reporting field |
AccountCode1 | string | Optional | max 20 | Optional reporting field |
AccountCode2 | string | Optional | max 20 | Optional reporting field |
AccountCode3 | string | Optional | max 20 | Optional reporting field |
SecondaryAmount | string | Optional | max 6 | Secondary Amount to denote what portion of the amount field should be applied as a convenience fee/split settlement fee. (Debits Only) |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Pinless Return
POST https://api.securepds.com/2.0/payments.svc/JSON/PinlessReturn
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"Amount": "string",
"Confirmation": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method is used to return funds to a Debit Card
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/PinlessReturn
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
Amount | string | Required | max 8 | Amount of Transaction (#0.00) |
Confirmation | string | Required | 15-20 | Confirmation ID from original transaction |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Credit Card Payments
Credit Card Payment
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitCCPayment
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"CardNumber": "string",
"CardType": "string",
"CVV": "string",
"ExpDate": "string",
"Amount": "string",
"FirstName": "string",
"LastName": "string",
"EmailAddress": "string",
"Address1": "string",
"Address2": "string",
"City": "string",
"State": "string",
"Zip": "string",
"Province": "string",
"Country": "string",
"MerchantPayAccount": "string",
"OfficeID": "string",
"UserID": "string",
"AdditionalSearch": "string",
"AccountCode1": "string",
"AccountCode2": "string",
"AccountCode3": "string",
"ConvFeeAmount": "string",
"secure3D": "string",
"AuthOnly": false,
"TerminalID": "string",
"MobileWalletType": "string",
"MobileWalletCryptogram": "string",
"MobileWalletECI": "string",
"TrackData": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method is used to generate Credit Card Payments and to tokenize card information
Important Information
To tokenize the card number send in an amount of 0.00, this will not authorize the card.
By default all transactions when ran in test mode will return a successful response. To simulate a failure please pass the card number of 4111111111111111 and a special amount to get various responses.
Amount | Description |
---|---|
1.01 | Failure response of 51: insufficient funds |
1.02 | Failure response of 05: do not honor |
1.03 | Failure response of p55: invalid credit card number |
1.04 | Failure response of n7: cvv2 value supplied is invalid Also sets the CVVResponse value to “N” on the transaction record |
1.05 | Successful response, but marks payment record with a “N” for the AVS code |
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitCCPayment
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
CardNumber | string | Required | 14-17 | Debit Card Number |
CardType | string | Required | 4 | VISA, MSTR, DISC, AMEX |
CVV | string | Optional | 3-4 | CVC/CVV Number |
ExpDate | string | Required | 6 | Expiration Date (MMYYYY) |
Amount | string | Required | max 8 | Total Amount of Transaction Including fees (#0.00) |
FirstName | string | Required | 2-19 | Card holder first name |
LastName | string | Required | 2-19 | Card holder last name |
EmailAddress | string | Required | 2-39 | Card holder email address |
Address1 | string | Required | 2-39 | Card holder address 1 |
Address2 | string | Optional | 2-39 | Card holder address 2 |
City | string | Required | 2-39 | Card holder city |
State | string | Required | 2 | Card holder state code |
Zip | string | Required | 4-10 | Card holder zip code (international supported) |
Province | string | Optional | 2-39 | Card holder Province |
Country | string | Required | 2 | Card holder Country |
MerchantPayAccount | string | Optional | max 32 | Optional reporting field |
OfficeID | string | Optional | max 10 | Optional reporting field |
UserID | string | Optional | max 15 | Optional reporting field |
AdditionalSearch | string | Optional | max 20 | Optional reporting field |
AccountCode1 | string | Optional | max 20 | Optional reporting field |
AccountCode2 | string | Optional | max 20 | Optional reporting field |
AccountCode3 | string | Optional | max 20 | Optional reporting field |
ConvFeeAmount | string | Optional | max 6 | Secondary Amount to denote what portion of the amount field should be applied as a convenience fee or split settlement. (Vantiv Only) |
secure3D | string | Optional | Field to contain CAVV, XID, and ECI for VISA transactions only. Fields must be separated by pipes in this order. CAVV|XID|ECI | |
AuthOnly | bool | Optional | false = Sale Transaction, true = Auth Only | |
TerminalID | string | Optional | max 10 | Tenerum terminal ID. When sending terminal ID, leave card number, expiration date and CVV empty. |
MobileWalletType | string | Optional | max 3 | Mobile wallet Type: 1 = Google Pay, 2 = Apple Pay, 3 = Samsung Pay |
MobileWalletCryptogram | string | Optional | max 100 | Cryptogram received from mobile wallet (Required if MobileWalletType is set) |
MobileWalletECI | string | Optional | max 10 | ECI code received from mobile wallet (Required if MobileWalletType is set) |
TrackData | string | Optional | max 150 | Unecypted Tack1/Track2 or combined Track1 and Tack2 data. If sending encrypted track data please contact us for formatting specifications. |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Mark/Capture Transaction
POST https://api.securepds.com/2.0/payments.svc/JSON/MarkCCPayment
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"Amount": "string",
"ConfirmationID": "string",
"ConvFeeAmount": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method is used to Mark/Capture a previous AuthOnly transaction.
This allows you to submit a new primary and convenience fee amount for the transaction.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/MarkCCPayment
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
Amount | string | Required | max 8 | Total Amount of Transaction including fees (#0.00) |
ConfirmationID | string | Required | 15-20 | Confirmation ID from original transaction |
ConvFeeAmount | string | Required | max 6 | Secondary Amount to denote what portion of the amount field should be applied as a convenience fee or Split Settlement. (Vantiv Only) |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Void/Refund Transaction
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitCCVoid
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"Amount": "string",
"ConfirmationID": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to request a Void/Refund of a credit card transaction.
NOTE: The void or refund operation will be automatically selected based on the current status of the transaction.
Also note that AuthOnly transactions cannot be voided.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitCCVoid
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
Amount | string | Required | max 8 | Amount of Transaction (#0.00) |
ConfirmationID | string | Required | 15-20 | Confirmation ID from original transaction |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
ACH Payments
ACH Payment
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitACHPayment
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"RoutingNumber": "string",
"AccountNumber": "string",
"TransCode": "string",
"Amount": "string",
"FirstName": "string",
"LastName": "string",
"EmailAddress": "string",
"Address1": "string",
"Address2": "string",
"City": "string",
"State": "string",
"Zip": "string",
"Province": "string",
"Country": "string",
"MerchantPayAccount": "string",
"OfficeID": "string",
"UserID": "string",
"AdditionalSearch": "string",
"AccountCode1": "string",
"AccountCode2": "string",
"AccountCode3": "string",
"ACHOpt1": "string",
"SameDayACH": "string",
"StandardEntryCode": "string",
"Description": "string",
"AddendaData": "string",
"CheckNegativeAccounts": false,
"TokenizeOnly": false,
"ConvFeeAmount": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to submit ACH Debits, ACH Credits, and ACH Prenotes.
Prenotes only require amount, first name and last name fields to be entered
Additional information on transaction and SEC codes are below this method.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitACHPayment
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
RoutingNumber | string | Required | 9 | Bank Routing Number |
AccountNumber | string | Required | max 17 | Bank Account Number |
TransCode | string | Required | 2 | NACHA Transaction Code |
Amount | string | Required | max 8 | Total Amount of Transaction including fees (#0.00) |
FirstName | string | Required | 2-19 | Account holder first name |
LastName | string | Required | 2-19 | Account holder last name |
EmailAddress | string | Required | 2-39 | Account holder email address |
Address1 | string | Required | 2-39 | Account holder address 1 |
Address2 | string | Optional | 2-39 | Account holder address 2 |
City | string | Required | 2-39 | Account holder city |
State | string | Required | 2 | Account holder state code |
Zip | string | Required | 4-10 | Account holder zip code (international supported) |
Province | string | Optional | 2-39 | Account holder Province |
Country | string | Required | 2 | Account holder Country |
MerchantPayAccount | string | Optional | max 32 | Optional reporting field |
OfficeID | string | Optional | max 10 | Optional reporting field |
UserID | string | Optional | max 15 | Optional reporting field |
AdditionalSearch | string | Optional | max 20 | Optional reporting field |
AccountCode1 | string | Optional | max 20 | Optional reporting field |
AccountCode2 | string | Optional | max 20 | Optional reporting field |
AccountCode3 | string | Optional | max 20 | Optional reporting field |
ACHOpt1 | string | Optional | max 20 | Optional reporting field |
SameDayACH | string | Optional | max 100 | Enter "SD" to request same day ACH processing |
StandardEntryCode | string | Required | 3 | NACHA SEC Code: See table below for valid values. |
Description | string | Optional | max 10 | Optional reporting field |
AddendaData | string | Optional | max 80 | Optional reporting field |
CheckNegativeAccounts | bool | Required | Request or skip negative accounts database check (additional fees apply) | |
TokenizeOnly | bool | Required | Set to true to tokenize the account information instead of a transaction | |
ConvFeeAmount | string | Optional | max 6 | Secondary Amount to denote what portion of the amount field should be applied as a convenience fee or split settlement. (contact sales prior to using this feature) |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Transactions Codes
Code | Description |
---|---|
22 | Credit to Checking Account |
27 | Debit from Checking Account |
32 | Credit to Savings Account |
37 | Debit from Savings Account |
23 | Prenote for Credits on a Checking Account |
28 | Prenote for Debits on a Checking Account |
33 | Prenote for Credits on a Savings Account |
38 | Prenote for Debits on a Savings Account |
Standard Entry Codes
Code | Description |
---|---|
WEB | Web initiated transaction |
PPD | Prearranged payment and deposit |
TEL | Telephone initiated transaction |
CCD | Corporate Credit and Debit transaction |
Void/Refund Transaction
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitACHVoidReturn
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"Amount": "string",
"ConfirmationID": "string",
"Description": "string",
"PaymentID": "string",
"UserID": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to request a Void/Return of an ACH transaction.
NOTE: The void or refund operation will be automatically selected based on the current status of the transaction.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitACHVoidReturn
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
Amount | string | Required | max 8 | Amount of Transaction (#0.00) |
ConfirmationID | string | Required | 15-20 | Confirmation ID from original transaction |
Description | string | Optional | max 10 | Optional description |
PaymentID | string | Optional | max 20 | Optional payment reference number |
UserID | string | Optional | max 15 | Optional User ID |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Remote Check Payments
Remote Check Payment
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitRCCPayment
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"EmailAddress": "string",
"Amount": "string",
"FirstName": "string",
"LastName": "string",
"EmailAddress": "string",
"Address1": "string",
"Address2": "string",
"City": "string",
"State": "string",
"Zip": "string",
"RoutingNumber": "string",
"AccountNumber": "string",
"CheckNumber": "string",
"BankName": "string",
"MerchantPayAccount": "string",
"OfficeID": "string",
"UserID": "string",
"AccountCode1": "string",
"AccountCode2": "string",
"AccountCode3": "string",
"CheckNegativeAccounts": false
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to submit Remote Check payments.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitRCCPayment
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
Amount | string | Required | max 8 | Amount of Transaction (#0.00) |
FirstName | string | Required | 2-19 | Account holder first name |
LastName | string | Required | 2-19 | Account holder last name |
EmailAddress | string | Optional | 2-39 | Account holder email address |
Address1 | string | Optional | 2-39 | Account holder address 1 |
Address2 | string | Optional | 2-39 | Account holder address 2 |
City | string | Optional | 2-39 | Account holder city |
State | string | Required | 2 | Account holder state code |
Zip | string | Optional | 4-10 | Account holder zip code |
RoutingNumber | string | Required | 9 | Bank Routing Number on the check |
AccountNumber | string | Required | 4-17 | Bank Account Number on the check |
CheckNumber | string | Optional | 1-10 | Check Number (for record keeping only) |
BankName | string | Optional | 1-20 | Issuing Bank Name |
MerchantPayAccount | string | Optional | 1-32 | Optional reporting field |
OfficeID | string | Optional | max 10 | Optional reporting field |
UserID | string | Optional | max 15 | Optional reporting field |
AccountCode1 | string | Optional | max 20 | Optional reporting field |
AccountCode2 | string | Optional | max 20 | Optional reporting field |
AccountCode3 | string | Optional | max 20 | Optional reporting field |
CheckNegativeAccounts | bool | Optional | Request or skip negative accounts database check (additional fees apply) |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Void Remote Check Payment
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitRCCVoid
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"ConfirmationID": "string",
"UserID": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to Void Remote Check Payment records.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitRCCVoid
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
ConfirmationID | string | Required | max 30 | Confirmation ID from the original payment |
UserID | string | Optional | max 15 | Optional User ID |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Cash Payments
Cash Payment
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitCashPayment
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"Amount": "string",
"FirstName": "string",
"LastName": "string",
"EmailAddress": "string",
"Address1": "string",
"Address2": "string",
"City": "string",
"State": "string",
"Zip": "string",
"OfficeID": "string",
"UserID": "string",
"AccountCode1": "string",
"AccountCode2": "string",
"AccountCode3": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to submit Cash Payment records.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitCashPayment
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
Amount | string | Required | max 8 | Amount of Transaction (#0.00) |
FirstName | string | Optional | 2-19 | Account holder first name |
LastName | string | Required | 2-19 | Account holder last name |
EmailAddress | string | Optional | 2-39 | Account holder email address |
Address1 | string | Optional | 2-39 | Account holder address 1 |
Address2 | string | Optional | 2-39 | Account holder address 2 |
City | string | Optional | 2-39 | Account holder city |
State | string | Optional | 2 | Account holder state code |
Zip | string | Optional | 4-10 | Account holder zip code |
OfficeID | string | Optional | max 10 | Optional reporting field |
UserID | string | Optional | max 15 | Optional reporting field |
AccountCode1 | string | Optional | max 20 | Optional reporting field |
AccountCode2 | string | Optional | max 20 | Optional reporting field |
AccountCode3 | string | Optional | max 20 | Optional reporting field |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Void Cash Payment
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitCashVoid
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"ConfirmationID": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to Void Cash Payment records.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitCashVoid
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
ConfirmationID | string | Required | max 30 | Confirmation ID from the original payment |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Printed Checks
Send Printed Check
POST https://api.securepds.com/2.0/payments.svc/JSON/SendCheck
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"PaymentDate": "string",
"MerchantPayAccount": "string",
"CheckWriterToken": "string",
"CheckWriterFirstName": "string",
"CheckWriterLastName": "string",
"CheckWriterAddress1": "string",
"CheckWriterAddress2": "string",
"CheckWriterCity": "string",
"CheckWriterState": "string",
"CheckWriterZip": "string",
"CheckWriterPhone": "string",
"CheckWriterAccountNumber": "string",
"CheckWriterRoutingNumber": "string",
"Amount": "string",
"CheckNumber": "string",
"PayeeAccountNumber": "string",
"AdditionalSearch": "string",
"PayeeName": "string",
"PayeeAddress1": "string",
"PayeeAddress2": "string",
"PayeeCity": "string",
"PayeeState": "string",
"PayeeZip": "string",
"MerchantName": "string",
"BankName": "string",
"TokenizeOnly": false
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to submit a request to have a physical check printed and mailed.
To create a Token enter all of the account information and set the TokenizeOnly field to true.
When using a Token, the Check Writer fields are not required and will be replaced with the values from the token.
NOTE: Speak to a sales representative to have access to this method enabled
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/SendCheck
Sample Check Image
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
PaymentDate | string | Required | 8 | Date for the check to be printed (MMDDYYYY) |
MerchantPayAccount | string | Optional | max 39 | Optional reporting field |
CheckWriterToken | string | Optional | max 39 | Token for Stored Check Writer |
CheckWriterFirstName | string | Conditional | 2-39 | First Name of the check writer |
CheckWriterLastName | string | Conditional | 2-39 | Last Name of the check writer |
CheckWriterAddress1 | string | Conditional | 4-39 | Address 1 of the check writer |
CheckWriterAddress2 | string | Optional | 4-39 | Address 2 of the check writer |
CheckWriterCity | string | Conditional | 2-39 | City of the check writer |
CheckWriterState | string | Conditional | 2 | State of the check writer |
CheckWriterZip | string | Conditional | 5-10 | Zip code of the check writer |
CheckWriterPhone | string | Optional | 10-12 | Phone number of the check writer |
CheckWriterAccountNumber | string | Conditional | max 17 | Checking Account number of the check writer |
CheckWriterRoutingNumber | string | Conditional | 9 | Routing Number of the check writer |
Amount | string | Required | max 8 | Amount for the check (#0.00) |
CheckNumber | string | Required | 3-9 | Unique Check Number |
PayeeAccountNumber | string | Required | 2-30 | Payee's Account Number |
AdditionalSearch | string | Optional | max 15 | Optional reporting field |
PayeeName | string | Required | 2-39 | Name of payee |
PayeeAddress1 | string | Required | 4-39 | Address 1 of payee |
PayeeAddress2 | string | Optional | 4-20 | Address 2 of payee |
PayeeCity | string | Required | 2-39 | City of payee |
PayeeState | string | Required | 2 | State of payee |
PayeeZip | string | Required | 5-10 | Zip code of payee |
MerchantName | string | Required | 3-39 | Merchant Name to appear on the check |
BankName | string | Required | 3-39 | Bank Name to appear on the check |
TokenizeOnly | bool | Required | true = information will be tokenized only, false = standard check |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Void Printed Check
POST https://api.securepds.com/2.0/payments.svc/JSON/VoidCheck
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"ConfirmationID": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to Void Check Payment records that have not yet been printed.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/VoidCheck
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
ConfirmationID | string | Required | max 30 | Confirmation ID from the original payment |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
MasterCard RPPS
Find Biller ID
POST https://api.securepds.com/2.0/rpps.svc/JSON/FindBiller
{
"merchantID": "string",
"login": "string",
"password": "string",
"billerName": "string",
"zipCode": "string"
}
The above command returns the following JSON structure:
{
"status": "string",
"message": "string",
[
{
"billerID": "string",
"mcrppsID": "string",
"billerName": "string",
"address1": "string",
"address2": "string",
"city": "string",
"state": "string",
"country": "string",
"phone": "string",
"zip": "string",
"billerClass": "string"
}
]
}
This method allows you to look up a Biller's name to see if they are on the MC RPPS List.
NOTE: Speak to a sales representative to have access to this method enabled
HTTP Request
POST https://api.securepds.com/2.0/rpps.svc/JSON/FindBiller
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
merchantID | string | Required | 6-10 | Merchant Identification Number |
login | string | Required | 6-12 | API Username |
password | string | Required | max 25 | API Password |
billerName | string | Required | 4-10 | Biller Name |
zipCode | string | Optional | max 10 | Biller Zipcode |
Response
Name | Type | Description |
---|---|---|
status | string | "success" or "failure" |
message | string | On failure will contain the error description |
-billerID | string | PDS's Biller ID for the MC RPPS Biller |
-mcrppsID | string | Code used when creating the MC RPPS Payment file |
-billerName | string | Biller's name listed at MC RPPS |
-address1 | string | Biller's address1 |
-address2 | string | Biller's address2 |
-city | string | Biller's city |
-state | string | Biller's State |
-country | string | Biller's country |
-phone | string | Biller's Phone |
-zip | string | Biller's Zip |
-billerClass | string | The class of the Biller |
Biller Account Mask
POST https://api.securepds.com/2.0/rpps.svc/JSON/BillerMasks
{
"merchantID": "string",
"login": "string",
"Password": "string",
"billerID": "string"
}
The above command returns the following JSON structure:
{
"status": "string",
"message":"string",
[
{
"billerID":"string",
"maskLength":"string",
"maskFormat":"string"
}
]
}
This method allows you to look up all the biller's account mask.
NOTE: Speak to a sales representative to have access to this method enabled
HTTP Request
POST https://api.securepds.com/2.0/rpps.svc/JSON/BillerMasks
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
merchantID | string | Required | 6-10 | Merchant Identification Number |
login | string | Required | 6-12 | API Username |
password | string | Required | max 25 | API Password |
billerID | string | Required | 4-10 | PDS's biller ID for the MC RPPS Biller |
Response
Name | Type | Description |
---|---|---|
status | string | "success" or "failure" |
message | string | On failure will contain the error description |
-billerID | string | PDS's Biller ID for the MC RPPS Biller |
-maskLength | string | Decimal value length for the mask |
-maskFormat | string | # for any numeric character,* for alpha character, |
! for alphanumeric including most special character,@ for alpha character on numeric character |
Validate Account
POST https://api.securepds.com/2.0/rpps.svc/JSON/ValidateAccount
{
"merchantID": "string",
"login": "string",
"password": "string",
"billerID": "string",
"accountNo": "string"
}
The above command returns the following JSON structure:
{
"status": "string",
"message": "string"
}
This method allows you to validate the account number based on the available masks for a Biller ID.
NOTE: Speak to a sales representative to have access to this method enabled
HTTP Request
POST https://api.securepds.com/2.0/rpps.svc/JSON/ValidateAccount
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
merchantID | string | Required | 6-10 | Merchant Identification Number |
login | string | Required | 6-12 | API Username |
password | string | Required | max 25 | API Password |
billerID | string | Required | 4-10 | PDS's biller ID for the MC RPPS Biller |
accountNo | string | Required | max 25 | Client's Account number |
Response
Name | Type | Description |
---|---|---|
status | string | "success" or "partial" or "fail" |
message | string | On based on status will contain the description |
Submit RPPS Payment
POST https://api.securepds.com/2.0/rpps.svc/JSON/SubmitRPPSPayment
{
"merchantID": "string",
"login": "string",
"password": "string",
"accountName": "string",
"accountNumber": "string",
"additionalSearch": "string",
"amount": "string",
"billerID": "string",
"billerName": "string",
"paymentType": "string"
}
The above command returns the following JSON structure:
{
"status": "string",
"message": "string",
"confirmationID": "string"
}
This method allows you to submit Mastercard RPPS Payment.
NOTE: Speak to a sales representative to have access to this method enabled
HTTP Request
POST https://api.securepds.com/2.0/rpps.svc/JSON/SubmitRPPSPayment
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
merchantID | string | Required | 6-10 | Merchant Identification Number |
login | string | Required | 6-12 | API Username |
password | string | Required | max 25 | API Password |
accountName | string | Required | 4-15 | Accountholder's Name |
accountNumber | string | Required | 4-22 | Accountholder's Number |
additionalSearch | string | Optional | 1-20 | Additional Information |
amount | string | Required | Max 8 | Amount of Transaction(#0.00) |
billerID | string | Required | 4-10 | MC RPPS Biller ID (mcrppsID) returned from Find Biller method |
billerName | string | Required | 4-15 | Biller's Name |
paymentType | string | Required | 2 | Payment Type Credit(22) or Debit(27) |
Response
Name | Type | Description |
---|---|---|
status | string | "success" or "failure" |
message | string | On based on status will contain the description |
confirmation ID | string | On success will contain the transaction confirmation ID |
Void RPPS Payment
POST https://api.securepds.com/2.0/payments.svc/JSON/VoidRPPSPayment
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"ConfirmationID": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to Void RPPS Payment records that have not yet been sent.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/VoidRPPSPayment
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
ConfirmationID | string | Required | max 30 | Confirmation ID from the original payment |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Utilities
Repeating Payments
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitRepeatPayment
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"ConfirmationID": "string",
"CardNumber": "string",
"ExpDate": "string",
"UseDebitNetwork": false,
"RoutingNumber": "string",
"AccountNumber": "string",
"TransCode": "string",
"CheckNegativeAccounts": false,
"FirstPaymentDate": "string",
"PaymentFrequency": "string",
"NumberOfPayments": int,
"FinalPaymentAmount": "string",
"Amount": "string",
"FirstName": "string",
"LastName": "string",
"EmailAddress": "string",
"Address1": "string",
"Address2": "string",
"City": "string",
"State": "string",
"Zip": "string",
"Province": "string",
"Country": "string",
"MerchantPayAccount": "string",
"OfficeID": "string",
"UserID": "string",
"AdditionalSearch": "string",
"AccountCode1": "string",
"AccountCode2": "string",
"AccountCode3": "string",
"SecondaryAmount": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to submit repeating payment instructions for ACH, Credit Cards, and Pinless Debit Cards
Additional information on transaction codes, SEC codes, and payment frequencies are below this method.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitRepeatPayment
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
ConfirmationID | string | Optional | 14-17 | (reserved for future use) |
CardNumber | string | Optional | 14-17 | Debit or Credit Card Number |
ExpDate | string | Optional | 6 | Expiration Date (MMYYYY) |
UseDebitNetwork | bool | Optional | Set to true to process as a pinless debit transaction | |
RoutingNumber | string | Optional | 9 | Bank Routing Number |
AccountNumber | string | Optional | max 17 | Bank Account Number |
TransCode | string | Optional | 2 | NACHA Transaction Code (set to 27 if processing pinless, 27 or 37 for ACH.) Leave blank for CC. |
CheckNegativeAccounts | bool | Required | Request or skip negative accounts database check (additional fees apply) | |
FirstPaymentDate | string | Required | 10 | Date of first payment (MM/DD/YYYY format) |
PaymentFrequency | string | Required | max 2 | See chart below for values |
NumberOfPayments | string | Required | max 2 | Number of payments to process. To create until further notice use a value of -1 |
FinalPaymentAmount | string | Optional | max 8 | Amount of Final Transaction if different from other payment amounts. (#0.00) |
Amount | string | Required | max 8 | Amount of Transaction (#0.00) |
FirstName | string | Required | 2-19 | Card holder first name |
LastName | string | Required | 2-19 | Card holder last name |
EmailAddress | string | Required | 2-39 | Card holder email address |
Address1 | string | Required | 2-39 | Card holder address 1 |
Address2 | string | Optional | 2-39 | Card holder address 2 |
City | string | Required | 2-39 | Card holder city |
State | string | Required | 2 | Card holder state code |
Zip | string | Required | 4-10 | Card holder zip code (international supported) |
Province | string | Optional | 2-39 | Card holder Province |
Country | string | Required | 2 | Card holder Country |
MerchantPayAccount | string | Optional | max 32 | Optional reporting field |
OfficeID | string | Optional | max 10 | Optional reporting field |
UserID | string | Optional | max 15 | Optional reporting field |
AdditionalSearch | string | Optional | max 20 | Optional reporting field |
AccountCode1 | string | Optional | max 20 | Optional reporting field |
AccountCode2 | string | Optional | max 20 | Optional reporting field |
AccountCode3 | string | Optional | max 20 | Optional reporting field |
SecondaryAmount | string | Optional | max 8 | Optional amount used for Convenience Fees and Split settlement |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Cancel Repeating Payments
POST https://api.securepds.com/2.0/payments.svc/JSON/CancelRepeatPayment
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"Confirmation": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to cancel repeating payments for ACH, Credit Cards, and Pinless Debit Cards.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/CancelRepeatPayment
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
Confirmation | string | Required | 15-25 | Confirmation ID from original repeating payment transaction |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Transactions Codes
Code | Description |
---|---|
22 | Credit to Checking Account |
27 | Debit from Checking Account |
32 | Credit to Savings Account |
37 | Debit from Savings Account |
23 | Prenote for Credits on a Checking Account |
28 | Prenote for Debits on a Checking Account |
33 | Prenote for Credits on a Savings Account |
38 | Prenote for Debits on a Savings Account |
Standard Entry Codes
Code | Description |
---|---|
WEB | Web initiated transaction |
PPD | Prearranged payment and deposit |
TEL | Telephone initiated transaction |
CCD | Corporate Credit and Debit transaction |
Payment Frequencies
Code | Description |
---|---|
1 | Every week |
2 | Every two weeks |
3 | Every four weeks |
4 | Once a month |
6 | Every two months |
7 | Every three months |
8 | Every six months |
9 | Once a Year |
10 | One time |
Tokenized Payments
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitTokenPayment
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"NewExpDate": "string",
"Amount": "string",
"Token": "string",
"MerchantPayAccount": "string",
"OfficeID": "string",
"UserID": "string",
"AdditionalSearch": "string",
"AccountCode1": "string",
"AccountCode2": "string",
"AccountCode3": "string",
"ACHOpt1": "string",
"SameDayACH": "string",
"StandardEntryCode": "string",
"Description": "string",
"AddendaData": "string",
"CheckNegativeAccounts": false,
"ConvFeeAmount": "string",
"AuthOnly": false
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to submit a payment for ACH/Credit Card/Debit Card from a previous payment's confirmation ID or token.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitTokenPayment
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
NewExpDate | string | Optional | 6 | Expiration Date (MMYYYY) |
Amount | string | Required | max 8 | Amount of Transaction (#0.00) |
Token | string | Required | 14-17 | Token from original payment |
MerchantPayAccount | string | Optional | max 32 | Optional reporting field |
OfficeID | string | Optional | max 10 | Optional reporting field |
UserID | string | Optional | max 15 | Optional reporting field |
AdditionalSearch | string | Optional | max 20 | Optional reporting field |
AccountCode1 | string | Optional | max 20 | Optional reporting field |
AccountCode2 | string | Optional | max 20 | Optional reporting field |
AccountCode3 | string | Optional | max 20 | Optional reporting field |
ACHOpt1 | string | Optional | max 20 | Optional reporting field |
SameDayACH | string | Optional | max 100 | Enter "SD" to request same day ACH processing |
StandardEntryCode | string | Required | 3 | NACHA SEC Code: See table below Submit ACH method. |
Description | string | Optional | max 10 | Optional reporting field |
AddendaData | string | Optional | max 80 | Optional reporting field |
CheckNegativeAccounts | bool | Required | Request or skip negative accounts database check (additional fees apply) | |
ConvFeeAmount | string | Optional | max 6 | Secondary Amount to denote what portion of the amount field should be applied as a convenience fee. (Vantiv only) |
AuthOnly | bool | Optional | max 100 | false = Sale Transaction, true = Auth Only |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
BillPay Invoices
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitInvoice
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"AccountNumber": "string",
"PONumber": "string",
"AccountName": "string",
"InvoiceNumber": "string",
"InvoiceDueDate": "string",
"BillToFirstName": "string",
"BillToLastName": "string",
"BillToCompany": "string",
"BillToAddress1": "string",
"BillToAddress2": "string",
"BillToCity": "string",
"BillToState": "string",
"BillToZip": "string",
"BillToCountry": "string",
"BillToEmail": "string",
"BillToPhone": "string",
"ShipToAddress1": "string",
"ShipToAddress2": "string",
"ShipToCity": "string",
"ShipToState": "string",
"ShipToZip": "string",
"ShipToCountry": "string",
"ShipToPhone": "string",
"BalanceUpdate": 0.00,
"LineItems":
[
{
"ItemName": "string",
"ItemPrice": 0.00,
"Description": "string",
"Qty": 0.00
}
]
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Confirmation": "string"
}
This method allows you to submit a customer invoice to our BillPay system.
To update a balance send the same account number and invoice number with the new balance amount in the BalanceUpdate field. (all line item fields will be ignored)
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/SubmitInvoice
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
AccountNumber | string | Required | Max 20 | Numeric only Customer Account Number |
PONumber | string | Required | max 20 | Numeric only Customer PO Number |
AccountName | string | Required | Max 50 | Customer Account Name |
InvoiceNumber | string | Required | max 32 | Numeric only Invoice Number |
InvoiceDueDate | string | Required | max 10 | Invoice Due Date (MM/DD/YYYY) |
BillToFirstName | string | Required | max 20 | First Name |
BillToLastName | string | Required | max 20 | Last Name |
BillToCompany | string | Optional | max 20 | Company |
BillToAddress1 | string | Optional | max 30 | Address 1 |
BillToAddress2 | string | Optional | max 20 | Address 2 |
BillToCity | string | Optional | max 30 | City |
BillToState | string | Optional | 2 | State Code |
BillToZip | string | Optional | 5 | Zip Code |
BillToCountry | string | Optional | 2 | Country Code |
BillToEmail | string | Optional | max 50 | Email address |
BillToPhone | string | Optional | max 20 | Phone number |
ShipToAddress1 | string | Optional | max 30 | Address 1 |
ShipToAddress2 | string | Optional | max 30 | Address 2 |
ShipToCity | string | Optional | max 30 | City |
ShipToState | string | Optional | 2 | State Code |
ShipToZip | string | Optional | 5 | Zip Code |
ShipToCountry | string | Optional | 2 | Country Code |
ShipToPhone | string | Optional | max 20 | Phone Number |
BalanceUpdate | decimal | Optional | New balance for Invoice | |
LineItems | string | Required | ||
-ItemName | string | Required | max 20 | Item Name |
-ItemPrice | decimal | Required | Item Price | |
-Description | string | Required | max 100 | Item Description |
-Qty | decimal | Required | Quantity |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
Confirmation | string | On success will contain the transaction confirmation ID |
Get Convenience Fee
POST https://api.securepds.com/2.0/payments.svc/JSON/GetConvenienceFee
{
"AccountNumber": "string",
"IsACH": false,
"Login": "string",
"MerchantID": "string",
"Password": "string",
"TransactionAmount": 12.34,
"IsPinless": false
}
The above command returns the following JSON structure:
{
"AccountType": "string",
"BinMatch": "string",
"ConvenienceFeeAmount": 12.34,
"IsConvFee": false,
"Message": "string",
"Status": "string"
}
This method allows you to request the convenience fee/split settlement amount for a given transaction.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/GetConvenienceFee
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
TransactionAmount | string | Required | max 15 | Amount of Transaction (#0.00) |
IsACH | bool | Required | max 5 | Indicates whether or not the transaction is an ACH transaction. |
AccountNumber | string | Optional | min 4 | Number of Account *REQUIRED ONLY FOR CREDIT CARD TRANSACTIONS |
IsPinless | bool | Required | max 5 | Indicates whether or not the transaction is a Pinless transaction. |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On success will contain the description of the fee such as 2.99% or $2.99 |
AccountType | string | Returns ACH, Credit Card, Debit Card |
IsConvFee | bool | Indicates if amount represents convenience fee or split settlement |
ConvenienceFeeAmount | decimal | Amount of convenience fee |
BinMatch | string | The BIN match |
Get Prefunding Balance
POST https://api.securepds.com/2.0/payments.svc/JSON/GetPrefundingBalance
{
"MerchantID": "string",
"Login": "string",
"Password": "string"
}
The above command returns the following JSON structure:
{
"ACHPrefundingBalance": 0.00,
"PinlessPrefundingBalance": 0.00,
"Message": "string",
"Status": "string"
}
This method allows you to request the current balance of your ACH and Pinless Debit Card Prefunding Accounts.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/GetPrefundingBalance
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error message |
ACHPrefundingBalance | decimal | Real time balance of the ACH prefunding account |
PinlessPrefundingBalance | decimal | Real time balance of the Pinless prefunding account |
Verify ACH Account
POST https://api.securepds.com/2.0/payments.svc/JSON/VerifyACHAccount
{
"MerchantID": "string",
"Login": "string",
"Password": "string"
"RoutingNumber": "string"
"AccountNumber": "string"
}
The above command returns the following JSON structure:
{
"Confirmation": "string",
"Message": "string",
"Status": "string"
}
This method allows you to check if an account will be rejected by providing the routing number and account number.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/VerifyACHAccount
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
RoutingNumber | string | Required | max 9 | Bank Routing Number |
AccountNumber | string | Required | max 17 | Bank Account Number |
Response
Name | Type | Description |
---|---|---|
Confirmation | string | Confirmation ID for this transaction |
Message | string | On failure will contain the error message |
Status | string | "success" or "failure" |
Reporting
Transaction Details
POST https://api.securepds.com/2.0/payments.svc/JSON/GetTransactionDetails
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"Confirmation": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Transactions":
[
{
"ACHOpt1": "string",
"ACHOpt2": "string",
"AVSCode": "string",
"AccountCode1": "string",
"AccountCode2": "string",
"AccountCode3": "string",
"AccountName": "string",
"AccountType": "string",
"AdditionalSearch1": "string",
"Address1": "string",
"Address2": "string",
"Amount": "string",
"AuthCode": "string",
"BatchNumber": "string",
"CVVResp": "string",
"City": "string",
"Confirmation": "string",
"ConvFee": 0.00,
"EmailAddress": "string",
"ErrorMessage": "string",
"FinalStatus": "string",
"FirstName": "string",
"LastName": "string",
"MerchantPayAccount": "string",
"PaymentOrigination": "string",
"PaymentType": "string",
"RefConfirmation": "string",
"RepeatConfirmation": "string",
"ResponseCode": "string",
"ReturnDate": "string",
"SimpResp": "string",
"State": "string",
"SubmitDate": "\/Date(1474360707280-0500)\/",
"UserID": "string",
"Zip": "string"
}
]
}
This method allows you to get transaction details based on a confirmation ID
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/GetTransactionDetails
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
Confirmation | string | Required | 14-17 | Confirmation ID of transaction |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
transactions | object | Array of Transaction |
-ACHOpt1 | string | Optional Reporting field |
-ACHOpt2 | string | Used to denote Same Day ACH record ("SD") |
-AVSCode | string | Credit Card Address Verification Code |
-AccountCode1 | string | Optional Reporting field |
-AccountCode2 | string | Optional Reporting field |
-AccountCode3 | string | Optional Reporting field |
-AccountName | string | Full name of payee |
-AccountType | string | Credit/Debit/ACH or repeating Credit/Debit/ACH or Void/Returns or Marks |
-AdditionalSearch1 | string | Optional Reporting field |
-Address1 | string | Address line 1 of payee |
-Address2 | string | Address line 2 of payee |
-Amount | string | Amount of the transaction |
-AuthCode | string | Gateway Authorization Code |
-BatchNumber | string | ACH or CC batch number |
-CVVResp | string | CVV check response |
-City | string | City of payee |
-Confirmation | string | Confirmation ID for this transaction |
-ConvFee | decimal | Convenience Fee/Split Settlement Amount |
-EmailAddress | string | Email address of payee |
-ErrorMessage | string | Gateway error message |
-FinalStatus | string | Final status of this transaction |
-FirstName | string | First name of payee |
-LastName | string | Last name of payee |
-MerchantPayAccount | string | Optional Reporting field |
-PaymentOrigination | string | Denotes where the transaction originated. (Web service, repeat payment, CSR View, etc.) |
-PaymentType | string | Credit Card(VISA, AMEX, MSTR, DISC), ACH/Debit (27/37 Debit, 22/32 Credit) |
-RefConfirmation | string | Reference transaction Confirmation ID. Used when creating voids/returns |
-RepeatConfirmation | string | Repeat payment confirmation if generated from a repeating payment instruction |
-ResponseCode | string | Gateway Response Code |
-ReturnDate | string | Date of ACH return |
-SimpResp | string | Simple Response from Credit Card Gateway |
-State | string | State of payee |
-SubmitDate | string | Date and time the transaction was entered |
-UserID | string | Optional Reporting field |
-Zip | string | Zip Code of the payee |
Transaction List
POST https://api.securepds.com/2.0/payments.svc/JSON/GetTransactionList
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"DateFrom": "string",
"DateTo": "string",
"FilterOptions": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"Transactions":
[
{
"ACHOpt1": "string",
"ACHOpt2": "string",
"AVSCode": "string",
"AccountCode1": "string",
"AccountCode2": "string",
"AccountCode3": "string",
"AccountName": "string",
"AccountType": "string",
"AdditionalSearch1": "string",
"Address1": "string",
"Address2": "string",
"Amount": "string",
"AuthCode": "string",
"BatchNumber": "string",
"CVVResp": "string",
"City": "string",
"Confirmation": "string",
"ConvFee": 0.00,
"EmailAddress": "string",
"ErrorMessage": "string",
"FinalStatus": "string",
"FirstName": "string",
"LastName": "string",
"MerchantPayAccount": "string",
"PaymentOrigination": "string",
"PaymentType": "string",
"RefConfirmation": "string",
"RepeatConfirmation": "string",
"ResponseCode": "string",
"ReturnDate": "string",
"SimpResp": "string",
"State": "string",
"SubmitDate": "\/Date(1474360707280-0500)\/",
"UserID": "string",
"Zip": "string"
}
]
}
This method allows you to get transactions for a date range.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/GetTransactionList
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
DateFrom | string | Required | max 20 | Starting date of search. Format “MM/D/YYYY HH:MM:SS” |
DateTo | string | Required | max 20 | Ending date of search. Format “MM/D/YYYY HH:MM:SS” |
FilterOptions | string | Optional | max 100 | See table below for options |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
transactions | object | Array of Transaction |
-ACHOpt1 | string | Optional Reporting field |
-ACHOpt2 | string | Used to denote Same Day ACH record ("SD") |
-AVSCode | string | Credit Card Address Verification Code |
-AccountCode1 | string | Optional Reporting field |
-AccountCode2 | string | Optional Reporting field |
-AccountCode3 | string | Optional Reporting field |
-AccountName | string | Full name of payee |
-AccountType | string | Credit/Debit/ACH or repeating Credit/Debit/ACH or Void/Returns or Marks |
-AdditionalSearch1 | string | Optional Reporting field |
-Address1 | string | Address line 1 of payee |
-Address2 | string | Address line 2 of payee |
-Amount | string | Amount of the transaction |
-AuthCode | string | Gateway Authorization Code |
-BatchNumber | string | ACH or CC batch number |
-CVVResp | string | CVV check response |
-City | string | City of payee |
-Confirmation | string | Confirmation ID for this transaction |
-ConvFee | decimal | Convenience Fee/Split Settlement Amount |
-EmailAddress | string | Email address of payee |
-ErrorMessage | string | Gateway error message |
-FinalStatus | string | Final status of this transaction |
-FirstName | string | First name of payee |
-LastName | string | Last name of payee |
-MerchantPayAccount | string | Optional Reporting field |
-PaymentOrigination | string | Denotes where the transaction originated. (Web service, repeat payment, CSR View, etc.) |
-PaymentType | string | Credit Card(VISA, AMEX, MSTR, DISC), ACH/Debit (27/37 Debit, 22/32 Credit) |
-RefConfirmation | string | Reference transaction Confirmation ID. Used when creating voids/returns |
-RepeatConfirmation | string | Repeat payment confirmation if generated from a repeating payment instruction |
-ResponseCode | string | Gateway Response Code |
-ReturnDate | string | Date of ACH return |
-SimpResp | string | Simple Response from Credit Card Gateway |
-State | string | State of payee |
-SubmitDate | string | Date and time the transaction was entered |
-UserID | string | Optional Reporting field |
-Zip | string | Zip Code of the payee |
Filter Options
Code | Description |
---|---|
achonly | Returns only ACH transactions |
creditonly | Returns only Credit Card transactions |
debitonly | Returns only Debit Card transactions |
text | Returns only Text-2-Pay transactions |
achreturn | Returns only ACH transactions that were returned |
achbatch | Returns ACH transactions by batch |
ccbatch | Returns Credit Card transactions by batch |
rcconly | Returns only Remote Check transactions |
rccbatch | Returns Remote Check transactions by batch |
rccreturn | Returns Remote Check transactions that were returned |
ACH Account Inquiry
POST https://api.securepds.com/2.0/payments.svc/JSON/ACHInquiry
{
"MerchantID": "string",
"Login": "string",
"Password": "string",
"RoutingNumber": "string",
"AccountNumber": "string",
"MaxTransactions": int,
"TransactionFilter": "string",
"TraceID": "string"
}
The above command returns the following JSON structure:
{
"Status": "string",
"Message": "string",
"TraceID": "string",
"creditRecordCount": int,
"creditTotalAmount": double,
"debitRecordCount": int,
"debitTotalAmount": double,
"returnsRecordCount": int,
"badReturnsRecordsCount": int,
"fromDate": "string",
"toDate": "string",
"merchantsSeen": int,
"TransactionList":
[
{
"amount": double,
"pmtType": "string",
"pmtOrigination": "string",
"state": "string",
"submitDate": "string",
"finalStatus": "string",
"errorMessage": "string"
}
]
}
This method allows you to get transactions for a date range.
HTTP Request
POST https://api.securepds.com/2.0/payments.svc/JSON/ACHInquiry
Parameters
Name | Type | Required | Length | Description |
---|---|---|---|---|
MerchantID | string | Required | 6-10 | Merchant Identification Number |
Login | string | Required | 6-12 | API Username |
Password | string | Required | max 25 | API Password |
RoutingNumber | string | Required | 9 | Bank Routing Number |
AccountNumber | string | Required | max 17 | Bank Account Number |
MaxTransactions | string | Required | Maximum number of transactions to return (0-35) | |
TransactionFilter | string | Optional | max 50 | Filter by transaction code (27/22/37/32) |
TraceID | string | Optional | max 64 | TraceID that will be echoed back in response and logged |
Response
Name | Type | Description |
---|---|---|
Status | string | "success" or "failure" |
Message | string | On failure will contain the error description |
TraceID | string | Echoed Trace ID from request |
creditRecordCount | int | Number of credit transactions seen |
creditTotalAmount | double | Total amount of all credits seen |
debitRecordCount | int | Number of debit transactions seen |
debitTotalAmount | double | Total amount of all debits seen |
returnsRecordCount | int | Number of returns seen |
badReturnsRecordsCount | int | Number of bad returns seen |
fromDate | string | Date of first transaction seen (YYYYMMDD format) |
toDate | string | Date of most recent transaction seen (YYYYMMDD format) |
merchantsSeen | int | Number of different merchants that have processed this account information |
TransactionList | object | Array of transactions |
-amount | string | Amount of transaction |
-pmtType | string | ACH transaction code (27,22,37,32) |
-pmtOrigination | string | Origin of the payment |
-state | string | State |
-submitDate | string | Date the transaction was submitted (MM/DD/YYYY) |
-finalStatus | string | Final status of the transaction |
-errorMessage | string | Error message |
Enrollment
Please click here for access to our Enrollment API documentation.
PDS Checkout
Please click here for access to our PDS Checkout documentation.
Code Samples
curl -X POST \
https://api.securepds.com/2.0/payments.svc/json/endpoint \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"MerchantID": "0000000001",
"Login": "API0000000001",
"Password": "Temp1234!",
"additionalData": "1221"
}'
WebRequest request = WebRequest.Create("https://api.securepds.com/2.0/payments.svc/json/endpoint");
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";
request.Timeout = 600000;
string input = "{\"MerchantID\":\"0000000001\",\"login\":\"API0000000001\",
\"password\":\"Temp1234!\",\"additionalData\":\"values\"}";
//Get the request stream
Stream POSTstream = request.GetRequestStream();
//Write the data bytes in the request stream
byte[] dataByte = Encoding.UTF8.GetBytes(sJSON.ToString());
POSTstream.Write(dataByte, 0, dataByte.Length);
POSTstream.Close();
//Get response from server
WebResponse POSTResponse = request.GetResponse();
StreamReader reader = new StreamReader(POSTResponse.GetResponseStream(), Encoding.UTF8);
string responseJSON = reader.ReadToEnd();
URL url = new URL("https://api.securepds.com/2.0/payments.svc/json/enpoint");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
String input = "{\"MerchantID\":\"0000000001\",\"login\":\"API0000000001\",
\"password\":\"Temp1234!\",\"additionalData\":\"values\"}";
OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();
if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
function CallSingularBillPayAPI() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
alert(this.responseText);
}
};
xhttp.open("POST", "https://api.securepds.com/2.0/payments.svc/json/endpointName", true);
xhttp.setRequestHeader("Content-type", "application/json");
var obj = '{"MerchantID":"0000000001","Login":"API0000000001","Password":"Temp1234!","additionalData":""}';
xhttp.send(obj);
}
let json: [String: Any] =
["MerchantID": "0000000001",
"Login": "API0000000001",
"Password": "Temp1234!",
"additionalData": ""]
let jsonData = try? JSONSerialization.data(withJSONObject: json)
let url = URL(string: "https://api.securepds.com/2.0/payments.svc/json/endpoint")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = jsonData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print(error?.localizedDescription ?? "No data")
return
}
let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
if let responseJSON = responseJSON as? [String: Any] {
print(responseJSON)
}
}
task.resume()
function callAPI($method, $url, $data){
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
// OPTIONS:
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
// EXECUTE:
$result = curl_exec($curl);
if(!$result){die("Connection Failure");}
curl_close($curl);
return $result;
}
$data_array = array(
"merchantID" => "0000000001",
"login" => "API0000000001",
"password" => "Temp1234!",
"additionalData" => "values"
),
);
$make_call = callAPI('POST', 'https://api.securepds.com/2.0/payments.svc/json/enpoint', json_encode($data_array));
$response = json_decode($make_call, true);
$errors = $response['response']['errors'];
$data = $response['response']['data'][0];
use REST::Client;
my $client = REST::Client->new();
$client->addHeader('Content-Type', 'application/json');
$client->addHeader('charset', 'UTF-8');
$client->addHeader('Accept', 'application/json');
$req = '{
"MerchantID" : "0000000001",
"Login" : "API0000000001",
"Password" : "Temp1234!",
"additionalData" : "",
}';
$url="https://api.securepds.com/2.0/payments.svc/json/endpoint";
$client->POST($url, $req);
print $client->responseContent();
require 'net/http'
url = 'https://api.securepds.com/2.0/payments.svc/json/endpoint'
params = {
merchantID => '0000000001',
login => 'API0000000001',
password => 'Temp1234!',
additionalData => 'values'
}
resp = Net::HTTP.post_form(url, params)
resp_text = resp.body
import requests
import json
def main():
data = {}
data[MerchantID] = '000000000001'
data[Login] = 'API0000000001'
data[Password] = 'Temp1234!'
data[additionalData] = ''
json = json.dumps(data)
req = requests.post('https://api.securepds.com/2.0/payments.svc/json/endpoint', data=None, json=None)
print("HTTP Status Code: " + str(req.status_code))
print(req.headers)
json_response = json.loads(req.content)
print(json_response)
if __name__ == '__main__':
main()
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
jsonData := map[string]string{
"MerchantID": "0000000001",
"Login": "API0000000001",
"password": "Temp234!",
"additionalData": "values"}
jsonValue, _ := json.Marshal(jsonData)
response, err := http.Post("https://api.securepds.com/2.0/payments.svc/json/endpoint",
"application/json",
bytes.NewBuffer(jsonValue))
if err == nil {
data, _ := ioutil.ReadAll(response.Body)
fmt.Println(data)
}
}
In the right hand panel we have provided code samples in several of the most popular programming languages.
You will find code for cURL, C#, JAVA, Javascript, Swift, PHP, Perl, Ruby, Python, and Go.
In addition to REST/JSON, we also support REST/XML, SOAP, and WCF calls.
For additional help and support during your integration please contact us at integrations@paymentdata.com
References
Test Account Numbers
Following account numbers can be used for testing
Account Type | Account Number | Routing Number |
---|---|---|
Credit Card | 4111111111111111 | |
Debit Card | 5489221100112235 | |
ACH | 123456789 | 555555550 |
PDS Response Codes
PDS will return 5000 series response codes for errors that occur within our system. Most of these errors are for improper formatting of data
Code | Description |
---|---|
5000 | Security Violation |
5001 | System Failure |
5002 | Unspecified Network Issue |
5003 | Unable To Parse Response |
5004 | Unable to Load Merchant Details |
5005 | Invalid Gateway Setup |
5006 | Transaction Limits Exceeded |
5007 | State Not Supported |
5008 | Prefunding Amount Exceeded |
5009 | Pinless Credits Cannot Be Returned |
5010 | Invalid Transaction Code |
5011 | Operation Not Valid On This Card |
5012 | Operation Not Available On This Transaction Type |
5020 | Invalid Confirmation ID |
5030 | Unable to locate record |
5031 | Unable to get gateway token |
5050 | Invalid Amount |
5051 | Invalid Credit Card Track Data |
5052 | Invalid Credit Card Track Data Method |
5053 | Invalid Email Address |
5054 | Invalid First Name |
5055 | Invalid Last Name |
5056 | Invalid Address |
5057 | Invalid Address 2 |
5058 | Invalid City |
5059 | Invalid State |
5060 | Invalid Zip Code |
5061 | Invalid International Province |
5062 | Invalid Country |
5063 | Invalid Card Number |
5064 | Invalid Credit Card Type |
5065 | Invalid Expiration Date |
5066 | Invalid CVV |
5067 | Invalid Merchant Pay Account |
5068 | Invalid Office ID |
5069 | Invalid User ID |
5070 | Invalid Additional Search |
5071 | Invalid Account Code 1 |
5072 | Invalid Account Code 2 |
5073 | Invalid Account Code 3 |
5074 | Invalid Convenience Fee Amount |
5075 | Unable to Void Authorizations |
5076 | Invalid Payment Date |
5077 | Invalid Phone Number |
5078 | Invalid Account Number |
5079 | Invalid Routing Number |
5080 | Invalid Check Number |
5081 | Invalid Merchant Name |
5082 | Invalid Bank Name |
5083 | Invalid Transaction Filter |
5084 | Invalid 3D Secure Data |
5085 | Invalid Terminal ID |
5086 | Card Brand is not supported |
5088 | Invalid Print Check Token |
5090 | Error Submitting Invoice |
5091 | Invalid Biller ID |
5092 | Invalid Biller Name |
5093 | Convenience Fee less than minimum |
5094 | Invalid Addenda Value |
5095 | Invalid Description |
5096 | Invalid SEC |
5097 | Invalid Same Day ACH Value |
5098 | Invalid ACH Option |
5099 | Invalid Mobile Wallet Type |
5100 | Invalid Mobile Wallet Cryptogram |
5101 | Invalid Mobile Wallet ECI Code |
5102 | Invalid Payment Frequency |
5103 | Bin Not Available for Pinless Debit |
5104 | Failed PDS Account Lookup |
5107 | Invalid Merchant ID |
5108 | Unable to Retrieve Merchant Credentials |
5109 | RCC Void Record Failed to Insert |
5110 | RCC Void Record Failed to Update |
5111 | RCC Payment Record Failed to Insert |
5112 | Duplicate Transaction |
5113 | Payment Not Found or Already Voided |
5114 | Error Processing Void/Return |
5115 | Invalid PaymentID |
5116 | Marks/Returns are not Available on Tokenize Transactions |
5117 | Mark Amount is More Than Double Original Auth Amount |
5118 | Mark is not Available on Tenerum Payments |
5119 | Error Checking Settlement |
5120 | Pinless Processing is Temporarily Disabled |
5121 | Error Submitting Payment Record |
5122 | Invalid Data Format |
5123 | Error Submitting Printed Check |
5124 | Account has been Locked |
Gateway Response Codes
Error messages returned from the gateways, networks or issuer.
Code | Description |
---|---|
EA | Verification error |
EB | Verification error |
EC | Verification error |
E1 | P2PE decryption request invalid |
E2 | P2PE decryption services unavailable |
E3 | P2PE decryption failure |
E4 | P2PE decryption message malformed |
E6 | Possible P2PE decryption failure |
E9 | P2PE encryption required |
N3 | Cashback service not available |
N4 | Exceeds issuer withdrawal limit |
N7 | CVV2 value mismatch |
P01 | AVS Mismatch Failure |
P02 | CVV2 Mismatch Failure |
P30 | Test Tran. Bad Card |
P35 | Test Tran. Problem |
P40 | Username already exists |
P41 | Username is blank |
P50 | Fraud Screen Failure |
P51 | Missing PIN Code |
P55 | Invalid Credit Card No. |
P56 | Invalid CVV2/CVC2 No. |
P57 | Expired. CC Exp. Date |
P58 | Missing Data |
P59 | Missing Email Address |
P60 | Zip Code does not match Billing State. |
P61 | Invalid Billing Zip Code |
P62 | Zip Code does not match Shipping State. |
P63 | Invalid Shipping Zip Code |
P64 | Invalid Credit Card CVV2/CVC2 Format. |
P91 | Missing/incorrect password |
P92 | Account not configured for mobile administration |
00 | Approved |
01 | Refer to card issuer |
02 | Refer to card issuer, special conditions |
03 | Invalid Merchant ID |
04 | Pick up card |
05 | Do not honor/Generic authorization decline |
06 | General error |
07 | Pick up card, special conditions |
12 | Invalid transaction |
13 | Invalid amount |
14 | Invalid account/card number |
15 | No such issuer |
17 | Manual PAN tries exceeded |
19 | Re-enter transaction |
21 | Reversal unsuccessful/Unable to back out transaction |
28 | File is temporarily unavailable |
30 | Message format error |
33 | Pick up card - Expired |
38 | Allowable number of pin tries exceeded |
39 | No credit account |
40 | Requested function not supported |
41 | Pick up card – lost |
43 | Pick up card – stolen |
47 | Remote function unknown |
51 | Insufficient funds |
52 | No checking account |
53 | No savings account |
54 | Expired card |
55 | Incorrect pin |
56 | Cannot process |
57 | Trans. not permitted to cardholder |
58 | Trans. not permitted to terminal |
59 | Multiple accounts exist for a given to/from account type |
61 | Exceeds withdrawal limit/Primary phone number does not match for card activation |
62 | Invalid service code, restricted |
63 | Security violation |
65 | Activity limit exceeded |
75 | PIN tries exceeded |
76 | Unable to locate, no match/Late reversal |
77 | Inconsistent date, rev. or repeat |
78 | No account/No "To" account specified |
79 | Already reversed at switch/No "From" account specified |
80 | Invalid date |
81 | Cryptographic error |
82 | Cashback limit exceeded/Invalid CVV |
83 | Can not verify PIN |
86 | Can not verify PIN |
88 | Card record not available |
89 | Invalid authorization code |
91 | Issuer or switch is unavailable |
92 | Destination not found/Unable to route transaction |
93 | Violation, cannot complete/Illegal transaction |
96 | System Error |
98 | Duplicate transaction |
99 | Preferred debit routing denial/Credit transaction cannot be performed as debit |
101 | Invalid Card Info |
Final Status Description
Final status description for ACH,Credit and Debit Payment type
Payment Type | Final Status | Description |
---|---|---|
ACH | XXX | Transaction Not accepted. See Error Message |
ACH | RXX | Transaction was returned. See return codes list |
ACH | CXX | Transaction has a Notice of Change. See return codes list |
ACH | ACHPaymentVoided | Payment has been voided |
ACH | ACHPaymentCredited | Payment has been credited |
ACH | 1912 | Duplicate Transaction |
ACH | 1100 | Account and Routing number are in the negative accounts table |
Credit Card | pending | For Return will always show pending |
Credit Card | problem | Processing error occurred. See Error Message |
Credit Card | Payment Marked | Transaction has been marked |
Credit Card | Payment Voided | Transaction has been voided |
Credit Card | success | Transaction has been successfully created |
Credit Card | Payment Returned | Transaction has been Returned |
Credit Card | badcard | Card is not able to validate |
Credit Card | initiated | CC Void/Refund sent to the CC gateway |
Credit Card | voided | Record not found |
Credit Card | fraud | Invalid credit card number. |
Credit Card | Payment Authorized | Payment has been authorized |
Credit Card | failure | Payment failed. See Error Message |
Pinless Debit | Success | Transaction has been successfully submitted |
Pinless Debit | Payment Returned | Transaction has been Returned |
Pinless Debit | failure | Transaction has not submitted. See Error Message |
Pinless Debit | ChargedBack | Transaction is chargedback |
Remote Check Return Codes
Return codes for remote checks.
Code | Description |
---|---|
RA | NSF - Not Sufficient Funds |
RB | UCF - Uncollected Funds Hold |
RC | Stop Payment |
RD | Closed Account |
RE | UTLA - Unable to Locate Account |
RF | Frozen/Blocked Account - Account has Restrictions placed on it by either customer or bank |
RG | Stale Dated |
RH | Post Dated |
RI | Endorsement Missing |
RJ | Endorsement Irregular |
RK | Signature(s) Missing |
RL | Signature(s) Irregular, Suspected Forgery |
RM | Non-Cash Item (Non-Negotiable) |
RN | Altered/Fictitious Item/Suspected Counterfeit/Counterfeit |
RO | Unable to process (e.g. Unable to process physical item/Mutilated such that critical payment information is missing). This code shall not be used for unusable images or system problems (see code "U"). |
RP | Item outside of stated dollar amount |
RQ | Not Authorized (Includes Drafts) - Unathorized item such as a draft |
RR | Branch/Account Sold (Wrong Bank) - Divested Account, Not Our Item |
RS | Refer to Maker |
RT | Item cannot be re-presented (Exceeds number of allowable times the item can be presented) |
RU | Unusable Image (Image could not be used for required business purpose, e.g. gross image defects, illegible, etc.) |
RV | Image Fails Security Check |
RW | Cannot Determine Amount - Amount cannot be verified |
RX | Refer to Image - Return Reason information is contained within the image of the item |
RY | Duplicate Presentment (Supporting documentation shall be readily available) |
RZ | Forgery - An affidavit shall be available upon request |
R1 | Does not conform with ANSI X9. 100-181 Specification for TIFF Image Format for Image Exchange standard |
R2 | Does not conform to the Industry's Universal Companion Document, TR 47. |
R3 | Warranty Breach (Includes Rule 8 & 9 claims) |
R4 | RCC Warranty Breach (Rule 8) |
R5 | Forged and Counterfeit Warranty Breach (Rule 9) |
R6 | Retired/Ineligible/Failed Institution Routing Number |
AVS Codes - Visa
Address Verification Codes from Visa
Code | Description |
---|---|
A | Address matches, ZIP code does not. |
B | Street address match for international transaction; postal code not verified. |
C | Street & postal code not verified for international transaction. |
D | Street & Postal codes match for international transaction Both the five-digit postal zip code as well as the first five numerical characters contained in the address match for the international transaction. |
E | Transaction is ineligible for address verification. |
F | Street address & postal codes match for international transaction. (UK Only) |
G | AVS not performed because the international issuer does not support AVS. |
I | Address information not verified for international transaction. |
M | Street address & postal codes match for international transaction. |
N | Neither the ZIP nor the address matches. |
P | Postal codes match for international transaction; street address not verified. |
S | AVS not supported at this time. |
R | Issuer's authorization system is unavailable, try again later. |
U | Unable to perform address verification because either address information is unavailable or the Issuer does not support AVS. |
W | Nine-digit zip match, address does not. The nine-digit postal zip code matches that stored at the VIC or card issuer's center. However, the first five numerical characters contained in the address do not match. |
X | Exact match (nine-digit zip and address). Both the nine-digit postal zip code as well as the first five numerical characters contained in the address match. |
Y | Address & 5-digit or 9-digit ZIP match. |
Z | Either 5-digit or 9-digit ZIP matches, address does not. |
0 | Service Not Allowed. Generally associated with credit cards that are either not allowed to be used for any online transactions or are not allowed to be used for a specific classification of company. |
AVS Codes - Mastercard
Address Verification Codes from Mastercard
Code | Description |
---|---|
A | Address matches, ZIP code does not. |
B | Street address match for international transaction; postal code not verified. |
C | Street & postal code not verified for international transaction. |
D | Street & Postal codes match for international transaction Both the five-digit postal zip code as well as the first five numerical characters contained in the address match for the international transaction. |
E | Ineligible transaction. Address verification not allowed for card type. |
F | Street address & postal codes match for international transaction. (UK Only) |
G | International Address information unavailable. The international address information was not available at the VIC or issuer's center. |
I | Address information not verified for international transaction. |
M | Street address & postal codes match for international transaction. |
N | Neither the ZIP nor the address matches. |
P | Postal codes match for international transaction; street address not verified. |
S | AVS not supported at this time. |
R | Retry, system unable to process. |
U | No data from issuer/BankNet switch. |
W | 9-digit ZIP code matches, but address does not. |
X | Exact, all digits match, 9-digit ZIP code. |
Y | Exact, all digits match, 5-digit ZIP code. |
Z | 5-digit ZIP code matches, but address does not. |
AVS Codes - American Express
Address Verification Codes from American Express
Code | Description |
---|---|
A | Address only is correct. |
B | Street address match for international transaction; postal code not verified. |
C | Street & postal code not verified for international transaction. |
D | Street & Postal codes match for international transaction Both the five-digit postal zip code as well as the first five numerical characters contained in the address match for the international transaction. |
E | Ineligible transaction. Address verification not allowed for card type. |
F | Street address & postal codes match for international transaction. (UK Only) |
G | International Address information unavailable. The international address information was not available at the VIC or issuer's center. |
I | Address information not verified for international transaction. |
M | Street address & postal codes match for international transaction. |
N | Neither the ZIP nor the address matches. |
P | Street address match for international transaction; postal code not verified. |
R | Issuer's authorization system is unavailable, try again later. |
S | AVS not supported at this time. |
U | The necessary information is not available, account number is neither U.S. nor Canadian. |
W | Nine-digit zip match, address does not. The nine-digit postal zip code matches that stored at the VIC or card issuer's center. However, the first five numerical characters contained in the address do not match. |
X | Exact match (nine-digit zip and address). Both the nine-digit postal zip code as well as the first five numerical characters contained in the address match. |
Y | Yes, address and ZIP code are both correct. |
Z | ZIP code only is correct. |
AVS Codes - Discover
Address Verification Codes from Discover
Code | Description |
---|---|
A | Address matches, ZIP code does not. |
B | Street address match for international transaction; postal code not verified. |
C | Street & postal code not verified for international transaction. |
D | Street & Postal codes match for international transaction Both the five-digit postal zip code as well as the first five numerical characters contained in the address match for the international transaction. |
E | Transaction is ineligible for address verification. |
F | Street address & postal codes match for international transaction. (UK Only) |
G | AVS not performed because the international issuer does not support AVS. |
I | Address information not verified for international transaction. |
M | Street address & postal codes match for international transaction. |
N | Neither the ZIP nor the address matches. |
P | Postal codes match for international transaction; street address not verified. |
S | AVS not supported at this time. |
R | Issuer's authorization system is unavailable, try again later. |
U | Unable to perform address verification because either address information is unavailable or the Issuer does not support AVS. |
W | Nine-digit zip match, address does not. The nine-digit postal zip code matches that stored at the VIC or card issuer's center. However, the first five numerical characters contained in the address do not match. |
X | Exact match (nine-digit zip and address). Both the nine-digit postal zip code as well as the first five numerical characters contained in the address match. |
Y | Address & 5-digit or 9-digit ZIP match. |
Z | Either 5-digit or 9-digit ZIP matches, address does not. |
0 | Service Not Allowed. Generally associated with credit cards that are either not allowed to be used for any online transactions or are not allowed to be used for a specific classification of company. |