Hosted Payment Page API

How to get developer merchant account and generate authorization token

  • Step 1: Send an email to devsupport@denovosystem.com
  • Step 2: iPOSpays will create a merchant account and send you an activation email along with TPN.
  • Step 3: Activate your iPOSpays merchant account
  • Step 4: Login merchant account & go to setting on the left side menu, select Generate ECOM token
  • Step 5: Select the TPN and generate the token.
  • Step 6: Use the generated TOKEN and the TPN for your HPP integration.

HPP URL to request payment page

List of HPP API’s

getHostedPaymentPage API – to get the hosted payment page Url

queryPaymentStatus API – to check the payment status

iPOS HPP APIs are completely RESTful, and all our responses are returned in JSON. Note that the URL will be different for production. Once integration has been completed, please write email to devsupport@denovosystem.com to get production credentials.

HPP - getHostedPaymentPage API reference

Request Parameters

getHostedPaymentPage API request contains 6 primary objects

ObjectsDescription
token * Required, AuthToken information to be sent in the header of the request
merchantAuthentication * Required, contains information about the merchant authentication details like TPN number, unique transaction reference id, etc…
transactionRequest * Required, contains information about the transactions like Type, Amount, Calculate Fee, Tips prompt, etc…
notificationOption * Required, contains information about the Notify options to be enabled to the merchants
preferences * Required, contains information about the avsVerification enabling or not, e-Receipt notify to customer enabling or not
personalization * Optional, contains parameters that control the payment form theme & color for that transaction

Request Method

HTTP Request Method : POST

getHostedPaymentPage – Post API Endpoint

ObjectsDescription
Sandbox URL: * https://payment.ipospays.tech/api/v1/external-payment-transaction
Production Live URL: * https://payment.ipospays.com/api/v1/external-payment-transaction

Request Parameters : Header

ObjectsDescription
token * Required, AuthToken information to be sent in the header of the request
merchantAuthentication * Required, contains information about the merchant authentication details like TPN number, unique transaction reference id, etc…

Request Parameters Body

FieldTypeDescription
merchantAuthentication ( Information about TPN number, Transaction Reference id )
merchantId * number

TPN Number registered in iPOS portal database.

12 Digit number

Example Value: 139322815010

transactionReferenceId * string

Merchant unique transaction reference id, which can be used to status check later

transactionRequest ( Information about transactions like Type, Amount, Calculate Fee )
transactionType * Number

Type of transactions to be processed.

Note:1 refer SALE transaction

2 refer CARD VALIDATION (PREAUTH) transaction to validate the given card with amount 0 value

amount * String

(USD) Amount to be charged from customer card / account.

USD amount to be multiplied by 100.

Note: amount value to be set to “0” in the case of transactionType = 2 (i.e. card validation)

calculateFee * String

Fees to be calculated and added with the given amount in the payment input page, to charge from the customer.

If set to true -> iPOS-HPP access Fees details based on STEAM params and add it with base amount & display it.

If set to false -> iPOS-HPP, will not consider the fee calculation

calculateFee * String

Fees to be calculated and added with the given amount in the payment input page, to charge from the customer.

If set to true -> iPOS-HPP access Fees details based on STEAM params and add it with base amount & display it.

If set to false -> iPOS-HPP, will not consider the fee calculation

tipsInputPrompt * Boolean

Whether to ask customers to input the tips in the payment page.

Note: if set to true -> iPOS-HPP will prompt & ask the customer to input the tips while payment and add it with the base amount given in the request.

If set to false -> iPOS-HPP, will not ask the customer to input the tips.

calcuateTax * String

Tax to be calculated and added with the given amount in the payment input page, to charge from the customer.

If set to true -> iPOS-HPP access Taxes details based on STEAM params and calculate the total amount & display it.

If set to false -> iPOS-HPP, will consider the ‘amount’ input field (inclusive of tax) as Total amount to deduct

feeAmount * String

Optional, (USD) Fee amount to be charged from the customer. USD amount to be multiplied by 100

Length: 8 characters

Format: 12525 (125.25 $ X 100)

if calculateFee is set to false -> Merchant can send fee amount along with this request

feeLabel * String

Fee label can be mentioned here.

Format: Alphanumeric

Length: up-to 32 characters

tipAmount * String

Optional, (USD) Tip amount to be added. USD amount to be multiplied by 100

if tipsInputPrompt is set to false -> Merchant can send tip amount along with this request

lTaxAmount * String

Optional, (USD) Local tax amount to be charged from the customer.USD amount to be multiplied by 100

if calculateTax is set to false -> Merchant can send local tax amount along with this request

Length: 8 characters

Format: 12525 (125.25 $ X 100)

lTaxLabel * String

Local tax label can be mentioned here.

Format: Alphanumeric

Length: up-to 32 characters

gTaxAmount * String

Optional, (USD) State tax amount to be charged from the customer. USD amount to be multiplied by 100

Length: 8 characters

Format: 12525 (125.25 $ X 100)

if calculateTax is set to false -> Merchant can send state tax amount along with this request

gTaxLabel * String

State tax label can be mentioned here.

Format: Alphanumeric

Length: up-to 32 characters

I am text block. Click edit button to change this text.

FieldTypeDescription
txReferenceTag1 (Obj) ( )
tagLabel * String

Reference tag-1 label can be mentioned here

Format: Alphanumeric

Length: up-to 25

Example value: Vehicle number

Note: if tagLabel input is given, will be reflected in the payment form

tagValue * string

Reference tag-1 value can be mentioned here

Format: Alphanumeric

Length: up-to 25

Note: if tagValue input is given, it will be reflected in the payment form.

if tagLabel input is given and tagValue input is empty, then we will prompt customer to input the tag value in the payment page form

isTagMandate * Boolean

If isTagMandate is set to true -> tag field value input will be set to mandate to the customer in the payment page form.

Values: true or false

txReferenceTag2 (Obj) ( )
tagLabel * String

Reference tag-2 label can be mentioned here

Format: Alphanumeric

Length: up-to 25

Example value: Vehicle number

Note: if tagLabel input is given, will be reflected in the payment form

tagValue * string

Reference tag-2 value can be mentioned here

Format: Alphanumeric

Length: up-to 25

Note: if tagValue input is given, it will be reflected in the payment form.

if tagLabel input is given and tagValue input is empty, then we will prompt customer to input the tag value in the payment page form

isTagMandate * Boolean

If isTagMandate is set to true -> tag field value input will be set to mandate to the customer in the payment page form.

Values: true or false

txReferenceTag3 (Obj) ( )
tagLabel * String

Reference tag-3 label can be mentioned here

Format: Alphanumeric

Length: up-to 25

Example value: Vehicle number

Note: if tagLabel input is given, will be reflected in the payment form

tagValue * string

Reference tag-3 value can be mentioned here

Format: Alphanumeric

Length: up-to 25

Note: if tagValue input is given, it will be reflected in the payment form.

if tagLabel input is given and tagValue input is empty, then we will prompt customer to input the tag value in the payment page form

isTagMandate * Boolean

If isTagMandate is set to true -> tag field value input will be set to mandate to the customer in the payment page form.

Values: true or false

notificationOption object

FieldTypeDescription
notificationOption object ( )
notifyBySMS * Boolean

Whether to notify Payment status to the given merchant mobile number by SMS or not.

Values: true or false

if set to ‘true’ -> will send the payment status as SMS to the given merchant mobile number.

If set to ‘false’ -> no notification will be sent.

mobileNumber * string

Merchant mobile number to which notification to be sent.

Length: 13

Note: If notificationBySMS is set to true then this field input is mandatory

notifyByPOST * Boolean

Payment status will be sent to the given merchant postAPI Url upon requesting notifyByPOST is set to true.

Values: true or false

postAPI * String

Call-back API Url to which the payment status response to be notify.

Format: should be a http or https Url

notifyByRedirect * Boolean

If set to true, to the given call-back or return Url to which iPOS-HP send or post the payment status response payload.

Values: true or false

authHeader * String

postAPI Url auth token key

Format: Alphanumeric

Length: <= 50 characters

returnUrl * String

Merchant call-back or return Url, to which the payment status (success or decline) will be notified by iPOS-HP with response payloads.

Format: should be a http / https Url

failureUrl * String

Merchant failure call-back or return, to which the payment (declined or failure) status will be notified.

Format: Should be a http/https Url

Note: if this entity input is empty, the payment failure status will be sent to returnUrl.

cancelUrl * String

Cancel Url of merchant site. If customer wants to skip or cancel the payment and return to merchant site.

Format: should be http / https Url.

Note: About above Payment status notifications

  • Merchants who want to integrate for e-commerce -> can request notifyByRedirect method to response the payment status to the given call-back Url. Also, can request for notifyByPOST
  • Merchants who want to integrate for Quick Pay / Send Link / QR code / TOP -> can use notifyBySMS method to response the payment status to the given merchant mobile number.

If merchants have webserver with API, can also request real-time notify by enabling notifyByPOST set to ‘true’ to send the payment status to the given post API Url.

preferences(Obj)

FieldTypeDescription
preferences Object ( )
integrationType * Number

It refers the type/source of iPOS-HP integration

Values: 1,2,3,4

Note: 1 - E-Commerce portal

2 - E-Commerce mobile App

3 - Quick pay / Send link

4 - QR code

5 - Tap on phone

avsVerification * Boolean

If it’s set to ‘true’ -> Customers will be asked to input the street & zip-code details in the credit card input page in-order to do the address verifications.

Values: ‘true’ or ‘false’

eReceipt * Boolean

To send payment status notification to customers by Mobile SMS and/or E-Mail.

Values: ‘true’ or ‘false’

eReceiptInputPrompt * Boolean

Whether to ask the customer to input the mobile number in-order to send the status of the payment.

Values: ‘true’ or ‘false’

Note: if set to ‘true’, iPOS-HP will prompt & ask the user to input the mobile and/or email, merchant not required to send the customer’s name, mobile or email on request parameters.

If it is set to ‘false’ and eReceipt is set to ‘true’, then the merchant must send the customer’s mobile number and/or customer’s email to notify the payment status to customers.

customerName * String

Customer full-name, will be used as salutation while notifying the payment status to the customer upon request by the merchant.

Format: Alphabets, space

Length: 25 characters

Note: This input field is required, if eReceipt set to ‘true’

customerEmail * String

Customer e-mail id to which payment status will be notified if requested

Format: E-mail id

Note: This input field is required, if eReceipt set to ‘true’ and eReceiptInputPrompt is set to false

customerMobile * String

Customer mobile number to which payment status will be notified if requested.

Format: +xxxxxxxxxxxx

Length: 13

Note: This input field is required, If eReceipt set to ‘true’

requestCardToken * Boolean

Card token value request, in-order to use it for further consecutive transaction requests.

Values: true or false

Note: If set to ‘true’, iPOS-HPP will respond with card token value. If it is set to ‘false’, iPOS-HPP will respond, none.

shortenURL * Boolean

shorten URL, in-order for the HPP to send a shortened URL instead of the long URL

Values: true or false

Note: If set to ‘true’, HPP will send a shortened URL instead of a long URL. If it set to ‘false’, HPP will send a shortened URL instead of a long URL.

sendPaymentLink Boolean

Payment Link will trigger to provide customerMobile

and customer Email if the flag is true

Values : true or false

Personalization object

FieldTypeDescription
Personalization object ( )
merchantName * String

Merchant / DBA name to be displayed in the payment input page.

Length: 35 characters

logoUrl * String

Logo image Url to be shown in the hosted payment input page.

Format: Logo image Url should be a http / https

themeColor * String

Hosted payment input page theme colour

Length: 7 chars

description * String

Merchant descriptions to be displayed in the payment input page.

Length: 150 characters

payNowButtonText * String

Pay now button text.

Length: 15 characters

Example Value: ‘Pay Now’

buttonColor * String

Hosted payment button color

Format: E-mail id

Note: This input field is required, if eReceipt set to ‘true’ and eReceiptInputPrompt is set to false

customerMobile * String

Customer mobile number to which payment status will be notified if requested.

Format: #xxxxxx

Length: 7 chars

cancelButtonText * String

Cancel now button/link text.

Example Value: ‘Pay Now’

Length: 15 characters

disclaimer * String

Merchant disclaimer information if any, to be displayed in the payment input page.

Length: 150 characters

Note: If set to ‘true’, HPP will send a shortened URL instead of a long URL. If it set to ‘false’, HPP will send a shortened URL instead of a long URL.

Note: Above personalization enables merchant to personalize the iPOS-HP payment input page with them logo, theme, Pay Now button colour. If the personalization entities values are not given, iPOS-HP will show the default settings

  • Always required

† Optional

Note: All above request fields variable are case sensitive

Response Parameters - Generated URL page request (getHPP)

Generate HPP Url page request – Success

ObjectsDescription
message * URL generated successfully Type: String
information * HPP (Hosted Payment Page) form url

Generate HPP Url page request – Failure

errors (Obj)

ObjectsDescription
field * Error input fields
message * Error message

Note: All above request fields variable are case sensitive

Response Parameters - Payment Processor Notification Response

iposHPResponse(Obj)

FieldTypeDescription
iposHPResponse object ( )
responseCode * Number

iPOS-HP response code

Values: 200 - Payment success / Generated URL success

400 - Payment failure or declined / Generated URL failure

401 - Cancelled by Customer

402 - Rejected by Customer

responseMessage * String

Values: Successful, Declined, Cancelled by Customer, Rejected by Customer, GeneratedURL Success, GeneratedURL Failure

errResponseCode * Alphanumeric

iPOS-HP error response codeType: Number

Values: PG error response code / payment processor error response code

Note: upon ‘responseCode’ 200, this errResponseCode and errResponseMessage will be in response payload

Length: up-to 3 characters

PG Response code ( 3 digits)

Example: 500, 501, 502,…

Processor Response code (2 characters)

Example: 00, 05, …

# Error code & message details shared in below doc

errResponseMessage * String

iPOS-HP error response message

Values: PG error response message / Payment processor error response message

Note: upon ‘responseCode’ 200, this errResponseCode and errResponseMessage will be in response payload

# Error code & message details shared in below doc

transactionReferenceId * String

Merchant unique transaction reference id

Format: Alphanumeric

Length: up-to 20 characters

transactionType * Number

Note: 1 – SALE, 2 – CARD VALIDATION

transactionNumber * Number

Invoice of Transaction number

Length: 4 digits

batchNumber * Number

Batch Number

Length: 3 digits

cardType * String

Credit / Debit Card Type

Values: VISA, MASTERCARD, AMEX, DISCOVER, DINNERS, JCB

cardLast4Digit * Number

Credit card last 4 digits

Length: 4 digits

amount * Float

Base or Total Amount charged from customer

Format: xxxxxx.xx

tips * Float

Tip amount charged from customer

Format: xxxxxx.xx

customFee * Float

Custom Fee charged from customer

Format: xxxxxx.xx

localTax * Float

Local tax amount charged from customer

Format: xxxxxx.xx

stateTax * Float

State tax amount charged from customer

Format: xxxxxx.xx

Length: 8

totalAmount * Float

Total Amount charged from customer

Format: xxxxxx.xx

Length: 8

responseApprovalCode * String

Response Approval Code

Format: Alphanumeric

Length: 6 chars

Example: TAS164

rrn * Number

Unique retrieval reference number

Format: xxxxxx.xx

Length: 12 characters

transactionId * Number

iPOS-HP unique transaction id

Length: 32 characters

cardToken * String

Card token value, in-order to use it for further consecutive transaction requests.

Values: <card-token-value>

Note: if requestCardToken is set to ‘true’, iPOS-HPP will respond with card token value. If requestCardToken is set to ‘false’, it will respond, none.

  • Mandatory

** upon only on Error response

† Optional

Note: All above request fields variable are case sensitive

Post Request Parameters – JSON sample

  1. notifyByReturn – Request

Post head request (header auth-token request)

{
 
    "token": "authToken",   //Example: "f0bed899539742309eebd8XXXX7edcf615888XXXXXXXX"
 
    "content-type": "application/json"
 
};
 
Post body request
 
{
 
        "merchantAuthentication": {
 
                 "merchantId": "TPN_NUMBER",
 
                 "transactionReferenceId": "Transaction Reference Id"  
 
        },
 
        "transactionRequest": {
 
               "transactionType": 1/2,
 
               "amount": "Amount-value"   //Example 1000 for 10$ i.e. 10x100
 
               "calculateFee": true/false,
 
               "tipsInputPrompt": true/false,
 
               "calculateTax": true/false,
 
               "feeAmount": "FEE-Amount-value",   //Example 1000 for 10$ i.e. 10x100
 
               "feeLabel": "Fee Label",
 
               "tipAmount": "TIP-Amount-value",   //Example 1000 for 10$ i.e. 10x100
 
               "lTaxAmount": "L-TAX-Amount-value",   //Example 1000 for 10$ i.e. 10x100
 
               "lTaxLabel": "Local-Tax-Label",
 
               "gTaxAmount": "G-TAX-Amount-value",   //Example 1000 for 10$ i.e. 10x100
 
               "gTaxLabel":  “State Tax label",
 
               "txReferenceTag1": {
 
                     "tagLabel": "Tag-label-1",  // Example “Vehicle Number”
 
                     "tagValue": "Tag-1 value",  // Example “TN43AA445”
 
                     "isTagMandate": true/false
 
                }
 
              "txReferenceTag2": {
 
                    "tagLabel": "Tag-label-2",
 
                    "tagValue": "Tag-2 value", 
 
                    "isTagMandate": true/false
 
           },
 
            "txReferenceTag3": {
 
                  "tagLabel": "Tag-label-3",
 
                  "tagValue": "Tag-3 value"
 
                  "isTagMandate": true/false
 
        }
 
},
 
    "notificationOption": {
 
           "notificationBySMS": false,
 
           "mobileNumber": "",
 
    "notifyByPOST": false,
 
          "authHeader": "", 
 
          "postAPI": "",  
 
     "notifyByRedirect": true,
 
           "returnUrl": "<return url>",  // Example https://www.merchanturl.com/thankyou/success.php
 
           "failureUrl": "<failure url>",  // Example https://www.merchanturl.com/thankyou/failure.php 
 
          "cancelUrl": "<cancel url>",  // // Example https://www.merchanturl.com/checkout.php
 
  },
 
  "preferences": {
 
        "integrationType": "HPP integration type", 
 
        "avsVerification": true/false,    
 
       "eReceipt": true/false,
 
       "eReceiptInputPrompt": true/false,
 
       "customerName": "Customer_Name",    
 
       "customerEmail": "Customer_Email",    
 
       "customerMobile": "Customer_mobile_number_with_ISD_code",
 
       "requestCardToken": true/false
 
       "shortenURL": true/false
 
       “sendPaymentLink”: true/false
 
  },
 
  "personalization": {
 
       "merchantName": "Merchant / DBS Name"
 
      "logoUrl": "http or https image url"  //Eg., "https://merchanturl.com/logo/images/logo-name.png",
 
      "themeColor": "theme colour",    //Example #808080
 
      "description": "Merchant given description",
 
      "payNowButtonText": "pay now button text"    //Example "Pay Now"
 
      "buttonColor": "pay button colour",    //Example #808080
 
      "cancelButtonText": "cancel button text"  //Example "Go to merchant site"
 
      "disclaimer": "Disclaimer information can be placed here",  //Example "Only VISA card accepted"
 
  },
 
}
  1. notifyBySMS – Request

Post head request (header auth-token request)

{
 
    "token": "authToken",   //Example: "f0bed899539742309eebd8XXXX7edcf615888XXXXXXXX"
 
    "content-type": "application/json"
 
};
 
 
Post body request
 
{
   "merchantAuthentication": {
 
         "merchantId": "TPN_NUMBER",
 
         "transactionReferenceId": "Transaction Reference Id"  
 
    },
 
   "transactionRequest": {
 
        "transactionType": 1,
 
        "amount": "Amount-value" // example 1000 for 10$ i.e. 10x100
 
        "calculateFee": true/false,
 
        "tipsInputPrompt": true/false,
 
       "calculateTax": true/false,
 
       "feeAmount": "FEE-Amount-value",   //Example 1000 for 10$ i.e. 10x100
 
       "feeLabel": "Fee Label",
 
       "tipAmount": "TIP-Amount-value",   //Example 1000 for 10$ i.e. 10x100
 
       "lTaxAmount": "L-TAX-Amount-value",   //Example 1000 for 10$ i.e. 10x100
 
       "lTaxLabel": "Local-Tax-Label",
 
       "gTaxAmount": "G-TAX-Amount-value",   //Example 1000 for 10$ i.e. 10x100
 
       "gTaxLabel":  “State Tax label",
 
       "txReferenceTag1": {
 
            "tagLabel": "Tag-label-1",  // Example “Vehicle Number”
 
            "tagValue": "Tag-1 value"  // Example “TN43AA445”
 
           "isTagMandate": true/false
 
      }
 
      "txReferenceTag2": {
 
           "tagLabel": "Tag-label-2",
 
           "tagValue": "Tag-2 value" 
 
           "isTagMandate": true/false
 
     },
 
     "txReferenceTag3": {
 
         "tagLabel": "Tag-label-3",
 
         "tagValue": "Tag-3 value"
 
         "isTagMandate": true/false
 
    }
},
 
"notificationOption": {
 
     "notificationBySMS": true,
 
     "mobileNumber": "Merchant Mobile Number Ex +17878787878",
 
     "notifyByPOST": false,
 
     "authHeader": "", 
 
     "postAPI": "",  
 
 
     "notifyByRedirect": false,
 
     "returnUrl": "",   
 
     "failureUrl": "",      
 
     "cancelUrl": "",
 
},
 
"preferences": {
 
    "integrationType": "HPP integration type",   //Example for e-commerce value is 1
 
    "avsVerification": true/false,    
 
    "eReceipt": true/false,
 
    "eReceiptInputPrompt": true/false,
  
    "customerName": "Customer_Name",    
 
    "customerEmail": "Customer_Email",    
 
    "customerMobile": "Customer_mobile_number_with_ISD_code",
 
    "requestCardToken": true/false
 
    ""shortenURL": true/false
 
},
"personalization": {
 
     "merchantName": "Merchant / DBS Name"   //Example "walmart"
 
     "logoUrl": "http or https image url"  // Eg., "https://merchanturl.com/logo/images/logo-name.png",
 
     "themeColor": "theme colour",     //Example #808080
 
     "description": "Merchant given description",
 
    "payNowButtonText": "pay now button text"  //Example "Pay Now"
 
    "buttonColor": "pay button colour",    //Example #808080
 
     "cancelButtonText": "cancel button text"    //Example "Go to merchant site"
   
     "disclaimer": "Disclaimer information can be placed here",  //Example "Only VISA card accepted"
     },
 
}
  1. notifyByPOST – Request

Post head request (header auth-token request)

{
 
    "token": "authToken",   //Example: "f0bed899539742309eebd8XXXX7edcf615888XXXXXXXX"
 
    "content-type": "application/json"
 
};
 
 
 
Post body request
 
{
 
        "merchantAuthentication": {
 
"merchantId": "TPN_NUMBER",
 
"transactionReferenceId": "Transaction Reference Id"  
 
        },
 
        "transactionRequest": {
 
"transactionType": 1/2,
 
"amount": "Amount-value" // example 1000 for 10$ i.e. 10x100
 
"calculateFee": true/false,
 
"tipsInputPrompt": true/false,
 
"calculateTax": true/false,
 
"feeAmount": "FEE-Amount-value",   //Example 1000 for 10$ i.e. 10x100
 
"feeLabel": "Fee Label",
 
"tipAmount": "TIP-Amount-value",   //Example 1000 for 10$ i.e. 10x100
 
"lTaxAmount": "L-TAX-Amount-value",   //Example 1000 for 10$ i.e. 10x100
 
"lTaxLabel": "Local-Tax-Label",
 
"gTaxAmount": "G-TAX-Amount-value",   //Example 1000 for 10$ i.e. 10x100
 
"gTaxLabel":  “State Tax label",
 
"txReferenceTag1": {
 
        "tagLabel": "Tag-label-1",  // Example “Vehicle Number”
 
"tagValue": "Tag-1 value"  // Example “TN43AA445”
 
"isTagMandate": true/false
 
}
 
"txReferenceTag2": {
 
        "tagLabel": "Tag-label-2",
 
"tagValue": "Tag-2 value" 
 
"isTagMandate": true/false
 
},
 
"txReferenceTag3": {
 
        "tagLabel": "Tag-label-3",
 
"tagValue": "Tag-3 value"
 
"isTagMandate": true/false
 
}
 
        },
 
        "notificationOption": {
 
"notificationBySMS": false,
 
"mobileNumber": "",
 
 
 
 
"notifyByPOST": true,
 
"authHeader": "API Access token", 
 
"postAPI": "Merchant post API Url",  Example https://www.merchanturl.com/getResponse.api
 
"notifyByRedirect": false,
 
"returnUrl": "",   
 
"failureUrl": "",      
 
"cancelUrl": "",
 
        },
 
        "preferences": {
 
"integrationType": "HPP integration type",  // Example for e-commerce value is 1
 
"avsVerification": true/false,    
 
"eReceipt": true/false,
 
"eReceiptInputPrompt": true/false,
 
"customerName": "Customer_Name",    
 
"customerEmail": "Customer_Email",    
 
"customerMobile": "Customer_mobile_number_with_ISD_code",
 
"requestCardToken": true/false
 
"shortenURL": true/false
 
        },
 
        "personalization": {
 
"merchantName": "Merchant / DBS Name",    //Example "walmart"
 
"logoUrl": "http or https image url”  //Ex., https://merchanturl.com/logo/images/logo-name.png",
 
"themeColor": "theme colour",     //Example #808080
 
"description": "Merchant given description",
 
"payNowButtonText": "pay now button text”,    //Example "Pay Now"
 
"buttonColor": "pay button colour",     //Example #808080
 
"cancelButtonText": "<cancel button text>"     //Example "Go to merchant site"
 
"disclaimer": "Disclaimer information can be placed here",  //Example "Only VISA card accepted" 
 
        },
 
}

Post Response Parameters – JSON Sample

Upon Form Token Generated URL success / failure response

Success Response for long URL

{
    "message": "Url generated Successful",
    "information": "https://payment.ipospays.tech/api/v1/externalPay?t=< token-value >"
}

Success Response for Short URL

{
    "message": "URL generated successfully",
    "information": "https://api.denovosystem.tech/v1/sl/344r0Cd101101T312"
}

Failure Response

{
 
    "errors": [
        {
            "field": "merchantAuthentication.merchantId",
            "message": "Invalid Merchant Id"
        },
	{
            "field": "transactionRequest.transactionType",
            "message": "Invalid Transaction Type"
        }, ...
    ]
}

Upon Payment Success or Failure

 
{
 
        "iposHPResponse": {
 
                     "responseCode": "iPOS-HP response code like 200, 400,...",
 
                     "responseMessage": "Successful/Declined/Cancelled By Customer/Rejected By Customer",
 
                     "errResponseCode": "Error response code", 
 
                     "errResponseMessage": "Error response message",
 
                     "transactionReferenceId": "merchant unique transaction reference id sent on request",
 
                     "transactionType": "1-sale/ 2-card validation",
 
                     "transactionId": "Unique transaction Id of iPOS-HPP"
 
                     "transactionNumber": "4 digits of transaction number from processor",
 
                     "batchNumber": "3 digits of batch number from processor",
 
                     "cardType": "VISA/MASTERCARD/etc...",
 
                     "cardLast4Digit": "last 4 digit of credit/debit card",
 
                     "amount": "base amount or total amount charged",
 
                     "tips": "tip amount",
 
                     "customFee": "custom fee",
 
                     "localTax": "local tax",
 
                     "stateTax": "state tax",
 
                     "totalAmount": "total amount charged",
 
                     "responseApprovalCode": "response approval code from processor ex: TAS164",
 
                     "rrn": "retrieval reference number from processor #219313501821",
 
                     "CardToken": "card-token-value"      
 
        }
 
}
 

HPP API – Integration References

AngularJs Sample:

{
import { Component, OnInit } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
 
//Import HttpClientModule  and add Providers : [HttpClient] in your module.ts file
 
export interface Payload {
  merchantAuthentication: MerchantAuthentication;
  transactionRequest: TransactionRequest;
  personalization: Personalization;
  notificationOption: NotificationOption;
  preferences: Preferences;
}
export interface MerchantAuthentication {
  merchantId: string;
  transactionReferenceId: string;
}
export interface TransactionRequest {
  transactionType: number;
  amount: number;
  calculateFee: boolean;
  invoiceNumber: string;
}
export interface Personalization {
  logo: string;
  themeColor: string;
  description: string;
  payNowButtonText: string;
  buttonColor: string;
  cancelButtonText: string;
}
export interface NotificationOption {
  returnUrl: string;
  failureUrl: string;
  authHeader: string;
  cancelUrl: string;
  notifyByRedirect: boolean;
  notifyByPOST: boolean;
  postAPI: string;
  mobileNumber: string;
  notifyBySMS: boolean;
}
export interface Preferences {
  eReceipt: boolean;
  avsVerification: boolean;
  customerName: string;
  customerEmail: string;
  customerMobile: string;
  integrationType: number;
 requestCardToken: boolean;
}
 
export interface PaymentSuccessResponse {
  information: string  // this will be the redirect url,
  message: string
}
 
export interface PaymentFailureResponse {
  errors?: (ErrorsEntity)[] | null;
}
export interface ErrorsEntity {
  field: string;
  message: string;
}
 
 
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
 
export class AppComponent implements OnInit {
 
  generatedTpn: string = ''
  generatedToken: string = ''
  routeUrl: string = 'Your Route Url Here'
  paymentUrl: string = 'Your Route URL'
 
  // All the urls should be trimmed. No trailing and leading white spaces 
 
  payload: Payload = {
    merchantAuthentication: {
      merchantId: this.generatedTpn,
      transactionReferenceId: Math.random().toString(36).slice(2)
    },
    transactionRequest: {
      transactionType: 1,
      amount: 100, // Amount (eg : 100 = 1$)
      calculateFee: true,
      invoiceNumber: ""
    },
    personalization: {
      logo: "https://www.example.com/image/img.jpg",  // Logo image url
      themeColor: "#80DEEA",
      description: "Your Description Here",
      payNowButtonText: "Pay Now",
      buttonColor: "#80DEEA",
      cancelButtonText: "Reset"
    },
    notificationOption: {
      returnUrl: this.routeUrl,
      failureUrl: "",
      authHeader: "",
      cancelUrl: "",
      notifyByRedirect: true,
      notifyByPOST: false,
      postAPI: "",
      mobileNumber: "",
      notifyBySMS: false
    },
    preferences: {
      eReceipt: false,
      avsVerification: true,
      customerName: "",
      customerEmail: "",
      customerMobile: "",
      integrationType: 1
      requestCardToken: true
    }
  }
 
  constructor(private httpClient: HttpClient) { }
 
  async ngOnInit() {
 
    try {
      const result = await this.getPaymentForm(this.payload) as PaymentSuccessResponse
      const redirectUrl = result.information
      window.open(redirectUrl, '_self')
    }
    catch (err) {
      // handle error here
    }
  }
 
  getPaymentForm(payload: Payload) {
    const httpOptions = {
      headers: new HttpHeaders({ 'token': this.generatedToken, 'withCredentials': 'false' })
    };
 
    return new Promise((resolve, reject) => {
      this.httpClient.post(this.paymentUrl, payload, httpOptions).subscribe(
        (data: PaymentSuccessResponse | any) => {
          resolve(data)
        },
        (error: PaymentFailureResponse) => {
          reject(error)
        }
      )
 
    })
  }
 
}
}

PHP Sample:

{
<?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://payment.ipospays.tech/api/v1/external-payment-transaction',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>' {
        "merchantAuthentication": {
            "merchantId": "",
            "transactionReferenceId": ""
        },
        "transactionRequest": {
            "transactionType": 1,
            "amount": "400",
            "calculateFee": true,
            "txReferenceTag1": {
                "tagLabel": "TEST",
                "tagValue": "TAG"
            },
            "txReferenceTag2": {
                "tagLabel": "TEST1",
                "tagValue": "TAG1"
            },
            "txReferenceTag3": {
                "tagLabel": "TEST2",
                "tagValue": "TAG2"
            }
        },
        "personalization": {
            "logoUrl": "",
            "themeColor": "",
            "description": "",
            "payNowButtonText": "",
            "buttonColor": "",
            "cancelButtonText": ""
        },
        "notificationOption": {
            "postAPI": "",
            "failureUrl": "",
            "returnUrl":"",
            "notifyByRedirect": false,
            "notifyBySMS": false,
            "notifyByPOST": false,
            "authHeader": "",
            "cancelUrl": "",
            "mobileNumber": ""
        },
        "preferences": {
            "integrationType": 1,
            "eReceipt": true,
            "avsVerification": true,
            "eReceiptInputPrompt": true,
            "customerName": "",
            "customerEmail": "",
            "customerMobile": ""
            "requestCardToken":true
        }
    }
',
  CURLOPT_HTTPHEADER => array(
    'token: ',
    'Content-Type: application/json'
  ),
));
 
$response = curl_exec($curl);
 
curl_close($curl);
echo $response;
 
$reqjson = json_decode($response, true);
//header("Location:". $reqjson['information']);
}

HPP – queryPaymentStatus API

What is Query API

Query API lets merchants “pull” information from the gateway. It allows merchant to query the status of payment. Use same transaction reference id used while calling HPP Request Payment Page API. This dataset can then be used to create in-house reports and analytics.

Query API URL

ObjectsDescription
Sandbox URL: * https://api.ipospays.tech/v1/queryPaymentStatus
Production Live URL: * https://api.ipospays.com/v1/queryPaymentStatus

Request Header Info

|Authorization| API key|

Request Query Params

ObjectsDescription
TPN * TPN number
transactionReferenceId * Merchant unique transaction reference id

Response Params

iPOSHPResponse object

FieldTypeDescription
iposHPResponse object ( )
responseCode * Number

iPOS-HP response code

Values: 200 - Payment success / Generated URL success

400 - Payment failure or declined / Generated URL failure

401 - Cancelled by Customer

402 - Rejected by Customer

responseMessage * String

iPOS-HP response message

Values: Successful, Declined, Cancelled by Customer, Rejected by Customer

errResponseCode * Alphanumeric

iPOS-HP error response codeType: Number

Values: PG error response code / payment processor error response code

Note: upon ‘responseCode’ 200, this errResponseCode and errResponseMessage will be in response payload

Length: up-to 3 characters

PG Response code ( 3 digits)

Example: 500, 501, 502,…

Processor Response code (2 characters)

Example: 00, 05, …

# Error code & message details shared in below doc

errResponseMessage * String

iPOS-HP error response message

Values: PG error response message / Payment processor error response message

Note: upon ‘responseCode’ 200, this errResponseCode and errResponseMessage will be in response payload

# Error code & message details shared in below doc

transactionReferenceId * String

Merchant unique transaction reference id

Format: Alphanumeric

Length: up-to 25 characters

transactionType * Number

Note: 1 - SALE, 2 - Void, 3 - refund

transactionNumber * Number

Invoice of Transaction number

Length: 4 digits

batchNumber * Number

Batch Number

Length: 3 digits

cardType * String

Credit / Debit Card Type

Values: VISA, MASTERCARD, AMEX, DISCOVER, DINNERS, JCB

cardLast4Digit * Number

Credit card last 4 digits

Length: 4 digits

amount * Float

Base or Total Amount charged from customer

Format: xxxxxx.xx

tips * Float

Tip amount charged from customer

Format: xxxxxx.xx

customFee * Float

Custom Fee charged from customer

Format: xxxxxx.xx

localTax * Float

Local tax amount charged from customer

Format: xxxxxx.xx

stateTax * Float

State tax amount charged from customer

Format: xxxxxx.xx

Length: 8

totalAmount * Float

Total Amount charged from customer

Format: xxxxxx.xx

Length: 8

responseApprovalCode * String

Response Approval Code

Format: Alphanumeric

Length: 6 chars

Example: TAS164

rrn * Number

Unique retrieval reference number

Format: xxxxxx.xx

Length: 12 characters

transactionId * Number

iPOS-HP unique transaction id

Length: 32 characters

cardToken * String

Card token value, in-order to use it for further consecutive transaction requests.

Values: <card-token-value>

Note: if requestCardToken is set to ‘true’, iPOS-HPP will respond with card token value. If requestCardToken is set to ‘false’, it will respond, none.

  • Mandatory

** upon only on Error response

† Optional

Query API – Request Sample

https://api.ipospays.tech/v1/queryPaymentStatus?tpn=<tpn number>&transactionReferenceId=<Merchant Transaction Reference Id>

Query API – JSON Response Sample

{
        "iposHPResponse": {
              "responseCode": < iPOS-HP response code >,	
              "responseMessage": "Successful/Decined/Cancelled By Customer/Rejected By Customer",
	      "errResponseCode": < Error response code >,
	      "errResponseMessage": < Error response message >,
	      "transactionReferenceId": < merchant transaction reference id >,
      "transactionId": < Unique transaction Id of iPOS-HP >
	      "transactionType": < 1-sale/2-void/3-refund >,
	      "transactionNumber": < 4 digits of transaction number from processor >,
	      "batchNumber": < 3 digits of batch number from processor >,
	      "cardType": < VISA/MASTERCARD/etc...>,
	      "cardLast4Digit": < last 4 digit of credit/debit card >,
	      "amount": < base amount or total amount charged >,
	      "tips": < tip amount >,
	      "customFee": < custom fee >,
	      "localTax": < local tax >,
	      "stateTax": < state tax >,
	      "totalAmount": < total amount charged >,
	      "responseApprovalCode": < ex: TAS164 from processor >,
	      "rrn": < retrieval reference number >
              "cardToken":"card-token-value"	      
        }
}

How to request for card Token in part of sale transaction

  • Get Hosted Payment Page API allows merchants to get a response of card token value/string to use it for further transactions like Sale & Recurring Payments.
  • In Sale transaction type request payload, if requestCardToken is set to true, iPOS-HPP will respond with card token value as cardToken & consumer id as consumerId. if requestCardToken is set to false, iPOS-HPP will respond, none.

requestCardToken Request Payload - sample

{

        "merchantAuthentication": {

. . .  //merchant auth key & values

        },

        "transactionRequest": {

"transactionType": 1   // Sale

. . . //other transaction request key & values

        },

        "notificationOption": {

. . . //notification option request key & values

        },

        "preferences": {

"integrationType": "HPP integration type", 

"avsVerification": true/false,    

"eReceipt": true/false,

"eReceiptInputPrompt": true/false,

"customerName": "Customer_Name",    

"customerEmail": "Customer_Email",    

"customerMobile": "Customer_mobile_number_with_ISD_code",

"requestCardToken": true   // value can be true or  false 

        },

        "personalization": {

. . .  //personalization request key & values

        },

}

cardToken Value Response - sample

if requestCardToken is set to true,

{
 
        "iposHPResponse": {
 
                     "responseCode": "iPOS-HP response code like 200, 400,...",
 
                     "responseMessage": "Successful/Declined/Cancelled By Customer/Rejected By Customer",
 
      "errResponseCode": "Error response code", 
 
      "errResponseMessage": "Error response message",
 
      "transactionReferenceId": "merchant unique transaction reference id sent on request",
 
      "transactionType": "1-sale/2-void/3-refund",
 
      "transactionId": "Unique transaction Id of iPOS-HPP"
 
      "transactionNumber": "4 digits of transaction number from processor",
 
      "batchNumber": "3 digits of batch number from processor",
 
      "cardType": "VISA/MASTERCARD/etc...",
 
      "cardLast4Digit": "last 4 digit of credit/debit card",
 
      "amount": "base amount or total amount charged",
 
      "tips": "tip amount",
 
      "customFee": "custom fee",
 
      "localTax": "local tax",
 
      "stateTax": "state tax",
 
      "totalAmount": "total amount charged",
 
      "responseApprovalCode": "response approval code from processor ex: TAS164",
 
      "rrn": "retrieval reference number from processor #219313501821",
 
      "responseCardToken": "card-token-value"
 
        }
 
}

if requestCardToken is set to false,

 
{
 
        "iposHPResponse": {
 
                     "responseCode": "iPOS-HP response code like 200, 400,...",
 
                     "responseMessage": "Successful/Declined/Cancelled By Customer/Rejected By Customer",
 
      "errResponseCode": "Error response code", 
 
      "errResponseMessage": "Error response message",
 
      "transactionReferenceId": "merchant unique transaction reference id sent on request",   
 
      "transactionType": "1-sale/2-void/3-refund",
 
      "transactionId": "Unique transaction Id of iPOS-HPP"
 
      "transactionNumber": "4 digits of transaction number from processor",
 
      "batchNumber": "3 digits of batch number from processor",
 
      "cardType": "VISA/MASTERCARD/etc...",
 
      "cardLast4Digit": "last 4 digit of credit/debit card",
 
      "amount": "base amount or total amount charged",
 
      "tips": "tip amount",
 
      "customFee": "custom fee",
 
      "localTax": "local tax",
 
      "stateTax": "state tax",
 
      "totalAmount": "total amount charged",
 
      "responseApprovalCode": "response approval code from processor ex: TAS164",
 
      "rrn": "retrieval reference number from processor #219313501821"
 
        }
 
}

Query API

If requestCardToken field is set to ‘true’ in part of the Sale transaction request params (in getHPP API), and upon merchant do request for queryPaymentStatus API call, cardToken value will be a part of the response.

Error Response Code & Message - Upon Payment Form Generate URL request

Error Response CodeError Response Message
merchantAuthentication * Merchant Auth request errors
merchantAuthentication[object] * Merchant authentication cannot be null
merchantAuthentication.merchantId * Merchant Id cannot be null
merchantAuthentication.merchantId * Invalid merchant id
merchantAuthentication.transactionReferenceId * Invalid transaction reference id
merchantAuthentication.transactionReferenceId * Transaction reference id cannot be null
* Transaction request errors
transactionRequest[object] * Transaction request cannot be null
transactionRequest.amount * Invalid amount
transactionRequest.amount * Transaction type cannot be null
transactionRequest.transactionType * Invalid transaction type
transactionRequest.feeAmount * Invalid fee amount
transactionRequest.feeLabel * Invalid fee label
transactionRequest.lTaxAmount * Invalid lTax amount
transactionRequest.lTaxLabel * Invalid lTax label
transactionRequest.gTaxAmount * Invalid gTax amount
transactionRequest.gTaxLabel * Invalid gTax label
* Notify By request errors
notificationOption[object] * Notification option cannot be null
notificationOption.postAPI * Invalid post API
notificationOption.returnUrl * Invalid return URL
notificationOption.failureUrl * Invalid failure URL
notificationOption.mobileNumber * Invalid mobile number
notificationOption.cancelUrl * Invalid Cancel URL
* Preference request errors
preferences[object] * Preferences cannot be null
preferences.integrationType * Integration type cannot be null
preferences.integrationType * Invalid integration type
preferences.customerName * Invalid customer name
preferences.customerEmail * Invalid customer email
preferences.customerMobile * Invalid customer mobile
preferences.customerEmail, preferences.customerMobile * Both customer email and customer mobile cannot be empty
* Personalization request errors
personalization.merchantName * Invalid merchant name
personalization.logoUrl * Invalid logo URL
personalization.themeColor * Invalid theme color
personalization.description * Invalid description
personalization.payNowButtonText * Invalid pay button text
personalization.buttonColor * Invalid button color
personalization.cancelButtonText * Invalid cancel button text
personalization.disclaimer * Invalid disclaimer

Error Response Code & Message - Payment Processor

Error Response CodeError Response Message
0 * APPROVAL Approved and completed
1 * CALL Refer to issuer
2 * CALL Refer to issuer-Special condition
3 * TERM ID ERROR Invalid Merchant ID
4 * HOLD-CALL Pick up card (no fraud)
5 * DECLINE Do not honor
6 * ERROR General error
7 * HOLD-CALL Pick up card, special condition (fraud account)
8 * APPROVAL Honor Mastercard with ID
10 * PARTIAL APPROVAL Partial approval for the authorized amount returned in Group III version 022
11 * APPROVAL VIP approval
12 * INVALID TRANS Invalid transaction
13 * AMOUNT ERROR Invalid amount
14 * CARD NO. ERROR Invalid card number
15 * NO SUCH ISSUER No such issuer
19 * RE ENTER Re-enter transaction
21 * NO ACTION TAKEN Unable to back out transaction
25 * NO CARD NUMBER Unable to locate the account number
28 * NO REPLY File is temporarily unavailable
30 * MSG FORMAT ERROR Transaction was improperly formatted
39 * NO CREDIT ACCT No credit account
41 * HOLD-CALL Lost card, pick up (fraud account)
43 * HOLD-CALL Stolen card, pick up (fraud account)
46 * CLOSED ACCOUNT Closed account
51 * DECLINE Insufficient funds
52 * NO CHECK ACCOUNT No checking account
53 * NO SAVE ACCOUNT No savings account
54 * EXPIRED CARD Expired card
55 * WRONG PIN Incorrect PIN
57 * SERV NOT ALLOWED Transaction not permitted-Card
58 * SERV NOT ALLOWED Transaction not permitted-Terminal
59 * SUSPECTED FRAUD Suspected fraud
61 * EXC APPR AMT LIM Exceeds approval amount limit
62 * DECLINE Invalid service code, restricted
63 * SEC VIOLATION Security violation
65 * EXC W/D FREQ LIM Exceeds withdrawal frequency limit
6P * VERIF DATA FAILD Verification data failed
75 * PIN EXCEEDED Allowable number of PIN-entry tries exceeded
76 * UNSOLIC REVERSAL Unable to locate, no match
77 * NO ACTION TAKEN Inconsistent, reversed, or repeat data
78 * NO ACCOUNT Blocked, first used transaction from new cardholder, and card not properly unblocked
3 * TERM ID ERROR Invalid Merchant ID
4 * HOLD-CALL Pick up card (no fraud)
5 * DECLINE Do not honor
6 * ERROR General error
7 * HOLD-CALL Pick up card, special condition (fraud account)
8 * APPROVAL Honor Mastercard with ID
10 * PARTIAL APPROVAL Partial approval for the authorized amount returned in Group III version 022
11 * APPROVAL VIP approval
12 * INVALID TRANS Invalid transaction
13 * AMOUNT ERROR Invalid amount
14 * CARD NO. ERROR Invalid card number
15 * NO SUCH ISSUER No such issuer
19 * RE ENTER Re-enter transaction
21 * NO ACTION TAKEN Unable to back out transaction
25 * NO CARD NUMBER Unable to locate the account number
28 * NO REPLY File is temporarily unavailable
30 * MSG FORMAT ERROR Transaction was improperly formatted
39 * NO CREDIT ACCT No credit account
41 * HOLD-CALL Lost card, pick up (fraud account)
43 * HOLD-CALL Stolen card, pick up (fraud account)
46 * CLOSED ACCOUNT Closed account
51 * DECLINE Insufficient funds
52 * NO CHECK ACCOUNT No checking account
53 * NO SAVE ACCOUNT No savings account
54 * EXPIRED CARD Expired card
55 * WRONG PIN Incorrect PIN
57 * SERV NOT ALLOWED Transaction not permitted-Card
58 * SERV NOT ALLOWED Transaction not permitted-Terminal
59 * SUSPECTED FRAUD Suspected fraud
61 * EXC APPR AMT LIM Exceeds approval amount limit
62 * DECLINE Invalid service code, restricted
63 * SEC VIOLATION Security violation
65 * EXC W/D FREQ LIM Exceeds withdrawal frequency limit
6P * VERIF DATA FAILD Verification data failed
75 * PIN EXCEEDED Allowable number of PIN-entry tries exceeded
76 * UNSOLIC REVERSAL Unable to locate, no match
77 * NO ACTION TAKEN Inconsistent, reversed, or repeat data
78 * NO ACCOUNT Blocked, first used transaction from new cardholder, and card not properly unblocked
H7 * SERV NOT ALLOWED Contact Merchant Services/Technical Support
H8 * SERV NOT ALLOWED Contact Merchant Services/Technical Support
H9 * SERV NOT ALLOWED Contact Merchant Services/Technical Support
HV * FAILURE HV Hierarchy Verification Error
K0 * TOKEN RESPONSE Token request was processed
K1 * TOKEN NOT CONFIG Tokenization is not configured
K2 * TERM NOT AUTHENT Terminal is not authenticated
K3 * TOKEN FAILURE Data could not be de-tokenized
M0 * DOM DBT NOT ALWD Mastercard: Canada region-issued Domestic Debit Transaction not allowed
N2 * CACHBACK NOT AVL Cash back service not available
N3 * DECLINE Exceeds issuer withdrawal limit
P0 * SERV NOT ALLOWED Contact Merchant Services/Technical Support
P1 * SERV NOT ALLOWED Contact Merchant Services/Technical Support
P2 * SERV NOT ALLOWED Contact Merchant Services/Technical Support
P3 * SERV NOT ALLOWED Contact Merchant Services/Technical Support
P4 * SERV NOT ALLOWED Contact Merchant Services/Technical Support
P5 * SERV NOT ALLOWED Contact Merchant Services/Technical Support
P6 * SERV NOT ALLOWED Contact Merchant Services/Technical Support
P7 * MISSING SERIAL NUM The terminal has not yet completed the boarding process. The Serial Number has not been set up.
R0 * STOP RECURRING Customer requested stop of specific recurring payment
R1 * STOP RECURRING Customer requested stop of all recurring payments from specific merchant
R3 * STOP ALL RECUR All recurring payments have been canceled for the card number in the request
S0 * INACTIVE CARD The PAN used in the transaction is inactive.
S1 * MOD 10 FAIL The Mod-10 check failed.
S5 * DCLN NO PRE AUTH Decline - no preauthorization found.
S9 * MAX BALANCE Maximum working balance exceeded.
SA * SHUT DOWN The Authorization Server is shut down.
SB * INVALID STATUS Invalid card status – status is other than active
SC * UNKNOWN STORE Unknown dealer/store code – special edit.
SD * TOO MANY RCHRGS Maximum number of recharges is exceeded.
SE * ALREADY USED Card was already used.
SF * NOT MANUAL Manual transactions not allowed.
SH * TYPE UNKNOWN Transaction type was unknown.
SJ * INVALID TENDER An invalid tender type was submitted.
SK * CUSTOMER TYPE An invalid customer type was submitted.
SL * PIN LOCKED PIN was locked.
SM * MAX REDEMPTS The maximum number of redemptions was exceeded.
SP * MAX PAN TRIES The maximum number of PAN tries was exceeded.
SR * ALREADY ISSUED The card was already issued.
SS * NOT ISSUED The card was not issued.
T0 * APPROVAL First check is okay and has been converted.
T1 * CANNOT CONVERT The check is okay but cannot be converted. This is a declined transaction.
T2 * INVALIDABA Invalid ABA number, not an ACH participant.
T3 * AMOUNT ERROR Amount greater than the limit.
V1 * FAILURE VM Daily threshold exceeded.