Velocity Integration Guide Airline - V3.15
1. Document Details
1.1 Scope of the Document
This document aims to help you integrate the Velocity Payment Orchestration Platform (POP) with your application using application programming interfaces (APIs).
Note: Sample codes are provided to facilitate the integration process. However, the live request and response values may vary depending on the configuration.
1.2 Version History
Document Version | Additional Features |
---|---|
2.01 |
|
2.02 |
|
2.03 |
|
3.00 | Updated the document template. |
3.01 | Updated Section 7.2 parameters; editing and formatting. |
3.02 | Added Appendix with tables. |
3.03 | Added and updated Initialize, Authorize, Capture, and Refund Status Codes in Section 18. |
3.04 | Added table for update-order-data field description |
3.05 | Added section 9.1.5 for 3D secure authenticated card with field descriptions. |
3.06 | Added 3DS example and field description for Authorize-payment (Section 9). |
3.07 | Updated document template. |
3.08 | Added new Get Payment Methods API (Section 13). |
3.12 | Updated Section 16 path details. |
3.13 | Updated Section 8.1.1 Pay Request for Payu and Safetypay. Added a table to Section 8.1. Added tables to Section 19 for tax_id_type. |
3.14 | Replaced generic card numbers with “card_number” in XML files. |
3.15 | Updated Section 5 Velocity POP Payment Workflow. |
3.16 | Amended tables in Section 21 for tax_id_type. |
2. Introduction
A single integration with the Velocity POP API provides a variety of payment options for merchant websites and mobile applications. The API integration is an easy process and the CPD team provides support for the integration process. API integration is suitable for mobile applications or websites that have Payment Card Industry Data Security Standard (PCI DSS) requirements.
3. Glossary of Terms
The terms used in this document are listed and defined in the table below.
Terms |
Description |
Merchant |
Any business who sells goods or services and accepts payments from customers. |
Customers |
Those who want to buy goods and services from merchants |
HPP |
Hosted Payment Pages |
PSP |
Payment Service Provider |
ACQ |
Acquirer |
APM |
Alternate Payment Method |
CPD |
CellPoint Digital |
FX |
Foreign Exchange ServiceForeign Exchange Service |
MSISDN |
Mobile Station International Subscriber Directory Number |
MAC |
Message Authentication Code |
POP |
Payment Orchestration Platform |
CRM |
Client Relationship Management |
Min |
Minimum |
Max |
Maximum |
DCC |
Dynamic Currency Conversion |
MCP |
Multiple Currency Conversion |
PCC |
Presentment Currency Conversion |
txn |
Transaction |
PSS |
Payment and Settlement System |
CRM |
Customer Relationship Management |
4. Integration Requirements for Merchants
To integrate the Velocity API, you require the following:
- A PCI DSS certified website or platform
- Velocity URL
- Client ID
- Merchant account ID
- Velocity username and password
- Country and currency
- Country codes and operator ID
- Salt string
5. Velocity POP Payment Workflow
The following sequence diagram provides the POP payment options, which includes the following:
- The Common Payment Initiation Flow
- The Fetch Exchange Rates Flow for New Cards
- The New Card Authorization Flow
- The New Card Authorization Flow with Agreement to Store Card
- The Fetch Exchange Rates Flow for Stored Card
- The Authorization Flow for Using Stored Card
- The Authorization Flow for Card Stored in Third-party Wallet
- The Settlement with Acquirer Flow
- The 3DS Authorization Flow
- The Payment Flow with APM

The payment processing workflow of the Velocity POP is as follows:
- The merchant application authorizes a payment using the APIs.
- The backend of the Velocity POP completes the payment authorization and returns the status.
- The APIs provide the status to the frontend of the merchant application, which processes the payment through PSS, based on the payment status.
6. API Specifications: Payments Authentication and Security Management
All API requests must be made through HTTPS. The Velocity API header value format is as follows:
- Use HTTP basic authentication to authenticate the request. See Basic Authentication Method for details.
- Specify the auth-parameter, where the overall parameter value is provided in the form is x-cpm-sec-token.
- x-cpm-sec-token is a unique value that you generate for a unique request. Velocity uses this value to verify if a request is submitted multiple times.
To generate the x-cpm-sec-token, complete the following steps:
- Extract the request/response body string.
- Remove all space characters from the string including space, tabs, newline, and carriage return.
- Append the salt to the body string.
To append the salt, complete the following steps, as applicable to the authentication type:
a. For basic authentication, make the salt as base64 (API username + API password).
b. For bearer authentication, CPD provides the bearer token to be used as salt. - Calculate sha-256 (body + salt) of the string.
- Set this hash string as the x-cpm-sec-token header in the request/response.
Note: Consider the following items:
- To generate the hash string, you can follow the same process at the receiver end.
- To validate the salt, compare the hash string with the x-cpm-sec-token from the header.
The following is an example of the parameters in the header section.
Authentication | Basic |
---|---|
x-cpm-sec-token | 6lutO0jd0h1YjlHqjAn6cjKYF5n2ZJjp%2fDNk08IGKS0%3d |
7. Initialize Payment
You can invoke the initialize-payment API to initiate a new payment transaction using the Velocity POP. The API returns the required transaction information and merchant configuration for the payment to be successfully processed.
You can access the API from the path listed in the table below.
Path Name | Path Details |
---|---|
End Point | [VELOCITY URL]/mpoint/initialize-payment |
Format/Content Type | text/xml |
Authentication | HTTP basic access authentication |
7.1 Request
The following is an example of an initialize payment request.
<root>
<initialize-payment account="[integer]" client-id="[integer]">
<transaction order-no="testOrderId1" type-id="[integer]" session-id="[integer]" product-type="[integer]" booking-ref="[PNR]">
<amount country-id="[integer]" currency-id="[integer]">100</amount>
<callback-url> [merchant callback url] </callback-url>
<accept-url>[merchant accept url</accept-url>
<hmac>76f8682b42d0de9ad6948d1a8aef1744b939cd0570cd2c9749173b</hmac>
<additional-data>
<param name="merchant_payment_ref">12091201291</param>
</additional-data>
</transaction>
<auth-token>profilesuccessvalidation</auth-token>
<client-info language="en" sdk-version="2.1.0" version="2.1.0" platform="[platform type]" profileid="[integer]">
<mobile operator-id="[integer]" country-id="[integer]"> [mobile number] </mobile>
<email> [email id] </email>
<device-id>ABCdefr6732</device-id>
</client-info>
</initialize-payment>
</root>
Note: For split abandoned payments, the session-id is sent back in the initialize request with the full amount. A split abandoned happens when a customer starts a fresh transaction and leaves a current split payment.
Note: Merchants from specific domains, such as airlines or rail, want to display booking information to customers after they make payment. For example, ticket details along with the address of a customer.
7.2 Request with AID Data
The following is an example of airline data.
<?xml version="[integer]" encoding="UTF-8"?>
<root>
<initialize-payment account="[integer]" client-id="[integer]">
<transaction order-no="[string]" type-id="[integer]">
<amount currency-id="[integer]" country-id="[integer]">40180</amount>
<orders>
<shipping-address>
<name>name</name>
<street>street</street>
<street2>another street</street2>
<city>city</city>
<state>NY</state>
<zip>411028</zip>
<country>India</country>
</shipping-address>
<line-item>
<product sku="PR-SAEF-11">
<name>single journey</name>
<description>single journey</description><image-url>[image URL]>
<airline-data order-type="TICKET" order-no="[string]">
<amount decimals="[integer]" currency-id="[integer]" currency="PHP" symbol="" format="" country-id="640">638500</amount>
<fees>
<fee format="" symbol="" currency="PHP" country-id="640" type-id="2">112300</fee>
</fees>
<trips>
<trip seq="1" tag="1">
<service-level>Economy</service-level>
<origin time-zone="+08:00" country-id="640" external-id="MNL" type-id="8">Manila</origin>
<destination time-zone="+08:00" country-id="640" external-id="BCD" type-id="8">Bacolod</destination>
<departure-time>2020-02-21 08:15:00</departure-time>
<arrival-time>2020-02-21 09:35:00</arrival-time>
<booking-class>H</booking-class>
<transportation code="">
<vehicle type="[integer]" id="[integer]">321</vehicle>
<carriers>
<carrier type-id="1" code="PR">
<number>2131</number>
</carrier>
<carrier type-id="[integer]" code="PR">
<number>2131</number>
</carrier>
</carriers>
</transportation>
</trip>
</trips>
<profiles>
<profile id="[integer]">
<title>MR</title>
<first-name>test</first-name>
<last-name>one</last-name>
<type>ADULT</type>
<amount decimals="2" currency-id="608" currency="[string]" symbol="" format="" country-id="640">638500</amount>
<contact-info>
<email>[email id]</email>
<mobile country-id="[integer]">[phone number]</mobile>
</contact-info>
</profile>
</profiles>
<billing-summary>
<fare-detail>
<fare>
<profile-seq>1</profile-seq>
<description>adult</description>
<currency>PHP</currency>
<amount>60</amount>
<product-code>ABF</product-code>
<product-category>FARE</product-category>
<product-item>Base fare for adult</product-item>
</fare>
</fare-detail>
<add-ons>
<add-on>
<profile-seq>1</profile-seq>
<trip-tag>2</trip-tag>
<trip-seq>2</trip-seq>
<description>adult</description>
<currency>PHP</currency>
<amount>60</amount>
<product-code>ABF</product-code>
<product-category>FARE</product-category>
<product-item>Base fare for adult</product-item>
</add-on>
</add-ons>
</billing-summary>
</airline-data>
</product>
<amount>638500</amount>
<points>200</points>
<reward>1</reward>
<quantity>1</quantity>
<additional-data>
<param name="deviceFingerPrint">12091201291</param>
</additional-data>
</line-item>
</orders>
<hmac>76f8682b42d0de9ad6948d1a8aef1744b939cd0570cd2c9749173b</hmac>
<additional-data>
<param name="merchant_payment_ref">12091201291</param>
</additional-data>
</transaction>
<client-info language="en" platform="Android/9(28)" version="2.00" app-id="2">
<mobile country-id="[integer]">99065528</mobile>
<email>[email id]</email>
<device-id>c2f-60-45e-8f7-83a4</device-id>
</client-info>
</initialize-payment>
The parameters are listed and defined in the table below.
Parameter | Type | Required | Description | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Initializing Payments Parameters | ||||||||||||||||||||||||||||||
account | Integer | No | The unique ID associated with a payment transaction. It is optional. If you omit this parameter, the payment transaction is associated with the default sub-account. | |||||||||||||||||||||||||||
client-id | Integer | Yes | The unique ID configured for a merchant on the Velocity POP. | |||||||||||||||||||||||||||
Transaction Parameters | ||||||||||||||||||||||||||||||
order-no | String | Yes | The order ID that a merchant generates. It is an alphanumeric string. Note: Some Payment Providers have strict guidelines for the order-no. The recommended pattern is "[a-zA-Z0-9._-]. | |||||||||||||||||||||||||||
currency-id | Integer | No | The currency of the transaction amount. This should be the ISO 4217 numeric code. | |||||||||||||||||||||||||||
type-id | Integer | No | The type of transaction used for making payment. Velocity supports the following transaction types:
|
|||||||||||||||||||||||||||
session-id | Integer | No | The ID of a session used for multiple payment transactions during one payment flow. For example, split payment or retry of a failed payment transaction. | |||||||||||||||||||||||||||
amount | Integer | Yes | The total amount that a customer is charged for a payment transaction in a country’s smallest currency. For example, the smallest currency of USD is penny. If the transaction amount is $120.30, then the amount field contains value 12030. Note: The amount is always a non-decimal value in the request. The object amount contains the country-id and currency-id parameters. | |||||||||||||||||||||||||||
fees/fee | Integer | No | This the addition fees if applicable for the transaction like for specific scenarios like administrative fee for offline payment or pay later. For example, the smallest currency of USD is penny. If the transaction amount is $120.30, then the amount field contains value 12030. Note: The fee is always a non-decimal value in the request. The object amount contains the country-id and currency-id parameters. | |||||||||||||||||||||||||||
country-id | Integer | Yes | The CPD-specific country code, which is available in appendix. | |||||||||||||||||||||||||||
callback-url | String | No | The absolute URL to the back office of a merchant where Velocity POP sends the payment status. Note: If you do not provide this parameter, Velocity uses the default URL. | |||||||||||||||||||||||||||
accept-url | String | No | The URL where Velocity directs a customer after successfully completing a payment transaction. Note: If you do not provide this parameter, Velocity uses the default URL. The URL is used for redirecting to either the HPP or merchant’s page after a payment completion. | |||||||||||||||||||||||||||
cancel-url | String | No | The absolute URL where Velocity directs customers if they cancel a payment transaction midway. Note: If you do not provide this parameter, Velocity uses the default URL. The URL is used for redirecting to either the HPP or merchant’s page after a payment cancellation. | |||||||||||||||||||||||||||
decline-url | String | No | The absolute URL where Velocity directs customers if the payment transaction fails. The URL is used for redirecting to either the HPP or merchant’s page after a payment failure. | |||||||||||||||||||||||||||
auth-url | String | No | The URL which used for single sign-on authentication if provided by an external system. | |||||||||||||||||||||||||||
service-type-id | Integer | No | A value to indicate the type of exchange services used for a transaction. The ID indicates if the FX services such as DCC, MCP, and PCC are opted. The ID is a two-digit number XY in which:
|
|||||||||||||||||||||||||||
auth-token | String | No | A unique token sent to the specified auth-url to authenticate customers when they pay with a stored card and use single sign-on. | |||||||||||||||||||||||||||
hmac | String | Yes | The Message Authentication Code. It is calculated by creating a sha-512 hash comprising the following input fields in the listed order:
|
|||||||||||||||||||||||||||
orders | Object | No | The order details with following details: event, location, date or time, ticket type, cost, booking fee, quantity, and total price. Note: This parameter is used for airline data only, defined in separate guide for Airline Data. | |||||||||||||||||||||||||||
additional-data | Node | No | An optional node that contains additional information about the transaction. It includes a list of parameters with values. Recommended length for parameter value is 20 characters. | |||||||||||||||||||||||||||
additional-data (merchant payment reference) | Node | No | An optional node to pass the merchant's payment reference, the merchant needs to pass this value as additional data in the alphanumeric format maximum 20 characters. | |||||||||||||||||||||||||||
Merchant information parameters | ||||||||||||||||||||||||||||||
client-info | Object | Yes | An object of client-info, which contains the following merchant details: language, version, platform, and profile ID. | |||||||||||||||||||||||||||
platform | String | yes | The platform from which the request is sent. For example, web, iOS, Android, B2B, and B2C. | |||||||||||||||||||||||||||
sdk-version | Integer | yes | The version of SDK used to send the request. Note: Use 2.1.0 SDK version in the request. | |||||||||||||||||||||||||||
version | String | yes | The version of the API or application that send the request. | |||||||||||||||||||||||||||
language | String | yes | The language that Velocity uses as default when translating the payment pages. Velocity uses a default language set by a merchant if this parameter is omitted. Note: Velocity language codes are based upon the ISO- 639-1 standard. Refer http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes for details. | |||||||||||||||||||||||||||
mobile | Integer | No | The MSISDN of a customer without International Dialling Code. Note: A mobile number can be mandatory or optional, based on the requirement of a merchant or a PSP. | |||||||||||||||||||||||||||
country-id | Integer | No | The CPD-specific country code, which is provided on request. Note: Mandatory only if mobile number is provided. | |||||||||||||||||||||||||||
String | No | The email address of a customer. If your customer provides this parameter, the Email input field on the Send E-Mail Receipt page is automatically populated with this value. Note: Email can be mandatory or optional, based on the requirement of a merchant or a PSP. | ||||||||||||||||||||||||||||
device-id | String | No | The device ID of a customer’s device. Note: device ID is optional for a web channel. |
Note: For AID parameters description, refer to the CPD Velocity AID Data Integration for HPP V1.02 guide.
7.3 Response
The response from the Velocity server has information about the transaction such as transaction ID and amount, along with the configured payment methods or card types. The merchants must call this API when a customer makes a purchase.
The initialize payment response can be divided into the following parts
- Merchant configuration
- Transaction information
- Card information
7.3.1 Card Payment
The following is an example of the response that the Velocity server sends to a merchant’s customer.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<client-config account="[integer]" auto-capture="false" id="[integer]" mode="[integer]" store-card="[integer]">
<name>Test</name>
<callback-url>[callback url]</callback-url>
<accept-url />
</client-config>
<transaction auto-capture="true" eua-id="[integer]" id="[integer]" language="en" mode="1" order-no="" type-id="[integer]">
<amount country-id="[integer]" currency="DKK" format="{PRICE} {CURRENCY}" symbol="">10025</amount>
<mobile country-id="[integer]" operator-id="[integer]">30206172</mobile>
<callback-url>[CALLBACK URL]</callback-url>
<accept-url />
</transaction>
<cards>
.....
<card cvc-length=“3” cvcmandatory=“false” dcc=“false” enabled=“true” id=“8” instalment=“0" max-length=“19” min-length=“13" payment-type=“1” preferred=“false” processor-type=“1” psp-id=“21" state-id=“1” type-id=“8">
<name>Visa</name>
<prefixes>
<prefix>
<min>4000</min>
<max>4999</max>
</prefix>
<prefix>
<min>413222</min>
<max>413222</max>
</prefix>
</prefixes>Visa
</card>
</cards>
<stored-cards>
<card id="[integer]" preferred="true" psp-id="2" type-id="2" dcc="true”>
<name>myVisa</name>
<card-number-mask>4711 10** **** 0000</card-number-mask>
<expiry>06/24</expiry>
</card>
</stored-cards>
</root>
7.3.2 Wallet
The following is an example of the response to a payment using a wallet.
<wallets>
<card cvc-length="-1" enabled="true" id="15" max-length="-1" min-length="-1" payment-type="3" preferred="false" processor-type="3" psp-id="18" state-id="1" type-id="[integer]">
<name>[wallet name]</name>
<prefixes>
<prefix>
<min>0</min>
<max>0</max>
</prefix>
</prefixes>
<url method="overlay" />
<head><script type='text/javascript'> var debug = false; var countryCode = "US"; var currencyCode = "USD"; var merchantIdentifier = 'merchant.com.cellpointmobile.(wallet name)'; var displayName ="UATP"; var totalAmount = "1"; var supportedNetword = ['AMEX','MASTERCARD','VISA']; </script> <script type="text/javascript" src="https://s3.ap-qwert-1.amazonaws.com/cpmassets/psp/(wallet name).js"></script> <style> #(wallet name){width:150px;height:50px;display:none;border-radius:5px;background-image:-webkit-named-image(apple-pay-logo-white);background-position:50% 50%;background-color:#000;background-size:60%;background-repeat:no-repeat} </style></head>
<body><button type="button" id="(wallet name)"></button></body>
</card>
</wallets>
The following is an example of the response to a payment using Apple Pay.
?xml version="1.0" encoding="UTF-8"?>
<root>
<url method="overlay" />
<head><script type='text/javascript'> var debug = false; var countryCode = "US"; var currencyCode = "USD"; var merchantIdentifier = 'merchant.com.CPD.iphone.qa'; var displayName ="UATP"; var totalAmount = "1"; var supportedNetword = ['AMEX','MASTERCARD','VISA']; </script> <script type="text/javascript" src="https://s3.ap-qwert-1.amazonaws.com/cpmassets/psp/(wallet name).js"></script> <style> #(wallet name){width:150px;height:50px;display:none;border-radius:5px;background-image:-webkit-named-image(apple-pay-logo-white);background-position:50% 50%;background-color:#000;background-size:60%;background-repeat:no-repeat} </style></head>
<body><button type="button" id="(wallet name)"></button></body>
</root>
7.3.3 Offline
<offline>
<card cvc-length="0" cvcmandatory="false" dcc="false" enabled="true" id="96" installment="0" max-length="0" min-length="0" payment-type="8" preferred="false" presentment-currency="false" processor-type="8" psp-id="-1" state-id="1" type-id="96">
<name>Payment Center Offline</name>
<prefixes />Payment Center Offline
</card>
</offline>
7.3.4 Aggregator
<aggregators>
<card cvc-length="0" cvcmandatory="false" dcc="false" enabled="true" id="97" installment="0" max-length="0" min-length="0" payment-type="7" preferred="false" presentment-currency="false" processor-type="7" psp-id="-1" state-id="1" type-id="97">
<name>PSE</name>
<prefixes />
<active-payment-menthods>
<payment-method>
<logoName>8f56c0c2-c2ac-4b25-9d64-849101aa512b</logoName>
<logoURL>0</logoURL>
<displayName>A continuación seleccione su banco</displayName>
<issuingBank>0</issuingBank>
<displayOrder>1</displayOrder>
</payment-method>
<payment-method>
<logoName>2c9c848b-a02b-4aa5-bc49-6695e28f7517</logoName>
<logoURL>1552</logoURL>
<displayName>BAN.CO</displayName>
<issuingBank>1552</issuingBank>
<displayOrder>2</displayOrder>
</payment-method>
</active-payment-menthods>PSE
</card>
</aggregators>
7.3.5 APM
<apms>
<card id="95" type-id="95" psp-id="-1" min-length="-1" max-length="-1" cvc-length="-1" state-id="1" payment-type="4" preferred="false" enabled="true" processor-type="4" installment="0" cvcmandatory="false" dcc="false" presentment-currency="false">
<name>PayMaya</name>
<prefixes>
<prefix id="271">
<min>-1</min>
<max>-1</max>
</prefix>
</prefixes>PayMaya
</card>
</apms>
7.3.6 Vouchers
<vouchers>
<card id="26" type-id="26" psp-id="-1" min-length="-1" max-length="-1" cvc-length="-1" state-id="1" payment-type="2" preferred="false" enabled="true" processor-type="2" installment="0" cvcmandatory="false" dcc="false" presentment-currency="false">
<name>TravelFund</name>
<prefixes>
<prefix id="273">
<min>-1</min>
<max>-1</max>
</prefix>
</prefixes>TravelFund
</card>
<card id="24" type-id="24" psp-id="-1" min-length="-1" max-length="-1" cvc-length="-1" state-id="1" payment-type="2" preferred="false" enabled="true" processor-type="2" installment="0" cvcmandatory="false" dcc="false" presentment-currency="false">
<name>Invoice</name>
<prefixes>
<prefix id="178">
<min>-1</min>
<max>-1</max>
</prefix>
<prefix id="180">
<min>-1</min>
<max>-1</max>
</prefix>
</prefixes>Invoice
</card>
</vouchers>
8. Pay
The Pay request is an internal request from a merchant’s portal to Velocity when a customer initializes the payment. The purpose of this request is to do the following:
- Retrieve information about how to proceed with the payment or PSP confirmation which gives an idea about the parameters required to authorize a transaction.
- Ensure that a complete audit trail is maintained for each payment transaction.
- This request can return different responses depending on the type of payment such as 3ds, non-3ds, wallet, alternative payment method (APM), or store card.
Note: Merchants do not require to call the Pay API if the following applies:
- They opt to use the store vault of Velocity and their customers make payment using the stored cards.
- Customers make payment using cards.
After consuming the Pay API, merchants must invoke the authorize API. Refer to Authorize Payment for details.
The API is available at the following path:
Path Name | Path Details |
---|---|
End Point | [Velocity URL]/mpoint/pay |
Format/Content Type | text/xml |
Authentication | HTTP basic access authentication |
8.1 Request
The following request is sent for a pay request:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
<pay account="101011" client-id="10101">
<transaction id="5057200" store-card="false">
<card type-id="97">
<amount country-id="405" currency-id="170">25526000</amount>
<token>1022</token>
</card>
<hmac>f5ef1cfd960922babd492f06d6bf439a61de05cd395fc55225d5c1fb91801010a4dd6fa56872b6a8fa53cced7594582adb1d938f93f1859a1e794a85045f28a4</hmac>
<billing-address country-id="640">
<full-name>Test Automation</full-name>
<street>MyStreet</street>
<city>Pune</city>
</billing-address>
</transaction>
<auth-token>success</auth-token>
<client-info language="en" platform="HTML5" sdk-version="2.0.0" version="2.0.0">
<mobile country-id="640" operator-id="64000">9898989898</mobile>
<email>[email protected]</email>
<customer-ref>[email protected]</customer-ref>
<ip>223.235.105.4</ip>
</client-info>
</pay>
</root>
Note: The token information depends on the type of transaction.
Parameter | Type | Required | Description |
---|---|---|---|
account | String | Yes | The identification number of a merchant account |
client-id | Integer | Yes | The unique ID of a merchant. |
id | String | Yes | CPD Transaction ID for which status is requested. |
card type-id | Integer | Yes | The type of card used for a transaction. |
amount country-id | Integer | Yes | The CPD-specific country code for the currency, which is made available to merchants on request. |
currency-id | Integer | No | The currency of the transaction amount. This should be the ISO 4217 numeric code. |
token | String | No | This is a card token. |
hmac | String | Yes | Hash-based Message Authentication Code. It is calculated by creating a sha-512 hash comprising the following input fields in the listed order. *See table below. Note: CPD provides the salt value to merchants. Conditional Parameters are optional if not provided in request, if conditional params are present in request those are mandatory MAC calculation secures the information sent by the merchant to Velocity by applying the SHA-512 encryption algorithm on key parts of the information sent to protect against tampering. The “salt” is the merchant's shared secret string used to ensure that MAC is unique. |
billing-address country id | String | Yes | The billing address country ID of the customer. |
full-name | String | Yes | The full name of the customer. |
street | String | Yes | The street name of the customer. |
city | String | Yes | The city name of the customer. |
auth-token | String | No | A unique token sent to the specified auth-url to authenticate customers when they pay with a stored card and use single sign-on. |
language | String | Yes | The language that Velocity uses as default when translating the payment pages. Velocity uses a default language set by a merchant if this parameter is omitted. Note: Velocity language codes are based upon the ISO- 639-1 standard. Refer to http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes for details. |
mobile country-id | Integer | Yes | The CPD-specific country code for country of mobile, which is made available to merchants on request. |
String | Yes | The email address of a customer. If your customer provides this parameter, the Email input field on the Send E-Mail Receipt page is automatically prepopulated with this value. | |
customer-ref | Integer | Yes | A unique reference number used for customer identification. |
HMAC
Parameter | Required |
---|---|
clientid | Yes |
orderid | Yes |
amount | Yes |
country | Yes |
mobile | Conditional |
mobile-country | Conditional |
Conditional | |
deviceid | Conditional |
salt | Yes |
8.1.1 Request for Payu and SafetyPay
The following request is sent for a pay request for Payu and SafetyPay only:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
<pay account="101011" client-id="10101">
<transaction id="5057200" store-card="false">
<card type-id="97">
<amount country-id="405" currency-id="170">25526000</amount>
<token>1022</token>
</card>
<hmac>f5ef1cfd960922babd492f06d6bf439a61de05cd395fc55225d5c1fb91801010a4dd6fa56872b6a8fa53cced7594582adb1d938f93f1859a1e794a85045f28a4</hmac>
<billing-address country-id="640">
<full-name>Test Automation</full-name>
<street>MyStreet</street>
<city>Pune</city>
<contact-details>
<mobile operator-id="40500" country-id="405">9898989898</mobile>
<email>[email protected]</email>
</contact-details>
</billing-address>
<additional-data>
<param name="tax_id_type">COL_NIT</param>
<param name="tax_id">123456</param>
</additional-data>
</transaction>
<auth-token>success</auth-token>
<client-info language="en" platform="HTML5" sdk-version="2.0.0" version="2.0.0">
<mobile country-id="640" operator-id="64000">9898989898</mobile>
<email>[email protected]</email>
<customer-ref>[email protected]</customer-ref>
<ip>223.235.105.4</ip>
</client-info>
</pay>
</root>
8.2 Response
The pay response includes all the required parameters that Velocity sends to a merchant’s portal to authorize a payment.
8.2.1 Card Payment
The following is an example of a payment response for a card payment:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<psp-info id="[integer]" merchant-account="[integer]" type="1">
<url content-type="application/x-www-form-urlencoded" method="post">[post URL]</url>
<card-number>card_number</card-number>
<expiry-month>expiration_month</expiry-month>
<expiry-year>expiration_year</expiry-year>
<cvc>securitycode</cvc>
<name>card_holderName</name>
<clientinfo>client_info</clientinfo>
<accept-url>[ url]</accept-url>
<return-url>return url</return-url>
<hidden-fields>
<merchant_account_id>9105bb4f-ae68-4768-9c3b-3eda968f57ea</merchant_account_id>
<request_id>1838633_15172966764151</request_id>
<transaction_type>10091</transaction_type>
<requested_amount>100</requested_amount>
<requested_amount_currency>USD</requested_amount_currency>
<client-id>[integer]</client-id>
<account-id>[integer]</account-id>
<requested_amount_country>200</requested_amount_country>
<store-card>false</store-card>
<requested_currency_id>840</requested_currency_id>
<transactionId>1838633</transactionId>
<payment_ip_address>139.162.215.209</payment_ip_address>
<email>email id</email>
<phone>integer</phone>
<card-type-id>7</card-type-id>
<field_name_1>exp_month</field_name_1>
<field_name_2>exp_year</field_name_2>
<field_name_3>card_type_id</field_name_3>
<field_value_3>7</field_value_3>
<field_name_4>stored_card</field_name_4>
<field_value_4>false</field_value_4>
<card_type>mastercard</card_type>
<notification_url_1>url</notification_url_1>
</hidden-fields>
<message language="en" />
</psp-info>
<status code="1009">Payment Initialize with PSP</status>
</root>
8.2.2 APM
The following is an example of payment response for APM:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<psp-info id="24" merchant-account="[integer]" type="4">
<url content-type="application/x-www-form-urlencoded" method="post">https://www.sandbox.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-9NU6Xasdjl2B&useraction=commit</url>
<hidden-fields>
<merchant>ababababaYYRCpSSRl31ADxVAF5rd9Z-52J.7gdxYOzAv3RD</merchant>
<order.id>CPD1516873044132</order.id>
<order.amount>100</order.amount>
<order.currency>GBP</order.currency>
<session.id>EC-9NU66762XE901272B</session.id>
<transaction.id>1838548</transaction.id>
<sourceOfFunds.type>CARD</sourceOfFunds.type>
<mpoint-id>1838548</mpoint-id>
<store-card>false</store-card>
<requested_currency_id>826</requested_currency_id>
</hidden-fields>
<name>card_holderName</name>
<message language="en"/>
</psp-info>
<status code="1009">Payment Initialize with PSP</status>
</root>
8.2.3 Wallet
The following is an example of a payment response for a wallet:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<psp-info id="14" merchant-account="merchant.com.cellpointdigital.applepay" type="3">
<url method="overlay"/>
<head><script type='text/javascript'> var debug = false; var countryCode = "US"; var currencyCode = "USD"; var merchantIdentifier = 'merchant.com.cellpointdigital.applepay'; var displayName ="Ethiopian Airlines"; var totalAmount = "578.34"; var supportedNetword = ['VISA','MASTERCARD','AMEX']; </script> <script type="text/javascript" src="https://cpmassets.s3-ap-southeast-1.amazonaws.com/et/1.3.1/applepay.js"></script> <style> #applePay{width:150px;height:50px;display:none;border-radius:5px;background-image:-webkit-named-image(apple-pay-logo-white);background-position:50% 50%;background-color:#000;background-size:60%;background-repeat:no-repeat} </style></head>
<body><button type="button" id="applePay"></button></body>
<name>card_holderName</name>
<auth-token>Auth-Token</auth-token>
<message language="en"></message>
</psp-info>
<status code="1009">Payment Initialize with PSP</status>
</root>
8.2.4 Online Banking
The following is an example of a payment response for online banking:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
<psp-info id="53" merchant-account="" type="4">
<url content-type="application/x-www-form-urlencoded" method="GET" type-id="11">https://sandbox.api/payments-api/pse-caller</url>
<hidden-fields>
<enc>adpc3Ryby5kZXNhcnJvbGxvLnBzZS5jb20uY28vUFNFVXNlclJlZ2lzdGVyL1N0YXJ0VHJhbnNhY3Rpb24uYXNweZUU5dUxxYW4lMmI0elBDcU94S3I1b09ySXZTSmYwRElPcno0RjV3S0pQdU0jIyMjQVYgM0JWOVBMIyMxMjM0NTY3OA==</enc>
</hidden-fields>
<accept-url>https://sit.cpm.dev/mpoint/aggregator/(PSP name)/redirect</accept-url>
<name>card_holderName</name>
<auth-token>Auth-Token</auth-token>
<message language="en"/>
</psp-info>
<status code="1041">Payment Pending</status>
</root>
The parameters are listed and defined in the table below.
Parameter | Type | Required | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Client Information Parameterss | |||||||||||
language | String | Yes | The language that Velocity uses as default when translating the payment pages. Note: Velocity language codes are based upon the ISO- 639-1 standard. Referhttps://en.wikipedia.org/wiki/List_of_ISO_639-1_codes for details. | ||||||||
version | String | Yes | The version of an API or application that sends the request. | ||||||||
platform | String | Yes | The platform from which the request is sent; for example, The platform from which the request is sent. It can be:
|
||||||||
mobile operator-id | Integer | Yes | The ID of a customer’s mobile network operator. CPD recommends including this parameter in the request to ensure Velocity correctly interacts with the operator. | ||||||||
country-id | Integer | Yes | The CPD-specific country code, which is made available to merchants on request. | ||||||||
client-id | Integer | Yes | A unique ID configured for a merchant on the Velocity POP. | ||||||||
device-id | String | No | The device ID of a customer’s device. Note: Device ID is optional for a web channel. | ||||||||
customer-reference | Integer | Yes | A unique reference number used for customer identification. | ||||||||
Account Parameters | |||||||||||
id | String | No | The identification number of a merchant account. | ||||||||
markup | String | Yes | The type of store front. | ||||||||
Transaction Parameters | |||||||||||
id | Integer | Yes | The identification number of a transaction. | ||||||||
store-card | Boolean | yes | Shows if you have stored card. | ||||||||
Card Parameters | |||||||||||
amount | Integer | Yes | The total amount that a customer is charged for a payment transaction in a country’s smallest currency. For example, the smallest currency of USD is penny. If the transaction amount is $120.30, then the amount field contains value 12030. Note: The amount is always a non-decimal value in the request. The object amount contains the country-id and currency-id parameters. | ||||||||
type-id | Integer | Yes | The type of card scheme. For example, Mastercard or Visa. | ||||||||
token | String | No | This is a card token. | ||||||||
psp-info Parameters | |||||||||||
id | integer | yes | Internal ID of the PSP in Velocity | ||||||||
merchant-account | integer | No | Used for merchant-account for third-party wallet on device. | ||||||||
content-type | String | No | The content type used for the request to the PSP. | ||||||||
method | Integer | Yes | The method used for submitting the authorization request.
|
||||||||
token | String | No | This is a card token. | ||||||||
order-id | Alpha numeric string | Yes | The order identification number of a transaction. | ||||||||
transaction-id | Integer | Yes | A unique transaction identification number of a transaction. | ||||||||
store-card | Boolean | yes | Shows if you have stored card. | ||||||||
requested_currency_id | Integer | No | The identification number of the currency called during a transaction. | ||||||||
language | String | Yes | The language that Velocity uses as default when translating the payment pages. Velocity uses a default language set by a merchant if this parameter is omitted. Note: Velocity language codes are based upon the ISO- 639-1 standard. Refer http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes for details. | ||||||||
Status Parameter | |||||||||||
Code | Integer | yes | The status code of a transaction. It depends on the payment provider. It can be 1009, 1041, or an error code. |
9. Authorize Payment
The authorize payment request is used to authorize a payment. The API is available at the following path:
Path Name | Path Details |
---|---|
End Point | [Velocity URL]/mpoint/ authorize-payment |
Format/Content Type | text/xml |
Authentication | HTTP basic access authentication |
9.1 Request
There are alternative request formats depending on the payment methods selected during a payment.
9.1.1 New Card
The following is an example of making a payment using a new card:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<authorize-payment account="100101" client-id="10002">
<transaction type-id="30" id="1832214" store-card="false" >
<card type-id="7">
<amount country-id="200">100</amount>
<card-holder-name>CardHolder Name</card-holder-name>
<card-number>"card_number"</card-number>
<expiry>01/23</expiry>
<cvc>009</cvc>
</card>
</transaction>
<client-info language="en" version="1.28" platform="iOS/9.0">
<mobile operator-id="10000" country-id="[integer]">[phone number]</mobile>
<email>[email id]</email>
<device-id>3432444444444444444FFFFFf03</device-id>
</client-info>
</authorize-payment>
</root>
9.1.2 Credit or Debit Card
The following is an example of a payment using a credit or debit card:
<?xml version="1.0" encoding="UTF-8"?>
<authorize-payment account="100691" client-id="10069">
<transaction type-id="10091" id="1935288">
<card type-id="8">
<amount country-id="603">85556</amount>
<card-holder-name>CellPointMobie</card-holder-name>
<card-number>"card_number"</card-number>
<expiry>11/18</expiry>
</card>
</transaction>
<client-info language="da" version="1.28" platform="iOS/9.0">
<mobile operator-id="10000" country-id="200">[phone number]</mobile>
<email>[email id]</email>
<device-id>B4D54A3A4F5E4E1595F7A3BF16249F6D14555303</device-id>
</client-info>
</authorize-payment>
9.1.3 Third-party Wallet
The following is an example of a payment using a third-party wallet:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<authorize-payment account="[integer]" client-id="[integer]">
<transaction type-id="[integer]" id="[integer]">
<card network="mastercard" type-id="[integer]">
<address country-id="[integer]">
<full-name>test name</full-name>
<street>Gl. test street 8</street>
<postal-code>7766</postal-code>
<city>testCity</city>
<state>CA</state>
</address>
<amount country-id="[integer]">10025</amount>
<token>dasdlkjasl31232123231dkdlsakldfmggmmggm........</token>
</card>
</transaction>
<client-info language="en" version="1.20" platform="iOS/8.1.3">
<mobile operator-id="[integer]" country-id="[integer]">[phone number]</mobile>
<device-id>32E2C0FAF455915D14298774</device-id>
</client-info>
</authorize-payment>
9.1.4 Voucher
The following is an example of making a payment using a voucher:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<authorize-payment account="100101" client-id="10002">
<transaction type-id="30" id="1832214" store-card="false" >
<voucher id=”[string]” order-no=”[string]”>
<amount currency-id=”840” country-id="200">100</amount>
</voucher>
</transaction>
<client-info language="en" version="1.28" platform="iOS/9.0">
<mobile operator-id="10000" country-id="[integer]">[phone number]</mobile>
<email>[email id]</email>
<device-id>3432444444444444444FFFFFf03</device-id>
</client-info>
</authorize-payment>
</root>
9.1.5 3D secure authenticated card
The following is an example of a payment using a credit or debit card with 3D secure information:
<?xml version="1.0" encoding="UTF-8"?>
<authorize-payment account="100691" client-id="10069">
<transaction type-id="10091" id="1935288">
<card type-id="8">
<amount country-id="603">85556</amount>
<card-holder-name>CellPointMobie</card-holder-name>
<card-number>"card_number"</card-number>
<expiry>11/18</expiry>
<pre_authenticated>true/false</pre_authenticated>
<info-3d-secure>
<provider>{{provider_which_is_used_for_authentication}}</provider>
<version>{{3DS Version}}</version>
<cryptogram eci="{{eci}}" xid="{{xid}}" algorithm-id="{{algorithm}}">
{{cryptogram}}
</cryptogram>
<additional-data>
<param name="status">{{status}}</param>
<param name="msg">{{msg}}</param>
<param name="veresEnrolledStatus">{{veres enrolled status}}</param>
<param name="paresTxStatus">{{paresTxStatus}}</param>
<param name="PAResVerified">{{PAResVerified}}</param>
<param name="PAResSyntaxOK">{{PAResSyntaxOK}}</param>
<param name="cardType">{{cardType}}</param>
<param name="accessControlServerTransactionId">{{accessControlServerTransactionId}}</param>
<param name="threeDSServerTransID">{{threeDSServerTransID}}</param>
<param name="directoryServerTransactionId">{{directoryServerTransactionId}}</param>
</additional-data>
</info-3d-secure>
</card>
</transaction>
<client-info language="da" version="1.28" platform="iOS/9.0">
<mobile operator-id="10000" country-id="200">[phone number]</mobile>
<email>[email id]</email>
<device-id>B4D54A3A4F5E4E1595F7A3BF16249F6D14555303</device-id>
</client-info>
</authorize-payment>
Parameter | Type | Required | Description |
---|---|---|---|
card | |||
pre_authenticated | String | No | True: In Case of 3DS already done at the merchant end. | Info-3d-secure Parameter |
version | String | Yes | The version of 3DS used to process the transaction.
|
provider | String | No | The provider’s name which is used for authentication. |
cryptogram | String | Conditional | Required, if eci value is 01, 02, 05 or 06.
A cryptographic value that provides evidence of the outcome of a 3DS verification.
|
eci | String | Yes | Electronic Commerce Indicator (ECI).
It indicates the outcome of the 3DS verification.
|
xid | String | Conditional | This is mandatory for 3DS Version 1. |
algorithm-id | String | No | A cryptographic algorithm used for cryptograms. | additional-data | Node | No In the case of 3DS version 2 directoryServerTransactionId param, it is mandatory. | An optional node that contains additional information about the 3DS authentication transaction provided by an external authentication service. It includes a list of parameters with values.
For example:
|
9.2 Response
The Velocity server sends the response confirming if the transaction authorization was a success or a failure. The following example shows that a payment request was authorized successfully:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<status code="2000">Payment authorized</status>
</root>
The following is an example of response received for a failed authorization:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<status code="2010" sub-code="2010205"> Unable to authorize</status>
</root>
The parameters are listed and defined in the table below.
Parameter | Type | Required | Description |
---|---|---|---|
status | String | Yes | Describes the status code. |
code | Integer | Yes | A status code for the authorizing processes. |
sub-code | Integer | Yes | The granular-level status code which shows the reason for a failed authorization. |
9.2.1 3DS 1.0 Authentication Required
The following is an example of response received for 3DS 1.0 authentication required:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<status code="2005">3d verification required</status>
<parsed-challenge>
<action type-id="11">
<url content-type="application/x-www-form-urlencoded" method="post">https://3ds-acs.test.modirum.com/mdpayacs/creq?token=220646651.1670842886.KJTk10b79hUunC4uy7erl0gOsaZW7UHoEh56a0-9Un4</url>
<hidden-fields>
<creq>ewogICAiYWNzVHJhbnNJRCIgOiAiZjEyZjUxMDItOTI4ZC00N2I3LTg1YjAtZTM5NDhjYjIzZDY1IiwKICAgImNoYWxsZW5nZVdpbmRvd1NpemUiIDogIjAzIiwKICAgIm1lc3NhZ2VUeXBlIiA6ICJDUmVxIiwKICAgIm1lc3NhZ2VWZXJzaW9uIiA6ICIyLjIuMCIsCiAgICJ0aHJlZURTU2VydmVyVHJhbnNJRCIgOiAiMzIwYmUxM2MtYmQ4ZC01YzliLTgwMDAtMDAwMDAxMjRiYTM1Igp9</creq>
<TermUrl>https://5j.mesb.sit.cpm.dev/mpoint/first-data/threed-redirect?referencedTransactionId=5721077</TermUrl>
</hidden-fields>
</action>
</parsed-challenge>
</root>
The steps to process the authorize response for the 3DS 1.0 authentication are as follows:
- Extract the content of tags<parsed-challenge>.
- Do a form post of all the fields hidden-fields to the url in the action tag using browser.
- Follow the instruction to complete authentication.
- After the authentication is complete, it is redirected to your Accept or Decline URL.
- The Callback notification with the authorization status is sent to your Callback URL.
9.2.2 3DS 2.0 Authentication Required
The following is an example of response received for 3DS 2.0 authentication required:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<status code="2005" sub-code="2005002">3D Secure Verification Required</status>
<web-method><html class="no-js" lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <META http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta charset="utf-8"> <title>3D Secure Processing</title> <link href="https://3ds-mpi-cellpointmobile.test.modirum.com/mdpaympi/static/mpi.css" rel="stylesheet" type="text/css"> </head> <body> <div id="main"> <div id="content"> <div id="order"> <h2>3D Secure Processing</h2> <script src="https://3ds-mpi-cellpointmobile.test.modirum.com/mdpaympi/static/red.js" defer>/* needed for xsl to xhtml */</script> <div id="spinner"> <img src="https://3ds-mpi-cellpointmobile.test.modirum.com/mdpaympi/static/preloader.gif" alt="Please wait.."></div> <img src="https://3ds-mpi-cellpointmobile.test.modirum.com/mdpaympi/static/mc_idcheck_hrz_ltd_pos_103px.png" alt="MasterCard ID Check"><iframe id="tdsMmethodTgtFrame" name="tdsMmethodTgtFrame" xmlns="http://www.w3.org/1999/xhtml"><!--.--> </iframe><form id="tdsMmethodForm" name="tdsMmethodForm" action="https://3ds-acs.test.modirum.com/mdpayacs/3ds-method" method="post" target="tdsMmethodTgtFrame"> <input type="hidden" name="3DSMethodData" value="eyAidGhyZWVEU1NlcnZlclRyYW5zSUQiIDogImRkZjQ5MTYxLTZiYjgtNWY5YS04MDAwLTAwMmVhNzE4N2E0ZCIsICJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIiA6ICJodHRwczovLzNkcy1tcGktY2VsbHBvaW50bW9iaWxlLnRlc3QubW9kaXJ1bS5jb20vbWRwYXltcGkvTWVyY2hhbnRTZXJ2ZXI_bW49WSZ0eGlkPTIwMDM3MTg5NDg2MSZkaWdlc3Q9UFVyQ3ZnWnZZeHp0cVU1a1N2MTdTdnhjUlVXaTAwWVByNlh5MmttWCUyQkg0JTNEIiB9"><input type="hidden" name="threeDSMethodData" value="eyAidGhyZWVEU1NlcnZlclRyYW5zSUQiIDogImRkZjQ5MTYxLTZiYjgtNWY5YS04MDAwLTAwMmVhNzE4N2E0ZCIsICJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIiA6ICJodHRwczovLzNkcy1tcGktY2VsbHBvaW50bW9iaWxlLnRlc3QubW9kaXJ1bS5jb20vbWRwYXltcGkvTWVyY2hhbnRTZXJ2ZXI_bW49WSZ0eGlkPTIwMDM3MTg5NDg2MSZkaWdlc3Q9UFVyQ3ZnWnZZeHp0cVU1a1N2MTdTdnhjUlVXaTAwWVByNlh5MmttWCUyQkg0JTNEIiB9"> </form><div id="formdiv"> <div> <form id="webform0" name="ddcoll" method="POST" action="https://3ds-mpi-cellpointmobile.test.modirum.com/mdpaympi/MerchantServer" accept_charset="UTF-8"> <input type="hidden" name="txid" value="200371894861"><input type="hidden" name="TDS2_Navigator_language" value=""><input type="hidden" name="TDS2_Navigator_javaEnabled" value=""><input type="hidden" name="TDS2_Navigator_jsEnabled" value=""><input type="hidden" name="TDS2_Screen_colorDepth" value=""><input type="hidden" name="TDS2_Screen_height" value=""><input type="hidden" name="TDS2_Screen_width" value=""><input type="hidden" name="TDS2_Screen_PixelDepth" value=""><input type="hidden" name="TDS2_TimezoneOffset" value=""><input type="hidden" name="digest" value="5woOk3ql1bNMosc5yuyLXdk8k47KCTR+uVloWvAA/XQ=" readonly="true"><input type="submit" name="submitBtn" id="submitBtn" value="Please click here to continue"> </form> </div> </div> <noscript> <div align="center"> <b>Javascript is turned off or not supported!</b> <br> </div> </noscript> </div> <div id="content-footer"></div> </div> </div> </body> </html></web-method>
<return-url>https://av.uat-01.cellpointmobile.net/mpi/modirum/threed-redirect</return-url>
<card-mask>553571******3561</card-mask>
<expiry>01/23</expiry>
<token>4eeb155fc20fa07a7c01d82aa68f9d22cab6257c57b6694d722cfdc8b95dce4d2f8f44e0a5c9aab14065e1f2016fc95eb0185cb62689b78e8e06346429c1aedc</token>
</root>
The steps to process the authorize response for the 3DS 2.0 authentication are as follows:
- Extract the content of tag<web-method>
- HTML decode the web-method content to get the HTML.
- Load the HTML on the browser and follow the instruction to complete authentication.
- After the authentication is complete, it is redirected to your Accept or Decline URL.
- The Callback notification with authorization status is sent to your Callback URL.
10.Ticket-level Capture
This API facilitates ticket-level capture for automatic captures. After updating AID data, Velocity captures the amount internally and passes the information to PSPs for payment processing. Thereafter, it is passed to the merchant system. You do not need call the capture API. Call the update-order-data API to facilitate ticket-level auto-capture.
Use the following API to capture ticket-level information.
Path Name | Path Details |
---|---|
End Point | [Velocity URL]/mpoint/ update-order-data |
Format/Content Type | text/xml |
Authentication | HTTP basic access authentication |
10.1 Request
The code below is a sample request for the Order Ticket API.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<update-order-data>
<transaction id="12345" order-no="FIU9YA">
<orders>
<line-item>
<product order-ref="ABC1234" sku="product-ticket">
<type>100</type>
<name>ONE WAY</name>
<description>MNL-CEB</description>
<airline-data>
<profiles>
<profile>
<seq>1</seq>
<title>Mr</title>
<first-name>dan</first-name>
<last-name>dan</last-name>
<type>ADT</type>
<contact-info>
<email>[email protected]</email>
<mobile country-id="640">9187231231</mobile>
</contact-info>
<additional-data>
<param name="loyality_id">345rtyu</param>
</additional-data>
</profile>
</profiles>
<billing-summary>
<fare-detail>
<fare>
<profile-seq>1</profile-seq>
<description>adult</description>
<currency>PHP</currency>
<amount>60</amount>
<product-code>ABF</product-code>
<product-category>FARE</product-category>
<product-item>Base fare for adult</product-item>
</fare>
</fare-detail>
</billing-summary>
<trips>
<trip tag="1" seq="1">
<origin external-id="MNL" country-id="640" time-zone="+08:00" terminal="1">Ninoy Aquino International Airport</origin>
<destination external-id="CEB" country-id="640" time-zone="+08:00" terminal="2">Mactan Cebu International Airport</destination>
<departure-time>2021-03-07T19:35:00Z</departure-time>
<arrival-time>2021-03-07T21:05:00Z</arrival-time>
<booking-class>Z</booking-class>
<service-level>Economy</service-level>
<transportation code="5J" number="1">
<carriers>
<carrier code="5J" type-id="Aircraft Boeing-737-9">
<number>563</number>
</carrier>
</carriers>
</transportation>
<additional-data>
<param name="fare_basis">we543s3</param>
</additional-data>
</trip>
</trips>
</airline-data>
</product>
<amount>125056</amount>
<quantity>1</quantity>
<additional-data>
<param name="key">value</param>
</additional-data>
</line-item>
<line-item>
<product order-ref="ABC1237" sku="product-ticket">
<type>200</type>
<name>ONE WAY</name>
<description>MNL-CEB</description>
<airline-data>
<profiles>
<profile>
<seq>1</seq>
<title>Mr</title>
<first-name>dan</first-name>
<last-name>dan</last-name>
<type>ADT</type>
<contact-info>
<email>[email protected]</email>
<mobile country-id="640">9187231231</mobile>
</contact-info>
<additional-data>
<param name="loyality_id">345rtyu</param>
</additional-data>
</profile>
</profiles>
<billing-summary>
<add-ons>
<add-on>
<profile-seq>1</profile-seq>
<trip-tag>2</trip-tag>
<trip-seq>2</trip-seq>
<description>adult</description>
<currency>PHP</currency>
<amount>60</amount>
<product-code>ABF</product-code>
<product-category>FARE</product-category>
<product-item>Base fare for adult</product-item>
</add-on>
</add-ons>
</billing-summary>
<trips>
<trip tag="1" seq="1">
<origin external-id="MNL" country-id="640" time-zone="+08:00" terminal="1">Ninoy Aquino International Airport</origin>
<destination external-id="CEB" country-id="640" time-zone="+08:00" terminal="2">Mactan Cebu International Airport</destination>
<departure-time>2021-03-07T19:35:00Z</departure-time>
<arrival-time>2021-03-07T21:05:00Z</arrival-time>
<booking-class>Z</booking-class>
<service-level>Economy</service-level>
<transportation code="5J" number="1">
<carriers>
<carrier code="5J" type-id="Aircraft Boeing-737-9">
<number>563</number>
</carrier>
</carriers>
</transportation>
<additional-data>
<param name="fare_basis">we543s3</param>
</additional-data>
</trip>
</trips>
</airline-data>
</product>
<amount>125056</amount>
<quantity>1</quantity>
<additional-data>
<param name="key">value</param>
</additional-data>
</line-item>
</orders>
</transaction>
</update-order-data>
</root>
This API must be called for each transaction associated with the order number separately. Each request contains one or more line-item that are associated with the order-ref (ticket/emd number).
Refer to the examples listed below:
Payment Method | Order # PNRABC $1000 | UATP Card $100 Request 1 | VISA Card $900 Request 2 |
---|---|---|---|
Transaction ID | Transaction 1 | Transaction 2 | |
Ticket Number 1 line-item | 50 | 50 | 0 |
Ticket Number 2 line-item | 475 | 25 | 450 |
Ticket Number 3 line-item | 475 | 25 | 450 |
Following are the description of the fields under update-order-data:
Parameter | Type | Required | Description |
---|---|---|---|
transaction/ @id | Integer | Yes | The identification number of a transaction |
Transaction/order-no | string | Yes | Order number associated with the transaction. |
orders | node | Yes | Contains one or more line-item. For details of all the fields under orders refer to the AID - Airline Itinerary Integration Guide. |
10.2 Response
The response of this API can be either a successful or a failed transaction.
10.2.1 Success
You receive the following response for a successful transaction:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<status code="100">Operation Success</status>
</root>
10.2.2 Fail
You receive the following response for a failed transaction:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<status code="99">Operation Failed</status>
</root>
<?xml version="1.0" encoding="UTF-8"?>
<root>
<status code="99">Operation Failed</status>
</root>
11. Capture
After a customer completes the checkout process, the authorized transaction is captured. You can invoke this API to capture the payment amount. Velocity exposes an API to capture an authorized transaction. The amount field can take values equal to or less than the authorized amount. You can facilitate either a complete capture or a partial capture. If the authorized amount is greater than the authorized amount and greater than one, it is a partial capture.
Note: Invoke this API only if you enable manual capture. Do not invoke if you have enabled auto-capture.
Use the following API to capture transaction-level information:
Path Name | Path Details |
---|---|
End Point | [Velocity URL]/mpoint/ capture-payment |
Format/Content Type | text/xml |
Authentication | HTTP basic access authentication |
11.1 Request
The following is an example of a request API used to capture an authorized transaction. It is sent from the merchant’s server to Velocity. It contains the transaction details of a customer.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<capture client-id="[integer]" account="[integer]">
<transaction id="[integer]" order-no="UAT-28577880">
<amount country-id="100">10000</amount>
</transaction>
</capture>
</root>
11.2 Response
The following is an example of the response returned from Velocity server to a merchant. It contains the transaction ID and transaction status.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<transactions client-id="[integer]">
<transaction id="[integer]" order-no="28577880">
<status code="1000" />
</transaction>
</transactions>
</root>
12. Get Payment Summary
Velocity exposes an API for retrieving the decrypted payment summary including the masked card number from various wallets.
Use the following API to get payment summary information:
Path Name | Path Details |
---|---|
End Point | [Velocity URL]/mpoint/ get-payment-summary |
Format/Content Type | text/xml |
Authentication | HTTP basic access authentication |
12.1 Request
Merchants need to consume this API for wallet integration only. For example, if you have integrated Apple Pay or Google Pay and want to show the card number to your customer in a masked manner, you can call this API.
The following is an example of a request for retrieving the payment summary:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<get-payment-summary client-id="[integer]">
<transaction id="[integer]">
<card type-id="16">
<token>[Wallet Token]</token>
</card>
</transaction>
<client-info language="us" version="1.28" platform="iOS/9.0.1">
<customer-ref/>
<device-id>86A535F6B2A414423327</device-id>
<ip>10.14.128.7</ip>
</client-info>
</get-payment-summary>
</root>
12.2 Response
If the Get Payment Summary API request is successful, the masked card details are shown to a customer as a response.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<card id="7" charge-type-id="2">
<card-number-mask>540287******4924</card-number-mask>
<expiry>10/17</expiry>
<card-holder-name>Joe Test</card-holder-name>
<address country-id="200">
<first-name>Joe</first-name>
<last-name>Test</last-name>
<street>4000 Ponce De Leon Blvd</street>
<postal-code>33146</postal-code>
<city>Coral Gables</city>
<state>FL</state>
</address>
</card>
</root>
The parameters are listed and defined in the table below
Parameter | Type | Description |
---|---|---|
get-payment-summary | Object | The object which contains details of the payment summary. |
client-id | Integer | The unique ID of a merchant. |
transaction id | Integer | A unique transaction identification number of a transaction. |
card type-id | Integer | The type of card used for a transaction. |
token | String | The encrypted alpha-numeric string to represent card information used in third-part wallet. |
client-info | String | The object which contains details of language used for a transaction, version, and platform details. |
device-id | String | The unique device identification number from which a transaction is conducted. |
card id | Integer | The ID which indicates the type of card used for a transaction. |
charge-type-id | Integer | The ID to indicate the type of wallet used for a transaction. |
mask | String | The masked value of a card number. |
expiry | String | The expiration date of a card. |
card-holder-name | String | The name of a card holder. |
address | Object | The object which contains address details such as country-id, first name, last name, street name, postal code, city, and state. |
13. Get Payment Methods
The Get Payment Methods API returns a list of payment methods with which a customer is eligible to pay. Their eligibility is based on the Curated Payment Business Rule that is applicable to the transaction.
Path Name | Path Details |
---|---|
End Point | [Velocity URL]/crs/routingservice/external/get-payment-methods |
Format/Content Type | text/xml |
Authentication | HTTP basic access authentication |
13.1 Request
The following is an example of a request for the Get Payment Methods API:
?xml version="1.0" encoding="UTF-8"?>
<payment_method_search_criteria>
<event_id>5754676</event_id>
<account_id>101118</account_id>
<transaction>
<type_id>1</type_id>
<order_no>MLW761</order_no>
<product_type>100</product_type>
<fees>
<fee>
<value>2300</value>
<type>1</type>
</fee>
</fees>
<amount>
<value>10000</value>
<country_id>407</country_id>
<currency_id>840</currency_id>
<decimal>2</decimal>
</amount>
<orders>
<line_item>
<product>
<name>RETURN</name>
<sku>3HHQM6</sku>
<description>return</description>
<airline_data>
<flight_details>
<flight_detail>
<tag>1</tag>
<trip_count>1</trip_count>
<service_level>10</service_level>
<service_class>E</service_class>
<departure_date>2022-12-15T05:14:00Z</departure_date>
<arrival_date>2022-12-15T06:10:00Z</arrival_date>
<departure_country>405</departure_country>
<arrival_country>405</arrival_country>
<departure_airport>
<iata>MDE</iata>
</departure_airport>
<arrival_airport>
<iata>BOG</iata>
</arrival_airport>
<time_zone>-5:00</time_zone>
</flight_detail>
<flight_detail>
<tag>1</tag>
<trip_count>2</trip_count>
<service_level>10</service_level>
<service_class>E</service_class>
<departure_date>2022-12-15T07:10:00Z</departure_date>
<arrival_date>2022-12-15T08:15:00Z</arrival_date>
<departure_country>405</departure_country>
<arrival_country>405</arrival_country>
<departure_airport>
<iata>BOG</iata>
</departure_airport>
<arrival_airport>
<iata>AXM</iata>
</arrival_airport>
<time_zone>-5:00</time_zone>
</flight_detail>
</flight_details>
<billing_summary>
<fare_detail>
<fare>
<profile_seq>1</profile_seq>
<description>Base Fare</description>
<currency>COP</currency>
<amount>35710000</amount>
<product_code>BASE</product_code>
<product_category>FARE</product_category>
<product_item>Base Fare</product_item>
</fare>
<fare>
<profile_seq>1</profile_seq>
<description>Localization Key - Sales Tax Colombia</description>
<currency>COP</currency>
<amount>2226000</amount>
<product_code>YSTR</product_code>
<product_category>TAX</product_category>
<product_item>Sales Tax Colombia</product_item>
</fare>
</fare_detail>
<add_ons>
<add_on>
<profile_seq>1</profile_seq>
<trip_tag>1</trip_tag>
<trip_seq>1</trip_seq>
<description>Localization Key - SEAT PRICE</description>
<currency>COP</currency>
<amount>2999000</amount>
<product_code>SEAT</product_code>
<product_category>SERVICE</product_category>
<product_item>10E</product_item>
</add_on>
<add_on>
<profile_seq>2</profile_seq>
<trip_tag>2</trip_tag>
<trip_seq>1</trip_seq>
<description>Localization Key - CBAG</description>
<currency>COP</currency>
<amount>18000000</amount>
<product_code>CBAG</product_code>
<product_category>Service</product_category>
<product_item>3RD CHECKED BAG OR MORE 23KG</product_item>
</add_on>
</add_ons>
</billing_summary>
</airline_data>
</product>
</line_item>
<amount>
<country_id>407</country_id>
<value>273891000</value>
</amount>
</orders>
</transaction>
<client_info>
<platform>HTML5</platform>
<language>en</language>
<version>2.00</version>
<sdk-version>2.0.0</sdk-version>
<mobile>
<mobile>9990521077</mobile>
<mobile_type>MobileEnriched</mobile_type>
<country_id>407</country_id>
<validated>true</validated>
</mobile>
<email>
<email>[email protected]</email>
<email_type>EmailEnriched</email_type>
<validated>true</validated>
</email>
<device_id>2E8667F78B23402BBFF6176313BD58D314566333</device_id>
<ip>10.36.1.15</ip>
<client_id>10101</client_id>
</client_info>
</payment_method_search_criteria>
13.2 Response
The following is an example of a response for the Get Payment Methods API:
<payment_method_search_response>
<payment_methods>
<payment_method>
<id>8</id>
<psp_type/>
<preference>1</preference>
<state_id>1</state_id>
</payment_method>
<payment_method>
<id>7</id>
<psp_type/>
<preference>2</preference>
<state_id>1</state_id>
</payment_method>
</payment_methods>
</payment_method_search_response>
The parameters are listed and defined in the table below.
Parameter | Type | Required | Description | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
event_id | Integer | Yes | A unique reference ID used for audit and tracking purposes. | |||||||||||||||||||||||||||
account_id | Integer | Yes | A storefront ID to identify web/mobile payment. | |||||||||||||||||||||||||||
payment_group_code | String | No | A group code provided by the merchant and used by the customer while making payments. | |||||||||||||||||||||||||||
paymentmethod_id | Integer | Yes | A card ID as per the mPoint system defined ID. For example, 8 for Visa or 7 for Mastercard. | |||||||||||||||||||||||||||
paymentmethod_id | Integer | Yes | A card ID as per the mPoint system defined ID. For example, 8 for Visa or 7 for Mastercard. | |||||||||||||||||||||||||||
state_id | Integer | Yes | The state ID indicates whether the payment method is enabled or disabled on the payment page. This is used and interpreted by the front end system.
System defined state ids in mPoint. Default is 1 i.e enabled.
|
|||||||||||||||||||||||||||
card_schemes | Array | No | This is applicable for wallet payment type only. It contains the list of card schemes allowed inside the Card Wallet, which are displayed for the customer to use for payments. | |||||||||||||||||||||||||||
account | Integer | No | The unique ID associated with a payment transaction. It is optional. If you omit this parameter, the payment transaction is associated with the default sub-account. | |||||||||||||||||||||||||||
client-id | Integer | Yes | The unique ID configured for a merchant on the Velocity POP. | |||||||||||||||||||||||||||
Transaction Parameters | ||||||||||||||||||||||||||||||
transaction | Integer | Yes | Fee > type-1 is used as the service fee rule condition. | |||||||||||||||||||||||||||
order-no | String | Yes | The order ID that a merchant generates. It is an alphanumeric string. Note: Some Payment Providers have strict guidelines for the order-no. The recommended pattern is "[a-zA-Z0-9._-]. | |||||||||||||||||||||||||||
currency-id | Integer | No | The currency of the transaction amount. This should be the ISO 4217 numeric code. | |||||||||||||||||||||||||||
type-id | Integer | No | The type of transaction used for making payment. Velocity supports the following transaction types:
|
|||||||||||||||||||||||||||
session-id | Integer | No | The ID of a session used for multiple payment transactions during one payment flow. For example, split payment or retry of a failed payment transaction. | |||||||||||||||||||||||||||
amount | Integer | Yes | The total amount that a customer is charged for a payment transaction in a country’s smallest currency. For example, the smallest currency of USD is penny. If the transaction amount is $120.30, then the amount field contains value 12030. Note: The amount is always a non-decimal value in the request. The object amount contains the country-id and currency-id parameters. | |||||||||||||||||||||||||||
fees/fee | Integer | No | This the addition fees if applicable for the transaction like for specific scenarios like administrative fee for offline payment or pay later. For example, the smallest currency of USD is penny. If the transaction amount is $120.30, then the amount field contains value 12030. Note: The fee is always a non-decimal value in the request. The object amount contains the country-id and currency-id parameters. | |||||||||||||||||||||||||||
country-id | Integer | Yes | The CPD-specific country code, which is available in appendix. | |||||||||||||||||||||||||||
callback-url | String | No | The absolute URL to the back office of a merchant where Velocity POP sends the payment status. Note: If you do not provide this parameter, Velocity uses the default URL. | |||||||||||||||||||||||||||
accept-url | String | No | The URL where Velocity directs a customer after successfully completing a payment transaction. Note: If you do not provide this parameter, Velocity uses the default URL. The URL is used for redirecting to either the HPP or merchant’s page after a payment completion. | |||||||||||||||||||||||||||
cancel-url | String | No | The absolute URL where Velocity directs customers if they cancel a payment transaction midway. Note: If you do not provide this parameter, Velocity uses the default URL. The URL is used for redirecting to either the HPP or merchant’s page after a payment cancellation. | |||||||||||||||||||||||||||
decline-url | String | No | The absolute URL where Velocity directs customers if the payment transaction fails. The URL is used for redirecting to either the HPP or merchant’s page after a payment failure. | |||||||||||||||||||||||||||
auth-url | String | No | The URL which used for single sign-on authentication if provided by an external system. | |||||||||||||||||||||||||||
service-type-id | Integer | No | A value to indicate the type of exchange services used for a transaction. The ID indicates if the FX services such as DCC, MCP, and PCC are opted. The ID is a two-digit number XY in which:
|
|||||||||||||||||||||||||||
auth-token | String | No | A unique token sent to the specified auth-url to authenticate customers when they pay with a stored card and use single sign-on. | |||||||||||||||||||||||||||
hmac | String | Yes | The Message Authentication Code. It is calculated by creating a sha-512 hash comprising the following input fields in the listed order:
|
|||||||||||||||||||||||||||
orders | Object | No | The order details with following details: event, location, date or time, ticket type, cost, booking fee, quantity, and total price. Note: This parameter is used for airline data only, defined in separate guide for Airline Data. | |||||||||||||||||||||||||||
Merchant information parameters | ||||||||||||||||||||||||||||||
client-info | Object | Yes | An object of client-info, which contains the following merchant details: language, version, platform, and profile ID. | |||||||||||||||||||||||||||
platform | String | yes | The platform from which the request is sent. For example, web, iOS, Android, B2B, and B2C. | |||||||||||||||||||||||||||
sdk-version | Integer | yes | The version of SDK used to send the request. Note: Use 2.1.0 SDK version in the request. | |||||||||||||||||||||||||||
version | String | yes | The version of the API or application that send the request. | |||||||||||||||||||||||||||
language | String | yes | The language that Velocity uses as default when translating the payment pages. Velocity uses a default language set by a merchant if this parameter is omitted. Note: Velocity language codes are based upon the ISO- 639-1 standard. Refer http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes for details. | |||||||||||||||||||||||||||
mobile | Integer | No | The MSISDN of a customer without International Dialling Code. Note: A mobile number can be mandatory or optional, based on the requirement of a merchant or a PSP. | |||||||||||||||||||||||||||
country-id | Integer | No | The CPD-specific country code, which is provided on request. Note: Mandatory only if mobile number is provided. | |||||||||||||||||||||||||||
String | No | The email address of a customer. If your customer provides this parameter, the Email input field on the Send E-Mail Receipt page is automatically populated with this value. Note: Email can be mandatory or optional, based on the requirement of a merchant or a PSP. | ||||||||||||||||||||||||||||
device-id | String | No | The device ID of a customer’s device. Note: device ID is optional for a web channel. |
14.Get Transaction Status
Velocity exposes an API for retrieving the transaction status based on the transaction ID and session status based on session ID. This API is useful to reverify a transaction status when, for example, the authorize API does not show a response because of network issues or after redirection flow.
Note: Consider the following items:
- CPD recommends integrating the Get Status API, which is optional.
- You can configure this API to view the transaction status on your web portal or on your server.
Refer to transaction Status Codes for details
You can use the following API to get the payment summary information:
Path Name | Path Details |
---|---|
End Point | [Velocity URL]/mpoint/get-transaction-status |
Format/Content Type | text/xml |
Authentication | HTTP basic access authentication |
14.1 Request
The following is an example for fetching Transaction status:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<get-transaction-status>
<client-id>10101</client-id>
<transactions>
<transaction-id>5297501</transaction-id>
</transactions>
</get-transaction-status>
</root>
The following is an example for fetching Session status:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<get-transaction-status>
<client-id>10101</client-id>
<session_id>533234</session_id>
</get-transaction-status>
</root>
The parameters are listed and defined in the table below.
Parameter | Type | Required | Description |
---|---|---|---|
Client-id | String | Yes | A unique ID for Velocity, which CPD creates for a merchant. |
account-id | String | Yes | The ID or number for a sub-account with which a payment transaction is associated. CPD provides the account number. |
transaction-id | String | Yes | CPD Transaction ID for which status is requested. |
14.2 Response
The following are examples of a response for the Get Transaction Status API:
14.2.1 Card Payment Transaction Status
<?xml version="1.0" encoding="UTF-8"?>
<root>
<transaction accoutid="100630" approval-code="121000" card-id="7" clientid="10063" extid="CPM5670_
8060858" id="8060858" language="en" mpoint-id="8060858" order-no="CPM5670" payment-method-id="1"
psp-id="4" session-id="178752" session-type=" walletid="4">
<amount conversationRate="1" country-id="103" currency="826" currency-code="GBP" decimals="2"
format="{CURRENCY}{PRICE}" pending="0" symbol="£">1000</amount>
<card-mask>554433******0003</card-mask>
<card-expiry>10/23</card-expiry>
<card-name>Master Card</card-name>
<psp-name>WorldPay</psp-name>
<accept-url>https://cpm-hpp2-sit2.cellpointmobile.com/views/redirect_response.php</accept-url>
<cancel-url>https://cpm-hpp2-sit-01.cellpoint.dev/views/</cancel-url>
<css-url>https://s3-ap-southeast-1.amazonaws.com/devcpmassets/marchant/et/style.css</css-url>
<logo-url>https://hpp-uat-02.cellpointmobile.net/css/swag/img/cebu.png</logo-url>
<google-analytics-id>%7B%22id%22%3A%22GTM-TJHF9HX%22%2C%22auth%22%3A%220bNRJejIX9R
vP164Mor_Tw%22%2C%22preview%22%3A%22env-61%22%2C%22env%22%3A%22sit%22%7D</google-analytics-id>
<form-method>GET</form-method>
<auto-redirect>true</auto-redirect>
<createdDate>2021-03-04</createdDate>
<createdTime>07:55:32</createdTime>
<status>
<status-message id="1001" position="1">Input Valid</status-message>
<status-message id="1009" position="2">Payment Initialized with Payment Service Provider</status-message>
<status-message id="1990" position="14">Callback Accepted</status-message>
<status-message id="1990" position="17">Callback Accepted</status-message>
<status-message id="1990" position="23">Callback Accepted</status-message>
<status-message id="1990" position="25">Callback Accepted</status-message>
<status-message id="1991" position="12">Callback Constructed</status-message>
<status-message id="1991" position="15">Callback Constructed</status-message>
<status-message id="1991" position="20">Callback Constructed</status-message>
<status-message id="1991" position="22">Callback Constructed</status-message>
<status-message id="1992" position="13">Callback Connected</status-message>
<status-message id="1992" position="16">Callback Connected</status-message>
<status-message id="1992" position="21">Callback Connected</status-message>
<status-message id="1992" position="24">Callback Connected</status-message>
<status-message id="2000" position="9">Payment authorized by PSP</status-message>
<status-message id="2001" position="18">Payment captured by PSP</status-message>
<status-message id="2005" position="5">3d verification required for Authorization</status-message>
<status-message id="2006" position="7">3d verification successful</status-message>
<status-message id="3010" position="3">Pre Auth Initiated</status-message>
<status-message id="3014" position="4">Pre Auth Review</status-message>
<status-message id="3117" position="10">Post Auth Screen Skip - Business Rules</status-message>
<status-message id="4030" position="19">Session Complete</status-message>
<status-message id="20012" position="11">Capture Initialized</status-message>
<status-message id="2005001" position="6">Authentication Card is enrolled Attempt authentication using 3DSv1.0</status-message>
<status-message id="2006001" position="8">Authentication Fully</status-message>
</status>
<sign>8aabe019e70972acaddb0bc09101e35e</sign>
<client-info language="en" platform="app" profileid="-1">
<mobile country-id="640" operator-id="64000">9876543210</mobile>
<email>[email protected]</email>
<customer-ref />
<device-id />
</client-info>
<additional-data>
<param name="pre_auth_ext_status_code">105</param>
<param name="eci">02</param>
<param name="xid">MDAwMDAwMDAwMDAwMDgwNjA4NTg=</param>
<param name="merchant">CELLPOINT</param>
<param name="issuer-approval-code">121000</param>
</additional-data>
<address>
<first-name>Test</first-name>
<last-name>Automation</last-name>
<street>MyStreet</street>
<street2 />
<postal-code>8060858</postal-code>
<city>Pune</city>
<state>MH</state>
<country>
<name>Philippines</name>
<code>608</code>
<alpha2code>PH</alpha2code>
<alpha3code>PHL</alpha3code>
</country>
</address>
</transaction>
</root>
14.2.2 APM (PayPal) Transaction Status
<?xml version="1.0" encoding="UTF-8"?>
<root>
<transaction accoutid="100770" approval-code="" card-id="28" clientid="10077" extid="69U82640BX0039150"
id="8059428" language="en" mpoint-id="8059428" order-no="WAIKALZ" payment-method-id="4" psp-id="24"
session-id="177544" session-type="" walletid="0">
<amount conversationRate="1" country-id="640" currency="608" currency-code="PHP" decimals="2" format=""
pending="0" symbol="â±">55500</amount>
<card-name>PayPal</card-name>
<psp-name>PayPal</psp-name>
<accept-url>https://hpp2.sit-01.cellpoint.dev/views/redirect_response.php</accept-url>
<cancel-url>https://hpp2.sit-01.cellpoint.dev/views/redirect_response.php</cancel-url>
<css-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10077</css-url>
<logo-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10077/logo.png</logo-url>
<google-analytics-id>%7B%22id%22%3A%22GTM-TJHF9HX%22%2C%22auth%22%3A%220bNRJejIX9RvP164Mor
_Tw%22%2C%22preview%22%3A%22env-61%22%2C%22env%22%3A%22sit%22%7D</google-analytics-id>
<form-method>GET</form-method>
<auto-redirect>true</auto-redirect>
<createdDate>2021-02-27</createdDate>
<createdTime>06:34:04</createdTime>
<status>
<status-message id="2001" position="1">Payment captured by PSP</status-message>
</status>
<sign>bf2f4194205c9839e67547b860c4a05b</sign>
<client-info language="en" platform="spa" profileid="CEBUPROFILE123">
<mobile country-id="640" operator-id="64000">2147483647</mobile>
<email>[email protected]</email>
<customer-ref>[email protected]</customer-ref>
<device-id />
</client-info>
<additional-data>
<param name="invoiceid">8059428</param>
</additional-data>
</transaction>
</root>
14.2.3 APM (GRAB PAY) Transaction Status
<?xml version="1.0" encoding="UTF-8"?>
<root>
<transaction accoutid="100770" approval-code="" card-id="28" clientid="10077" extid="69U82640BX0039150"
id="8059428" language="en" mpoint-id="8059428" order-no="WAIKALZ" payment-method-id="4" psp-id="24"
session-id="177544" session-type="" walletid="0">
<amount conversationRate="1" country-id="640" currency="608" currency-code="PHP" decimals="2" format=""
pending="0" symbol="â±">55500</amount>
<card-name>PayPal</card-name>
<psp-name>PayPal</psp-name>
<accept-url>https://hpp2.sit-01.cellpoint.dev/views/redirect_response.php</accept-url>
<cancel-url>https://hpp2.sit-01.cellpoint.dev/views/redirect_response.php</cancel-url>
<css-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10077</css-url>
<logo-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10077/logo.png</logo-url>
<google-analytics-id>%7B%22id%22%3A%22GTM-TJHF9HX%22%2C%22auth%22%3A%220bNRJejIX9RvP164Mor
_Tw%22%2C%22preview%22%3A%22env-61%22%2C%22env%22%3A%22sit%22%7D</google-analytics-id>
<form-method>GET</form-method>
<auto-redirect>true</auto-redirect>
<createdDate>2021-02-27</createdDate>
<createdTime>06:34:04</createdTime>
<status>
<status-message id="2001" position="1">Payment captured by PSP</status-message>
</status>
<sign>bf2f4194205c9839e67547b860c4a05b</sign>
<client-info language="en" platform="spa" profileid="CEBUPROFILE123">
<mobile country-id="640" operator-id="64000">2147483647</mobile>
<email>[email protected]</email>
<customer-ref>[email protected]</customer-ref>
<device-id />
</client-info>
<additional-data>
<param name="invoiceid">8059428</param>
</additional-data>
</transaction>
</root>
14.2.4 Split Payment Session Status
<?xml version="1.0" encoding="UTF-8"?>
<root>
<session id="533234" total-amount="160000000" type="2">
<amount alpha2code="CO" alpha3code="COL" code="170" country-id="405" currency="COP" currency-id="170" format="" symbol="$">0</amount>
<status>4030</status>
</session>
<transaction accoutid="101011" approval-code="654321" card-id="7" clientid="10101" extid="000000033710000442590000100001" id="5297500" language="en" mpoint-id="5297500" order-no="QLG763" payment-method-id="1" psp-id="21" session-id="533234" session-type="2" txn-type-id="1" walletid="-1">
<amount conversationRate="1" country-id="405" currency="170" currency-code="COP" decimals="2" format="" pending="0" symbol="$">80000000</amount>
<card-mask>530371******8783</card-mask>
<card-expiry>10/23</card-expiry>
<card-name>Master Card</card-name>
<psp-name>GlobalCollect</psp-name>
<accept-url>https://hpp2.sit-01.cellpoint.dev/views/redirect_response.php</accept-url>
<cancel-url>https://hpp2.sit-01.cellpoint.dev/views/redirect_response.php</cancel-url>
<css-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10101</css-url>
<logo-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10101/logo.png</logo-url>
<google-analytics-id>GTM-WPHV68Z</google-analytics-id>
<form-method />
<auto-redirect>true</auto-redirect>
<createdDate>2022-05-24</createdDate>
<createdTime>11:27:53</createdTime>
<status>
<status-message id="3011" position="1">Pre Auth Success</status-message>
<status-message id="2001" position="2">Payment captured by PSP</status-message>
</status>
<sign>e9e738e8e781c600de232d1b4bbcb640</sign>
<client-info language="en" platform="spa" profileid="-1">
<mobile country-id="405" operator-id="40500">9377178759</mobile>
<email>[email protected]</email>
<customer-ref>[email protected]</customer-ref>
<device-id />
</client-info>
<additional-data>
<param name="hmac">6146073de014b302c4d2f6b5a1cb81da4ace9fd166ed9bc62eb3b513b087c45a80c654952e8b2dd5ca0e141a0e4b04f0741f274a6f5ab9fde0fcf4701264979e</param>
<param name="card-holder-name">Chris Harris</param>
<param name="pre_auth_ext_id">6533916842106908704010</param>
<param name="pre_auth_ext_status_code">100</param>
<param name="Response_Code">800</param>
<param name="hold_fee_amount">2300</param>
<param name="hold_fee_currency_code">COP</param>
<param name="platform">WEBB2C</param>
<param name="_ga">2.168694248.833265534.1632121657-2073837615.1627877376</param>
<param name="office_id">BOGAV08AK</param>
</additional-data>
<address>
<first-name>Rohan</first-name>
<last-name>Deo</last-name>
<street>141/2 Andul test</street>
<street2 />
<postal-code>711103</postal-code>
<city>Kolkata</city>
<state>Maharastra</state>
<country>
<name>Colombia</name>
<code>170</code>
<alpha2code>CO</alpha2code>
<alpha3code>COL</alpha3code>
</country>
<mobile idc="63">9898989898</mobile>
<email>[email protected]</email>
</address>
</transaction>
<transaction accoutid="101011" approval-code="654321" card-id="8" clientid="10101" extid="000000033710000442600000100001" id="5297501" language="en" mpoint-id="5297501" order-no="QLG763" payment-method-id="1" psp-id="21" session-id="533234" session-type="2" txn-type-id="1" walletid="-1">
<amount conversationRate="1" country-id="405" currency="170" currency-code="COP" decimals="2" format="" pending="0" symbol="$">80000000</amount>
<card-mask>451307******5348</card-mask>
<card-expiry>10/23</card-expiry>
<card-name>VISA</card-name>
<psp-name>GlobalCollect</psp-name>
<accept-url>https://hpp2.sit-01.cellpoint.dev/views/redirect_response.php</accept-url>
<cancel-url>https://hpp2.sit-01.cellpoint.dev/views/redirect_response.php</cancel-url>
<css-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10101</css-url>
mobile>
<email>[email protected]</email>
</address>
</transaction> <logo-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10101/logo.png</logo-url>
<google-analytics-id>GTM-WPHV68Z</google-analytics-id>
<form-method />
<auto-redirect>true</auto-redirect>
<createdDate>2022-05-24</createdDate>
<createdTime>11:28:17</createdTime>
<status>
<status-message id="3011" position="1">Pre Auth Success</status-message>
<status-message id="2001" position="2">Payment captured by PSP</status-message>
</status>
<sign>d3fb3b3156f825de5afd0b80047493ef</sign>
<client-info language="en" platform="spa" profileid="-1">
<mobile country-id="405" operator-id="40500">9377178759</mobile>
<email>[email protected]</email>
<customer-ref>[email protected]</customer-ref>
<device-id />
</client-info>
<additional-data>
<param name="hmac">6146073de014b302c4d2f6b5a1cb81da4ace9fd166ed9bc62eb3b513b087c45a80c654952e8b2dd5ca0e141a0e4b04f0741f274a6f5ab9fde0fcf4701264979e</param>
<param name="card-holder-name">Chris Harris</param>
<param name="pre_auth_ext_id">6533917086316951404009</param>
<param name="pre_auth_ext_status_code">100</param>
<param name="Response_Code">800</param>
<param name="hold_fee_amount">2300</param>
<param name="hold_fee_currency_code">COP</param>
<param name="platform">WEBB2C</param>
<param name="_ga">2.168694248.833265534.1632121657-2073837615.1627877376</param>
<param name="office_id">BOGAV08AK</param>
</additional-data>
<address>
<first-name>Rohan</first-name>
<last-name>Deo</last-name>
<street>141/2 Andul test</street>
<street2 />
<postal-code>711103</postal-code>
<city>Kolkata</city>
<state>Maharastra</state>
<country>
<name>Colombia</name>
<code>170</code>
<alpha2code>CO</alpha2code>
<alpha3code>COL</alpha3code>
</country>
<mobile idc="63">9898989898</
<transaction accoutid="101011" approval-code="" card-id="0" clientid="10101" extid="" id="5310635" language="gb" mpoint-id="5310635" order-no="" payment-method-id="1" psp-id="0" session-id="533234" session-type="2" txn-type-id="40" walletid="-1">
<amount conversationRate="1" country-id="405" currency="170" currency-code="COP" decimals="2" format="" pending="0" symbol="$">0</amount>
<card-name>System Record</card-name>
<psp-name>System Record</psp-name>
<accept-url />
<cancel-url />
<css-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10101</css-url>
<logo-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10101/logo.png</logo-url>
<google-analytics-id>GTM-WPHV68Z</google-analytics-id>
<form-method />
<auto-redirect>true</auto-redirect>
<createdDate>2022-05-31</createdDate>
<createdTime>10:26:48</createdTime>
<status />
<sign>d331679f5a42d4579bb375e6d5034ac7</sign>
<client-info language="gb" platform="">
<mobile country-id="0" operator-id="0" />
<email />
<customer-ref />
<device-id />
</client-info>
<additional-data>
<param name="hold_fee_amount">2300</param>
<param name="hold_fee_currency_code">COP</param>
<param name="platform">WEBB2C</param>
<param name="_ga">2.168694248.833265534.1632121657-2073837615.1627877376</param>
<param name="office_id">BOGAV08AK</param>
</additional-data>
</transaction>
<transaction accoutid="101011" approval-code="" card-id="0" clientid="10101" extid="" id="5326993" language="gb" mpoint-id="5326993" order-no="" payment-method-id="1" psp-id="0" session-id="533234" session-type="2" txn-type-id="40" walletid="-1">
<amount conversationRate="1" country-id="405" currency="170" currency-code="COP" decimals="2" format="" pending="0" symbol="$">0</amount>
<card-name>System Record</card-name>
<psp-name>System Record</psp-name>
<accept-url />
<cancel-url />
<css-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10101</css-url>
<logo-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10101/logo.png</logo-url>
<google-analytics-id>GTM-WPHV68Z</google-analytics-id>
<form-method />
<auto-redirect>true</auto-redirect>
<createdDate>2022-06-09</createdDate>
<createdTime>20:17:34</createdTime>
<status />
<sign>0eddfdf2f525a316cc15846c42684b12</sign>
<client-info language="gb" platform="">
<mobile country-id="0" operator-id="0" />
<email />
<customer-ref />
<device-id />
</client-info>
<additional-data>
<param name="hold_fee_amount">2300</param>
<param name="hold_fee_currency_code">COP</param>
<param name="platform">WEBB2C</param>
<param name="_ga">2.168694248.833265534.1632121657-2073837615.1627877376</param>
<param name="office_id">BOGAV08AK</param>
</additional-data>
</transaction>
<transaction accoutid="101011" approval-code="" card-id="0" clientid="10101" extid="" id="5388333" language="gb" mpoint-id="5388333" order-no="" payment-method-id="1" psp-id="0" session-id="533234" session-type="2" txn-type-id="40" walletid="-1">
<amount conversationRate="1" country-id="405" currency="170" currency-code="COP" decimals="2" format="" pending="0" symbol="$">0</amount>
<card-name>System Record</card-name>
<psp-name>System Record</psp-name>
<accept-url />
<cancel-url />
<css-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10101</css-url>
<logo-url>https://cpd-hpp2-devassests.s3.eu-central-1.amazonaws.com/10101/logo.png</logo-url>
<google-analytics-id>GTM-WPHV68Z</google-analytics-id>
<form-method />
<auto-redirect>true</auto-redirect>
<createdDate>2022-07-11</createdDate>
<createdTime>21:07:58</createdTime>
<status />
<sign>ef2023d31ff47087730d42c83992f3c3</sign>
<client-info language="gb" platform="">
<mobile country-id="0" operator-id="0" />
<email />
<customer-ref />
<device-id />
</client-info>
<additional-data>
<param name="hold_fee_amount">2300</param>
<param name="hold_fee_currency_code">COP</param>
<param name="platform">WEBB2C</param>
<param name="_ga">2.168694248.833265534.1632121657-2073837615.1627877376</param>
<param name="office_id">BOGAV08AK</param>
</additional-data>
</transaction>
</root>
15.Refund or Void Transaction
You can use the refund transaction API to refund a transaction to a customer. The refund is based on the amount you provide. You can provide a partial or complete refund.
If you do not specify an amount, a customer receives the complete refund. Velocity exposes an API to cancel an authorized transaction or refund a captured transaction based on the status of the transaction. The Amount field can take values equal to or less that the captured or authorized amount.
Path Name | Path Details |
---|---|
End Point | [Velocity URL]/mpoint/ refund |
Format/Content Type | text/xml |
Authentication | HTTP basic access authentication |
15.1 Request
The following is an example of a Refund Transaction request:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<refund client-id = "[integer]">
<transaction order-no="XCDFGG" id="1859798">
<amount country-id="200">14000</amount>
<external_claim_reference>ABCD1234</external_claim_reference>
</transaction>
<source>API</source>
</refund>
</root>
The parameters are listed and defined in the table below.
Parameter | Type | Description |
---|---|---|
external_claim_reference | String | The External Claim Reference number for refund request. Optional. Maximum length – 20 characters. |
source | String | The source of refund request. Optional. Maximum length – 20 characters. |
15.2 Response
The following is an example of a Refund Transaction response:
Note: If the status code is 1000, the refund is successful. Other rest response codes indicate a failure. Refer to Refund Payment codes for details.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<status code="1000"> [message] <status/>
</root>
OR
<?xml version="1.0" encoding="UTF-8"?>
<root>
<status code="9400">
<!--For Exceptions-->
<exception type="http">
<code>400</code>
</exception>
</status>
</root>
16.Bulk Refund or Void Transaction
You can use the bulk-refund API to refund multiple transactions to a customer in a single request. The refunds are based on the amount you provide. You can provide a partial or complete refund.
Velocity exposes an API to cancel an authorized transaction or refund a captured transaction based on the status of the transaction. The Amount field can take values equal to or less than the captured or authorized amount. Amount is a mandatory field.
Path Name | Path Details |
---|---|
End Point | [Velocity URL]/mpoint/bulk-refund |
Format/Content Type | text/xml |
Authentication | HTTP basic access authentication |
16.1 Request
The following is an example of a Refund Transaction request:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<refund client-id="[integer]" account = "[integer]">
<transaction id="5768217" order-no="UID346">
<amount country-id="200">158726</amount>
</transaction>
</refund>
<refund client-id="[integer]" account = "[integer]">
<transaction id="5768212" order-no="JZC273">
<amount country-id="200">251100</amount>
</transaction>
</refund>
</root>
16.2 Response
The following is an example of a Refund Transaction response:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<transactions client-id="[integer]">
<transaction id="5768217" order-no="UID346">
<status code="1000"> [message] <status/>
</transaction>
</transactions>
<transactions client-id="[integer]">
<transaction id="5768212" order-no="JZC273">
<status code="1000"> [message] <status/>
</transaction>
</transactions>
</root>
OR
<?xml version="1.0" encoding="UTF-8"?>
<root>
<status code="9400">
<!--For Exceptions-->
<exception type="http">
<code>400</code>
</exception>
</status>
</root>
Note: If the status code is 1000, the refund is successful. Other rest response codes indicate a failure. Refer to Refund Payment codes for details.
17.Callback Request to Merchant Server from Velocity
After Velocity completes processing a transaction, the customers know if their payment was processed. The callback request informs you about the payment status as an HTTP POST. This is an asynchronous message in a separate HTTP transaction initiated from Velocity. It is in addition to the original synchronous response to the payment request and the user redirect to confirmation page.
The following is an example of a callback request:
mpoint-id=8068110&office-id=PHPNMA&ep-number=PM10004843&invoice-no=2CQQJKMT050320180&issuer-approval-code=007283&fraud_status_code=3014&fraud_status_desc=Pre+Auth+Review&pre_auth_ext_id=5900006009536418604009&pre_auth_ext_status_code=105&post_auth_ext_id=6163976912096333904010&post_auth_ext_status_code=ACCEPT&txn-status=A&card-holder-name=Primary Mastercard Card&orderid=NL4PJN&status=2001&desc=Payment+captured+by+PSP&exchange_rate=1&amount=358700&fee=0¤cy=CNY&decimals=2&sale_amount=358700&sale_currency=CNY&sale_decimals=2&mobile=22532290&operator=13600&language=us&card-id=7&card-number=557781%2A%2A%2A%2A%2A%2A0004&pspid=1951911&device-id=12ABC&psp-name=2c2p-alc&description=Captured&hmac=bac9357b196c4cf17cede735ba68c75aee98dc17&email=email%40example.name&expiry=2023-01&session-id=106800&customer-country-id=200&approval-code=360020&payment-method=CD&payment-type=1&invoice-no=2CQQJKMT050320180&date-time=2020-04-06T08:33:28+00:00&local-date-time=2020-04-06T16:33:28+08:00&issuing-bank=sbi&billing_first_name=Abc&billing_last_name=xyz&billing_street_address=Barshinger+Avenue&billing_city=New+York&billing_country=640&billing_state=Agusan+del+Norte&billing_postal_code=212435&billing_email=data%40test.com&billing_mobile=2147483647&billing_idc=200&service_type_id=11&session-type-id=1
The following is a refund callback sample:
mpoint-id=1234556&orderid=TESTID&status=2003&desc=Payment+Refunded&exchange_rate=1&amount=12345¤cy=PHP&decimals=2&sale_amount=12345&sale_currency=PHP&sale_decimals=2&fee=0&mobile=987654321&operator=64000&language=en&card-id=8&card-number=444444%2A%2A%2A%2A%2A%2A4444&pspid=4321&psp-name=FIRST+DATA&hmac=23a91b25d76903b4228631854db66af3c773413834e27943646551260acd21929&email=test%40test.com&expiry=2022-05&session-id=5432&session-type-id=1&approval-code=1234&payment-method=CD&payment-type=1&payment-provider-id=62&cfx_status_code=115&pre_auth_ext_status_code=105&merchant=6160800539&issuer-approval-code=1234&session_token=testToken&hold_fee_amount=333&hold_fee_currency_code=608&hold_period=480&fraud_status_code=3117&fraud_status_desc=Post+Auth+Screen+Skip+-+Business+Rules&date-time=2021-11-18T23:59:30+00:00&local-date-time=2021-11-19T07:59:30+08:00&billing_first_name=TEST+USER+NAME&billing_last_name=TEST&billing_street_address=TEST+ADDRESS&billing_city=TEST&billing_country=640&billing_state=Metro+Manila&billing_postal_code=1421&billing_email=TEST%40TEST.com&billing_mobile=987654321&billing_idc=63&first_departure_time=2021-11-21 22:00:00&first_departure_time_zone=+08:00&pos=640&ip_address=111.111.111.111,2021-11-19 00:03:14.567,2021-11-19 00:03:14.345
The callback response parameters are listed and defined in the table below.
Parameter | Type | Description | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
mpoint-id | Integer | Velocity’s unique ID for the payment transaction. | |||||||||||||||||||||||||||
payment-method | String | The type of method used for payment. For example, card, APM, or wallet. | |||||||||||||||||||||||||||
payment-type | String | The type of payment. For example, card, APM, or wallet. | |||||||||||||||||||||||||||
payment-provider-id | integer | A unique identification of the payment provider. | |||||||||||||||||||||||||||
short-code | integer | An SMS short code if opted for SMS notification. | |||||||||||||||||||||||||||
orderid | integer | The order ID the merchant provides when a transaction is initiated. | |||||||||||||||||||||||||||
status | Integer | An integer code indicating the status of the transaction; the values can be either 0 or 1. Refer to the Transaction Status Codes for details. | |||||||||||||||||||||||||||
amount | Integer | Total amount that the customer was charged for the payment transaction in a country’s smallest currency. Note: If you have subscribed to FX, this field contains the converted amount. | |||||||||||||||||||||||||||
currency | String | The currency in which the customer was charged. Note: If you are availing FX, this field contains the converted currency. | |||||||||||||||||||||||||||
mobile | String | MSISDN of the customer without an International Dialling Code. | |||||||||||||||||||||||||||
operator | integer | The ID of a customer’s Mobile Network Operator. A typical value is “country id” multiplied by 100. | |||||||||||||||||||||||||||
desc | String | The description of the transaction status and it depends on the status ID. For example, payment captured or payment rejected. | |||||||||||||||||||||||||||
fee | String | The fee that you charge from a customer. | |||||||||||||||||||||||||||
String | The email address of a customer. If your customer provides this parameter, the Email input field on the Send E-Mail Receipt page is automatically prepopulated with this value. | ||||||||||||||||||||||||||||
card-id | String | The card ID to identify the card type. For example, Mastercard or Visa. | |||||||||||||||||||||||||||
HMAC | String | The Message Authentication Code is calculated by creating a SHA512 hash comprising the following input fields in the listed order:
Using the MAC calculation secures the information sent by the merchant to Velocity by applying the SHA-512 encryption algorithm on key parts of the information sent to protect against tampering. The [salt] is the merchant's shared secret used to ensure that the provided MAC is unique. | |||||||||||||||||||||||||||
date-time | String | The date and time when the transaction takes place | |||||||||||||||||||||||||||
local-date-time | String | The local time and date when the transaction takes place | |||||||||||||||||||||||||||
approval-code | String | The unique ID that a PSP provides for a transaction. | |||||||||||||||||||||||||||
session-id | String | The session ID that Velocity sends as a callback request. | |||||||||||||||||||||||||||
wallet-id | String | The ID of the wallet used. | |||||||||||||||||||||||||||
payment-type | String | The type of payment. For example, card, wallet, or APM. | |||||||||||||||||||||||||||
pspid | String | ID of the transaction at PSP or ACQ. This varies in every transaction. | |||||||||||||||||||||||||||
psp-name | String | The name of the PSP or ACQ used for completing the transaction. For example, 2C2P, 2C2P-ALC, GlobalPayment, Worldpay, or ChasePayment. | |||||||||||||||||||||||||||
office-id | integer | The office ID received from approver. | |||||||||||||||||||||||||||
ep-number | integer | The number received from PSP. | |||||||||||||||||||||||||||
invoice-no | String | The invoice number of a transaction. | |||||||||||||||||||||||||||
issuer-approval-code | Alpha numeric string | The code issued by an approver. | |||||||||||||||||||||||||||
txn-status | Integer | The status of a transaction. | |||||||||||||||||||||||||||
card-holder-name | String | The name of a card holder. | |||||||||||||||||||||||||||
orderid | Integer | The order identification number of a transaction. | |||||||||||||||||||||||||||
errorcode | Integer | An integer code indicating the error status of the transaction. | |||||||||||||||||||||||||||
customer-country-id | Integer | The country ID of a mobile. | |||||||||||||||||||||||||||
device-id | String | The device ID of the customer. | |||||||||||||||||||||||||||
card-number | String | The masked card number if present for a transaction. | |||||||||||||||||||||||||||
expiry | String | The card expiry date (YYYY-MM) if present for the transaction. | |||||||||||||||||||||||||||
language | String | Default language encoding set during client onboarding. | |||||||||||||||||||||||||||
description | String | The transaction description as provided during payment initiation. | |||||||||||||||||||||||||||
issuing-bank | String | The issuing bank name for payment transactions done through online banking payment option. | |||||||||||||||||||||||||||
decimals | Integer | The currency precision; for example, 2 for USD for the currency parameter. If you subscribe to FX, this field contains the converted currency in decimals. | |||||||||||||||||||||||||||
sale_currency | Integer | This is the checkout or sale currency. If you do not subscribe to FX, the sale currency has the same value as that of the currency parameter. | |||||||||||||||||||||||||||
sale_amount | Integer | This is the checkout or sale amount. If you do not subscribe to FX services, the same amount will have the same value as that of the amount parameter. | |||||||||||||||||||||||||||
exchange_rate | Integer | The conversion rate given by FX. If you do not subscribe to FX, the value of this field is 1. | |||||||||||||||||||||||||||
fraud_status_code | Integer | The final fraud status code. For example, 3011 or 3111. | |||||||||||||||||||||||||||
fraud_status_desc | String | Final fraud status description. For example, Accepted or Review | |||||||||||||||||||||||||||
pre_auth_ext_status_code | Integer | The pre-auth fraud check system response code. | |||||||||||||||||||||||||||
pre_auth_ext_id | Integer | The pre-auth fraud check system transaction ID. | |||||||||||||||||||||||||||
post_auth_ext_id | Integer | Post-auth fraud check system transaction ID. | |||||||||||||||||||||||||||
post_auth_ext_status_code | String | The post-auth fraud check system response code. | |||||||||||||||||||||||||||
billing_first_name | String | The cardholder's billing address first name. | |||||||||||||||||||||||||||
billing_last_name | String | The cardholder's billing address last name. | |||||||||||||||||||||||||||
billing_street_address | String | The cardholder's billing address street address. | |||||||||||||||||||||||||||
billing_city | String | The cardholder's billing address city name. | |||||||||||||||||||||||||||
billing_country | Integer | The cardholder's billing address country ID. | |||||||||||||||||||||||||||
billing_state | String | The cardholder billing address state/region value. | |||||||||||||||||||||||||||
billing_postal_code | integer | The cardholder's billing address zip code. | |||||||||||||||||||||||||||
billing_email | String | The card holder's email address. | |||||||||||||||||||||||||||
integer | Integer | The card holder's mobile number. | |||||||||||||||||||||||||||
billing_idc | Integer | The card holder's mobile dialling country code. | |||||||||||||||||||||||||||
service_type_id | Integer | A value to indicate the type of exchange services used for a transaction. The ID indicates if FX such as DCC, MCP, and PCC are opted. The ID is a two-digit number XY in which:
The following table shows the possible values of exchange service ID:
| |||||||||||||||||||||||||||
<additional data> | String | If the PSP sends additional data related to transaction, mPoint sends it in callback. For example, ep-number and office-id are additional information sent by 2c2p-ALC. | |||||||||||||||||||||||||||
session-type-id | Integer | The session type ID in which:
| |||||||||||||||||||||||||||
pos | Integer | Point of sale of transaction. For example, countryid - ISO numeric. | |||||||||||||||||||||||||||
ip_address | String | The IP address of the transaction initiation. |
18.Frequently Asked Questions
Q: How can I save the profiles of customers?
A: Use the /mpoint/save-account API to create a new customer profile during sign-up or log in. The profile can be linked to any CRM system for authentication.
Q: How can I save the credit cards of customers?
A: Use the /mpoint/save-card API to store customer card details securely.
Q: How can I get the Client ID and Account ID?
A: CPD shares the client ID and account ID after the client configuration is completed.
Q: What is the use of pay service?
A: The Pay API call is required to identify the payment methods and to capture the appropriate payment details from the user. For instance, in the case of APMs and Wallets a customer may be redirected to complete payment in-app or by opening a web view.
Q: Can I support delayed captures, that is, authorize first and capture later?
A: If the auto-capture option is set to false in the client configuration, /mPoint/capture-payment, the API call enables capturing an authorized transaction. The capture API call can be made immediately or after a delay. A merchant can choose to make the capture calls offline after a delay or in a batch mode during off-peak hours.
Q: Our flow is to ask a customer to add a card before the journey. We would therefore need a card verification service.
A: This feature is dependent on acquirer services. You can get in touch with our support team for details.
Q: What is the use of callback URL as arguments in the API, when the service is synchronous?
A: The authorization response is a synchronous service response, while callback is an asynchronously triggered B2B call. CPD recommends using the callback as a trigger for releasing the ticket. The synchronous auth response has a risk of being timed out at the merchant's end. The callback helps to process any asynchronous processing, if required. The callback can also send a few additional parameters that can be used by retail system such as masked card number or status code. The callback is received for key transaction states such as authorize, capture, refund, and cancel operations.
19.Description of Parameters
The parameters are listed and defined in the table below.
Parameter | Type | Description |
---|---|---|
account | Integer | The unique ID associated with a payment transaction. It is optional. If you omit this parameter, the payment transaction is associated with the default sub-account. |
client-id | Integer | The unique ID configured for a merchant on the Velocity POP. |
auth-token | String | A unique token sent to the specified auth-url to authenticate customers when they pay with a stored card and use single sign-on. |
operator-id | Integer | The ID of a customer’s mobile network operator. CPD recommends including this parameter in a request to ensure that Velocity interacts with the operator accurately. |
country-id | Integer | The CPD-specific country code, which is made available to merchants on request. |
String | The email address of a customer. | |
customer-ref | String | The unique reference ID given by a merchant for a customer. Velocity uses this token to identify a user. The customer reference is included in the request to a specified auth-URL to identify customers when they:
|
type-id | Integer | A type of card. |
country-id | Integer | The CPD-specific country code, which is made available to merchants on request. |
card-holder-name | String | The name of a card holder. |
card-number | String | The card number used for transaction. |
expiry-month | String | The date on which a card expires. |
expiry-year | String | The year in which a card expires. |
language | String | The language that Velocity uses as default when translating the payment pages. Note: Velocity language codes are based upon the ISO- 639-1 standard. Refer to https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes for details. |
version | String | The version of the API or application that send the request. |
card-holder-name | String | The name of a card holder. |
card-number | String | The card number used for transaction. |
expiry-month | String | The date on which a card expires. |
20.Status Codes
20.1 General Codes
Code | Category | Type | Description |
---|---|---|---|
1001 | Payment | Payment Initialized with Velocity | The payment transaction is created in the Velocity database. |
1009 | Payment | Payment Initialized with PSP | The payment processor responsible for authorizing the payment has been initialized. |
1991 | Callback | Merchant Callback Constructed | The callback to the merchant application sent to callback-url has been constructed. |
1992 | Callback | Callback Connected | The connection with the merchant callback URL is established. |
1993 | Callback | Callback Connection Failed | The connection with the merchant callback URL failed. |
1990 | Callback | Callback Accepted | The merchant system returned an HTTP 200 OK and received the callback. |
1995 | Callback | Callback Rejected | The merchant system returned an HTTP $XX/5XX Error and rejected the callback. |
2000 | Payment | Authorized | The payment has been authorized successfully by the PSP. |
2002 | Payment | Cancelled | The authorized payment has been cancelled successfully by the PSP. |
2003 | Payment | Refunded | The captured payment refunded successfully (full / partial) by the PSP. The manual operation / delayed refund - pending states, initiated. |
2008 | Payment | Payment via Stored | Initialized payment with a stored card. |
2009 | Payment | Authorized and Card Stored | The payment has been authorized successfully by the PSP and the card stored on a successful authorization. |
2001 | Payment | Captured | The payment has been captured successfully by the PSP initiated for refund. |
2010 | Payment | Rejected | The payment was rejected by the PSP or Acquirer need more granular states - message tbl front end can continue handling the generic state. |
20109 | Payment | Rejected sub state on timeout | Issuer down time; SDK returns this to the Velocity core. |
20108 | Payment | Rejected sub state on timeout | PSP down time; SDK returns this to the Velocity core. |
2011 | refund Payment | Declined | The payment was declined by the PSP / Acquirer while performing capture, refund, or cancel. No Vision impact; however, all declines have common state 2011. |
4020 | Session | Session Failed | The session failed or declined. One or more transactions in the session failed. |
4021 | Session | Session Failed | The session failed (maximum attempt exceeds). One or more transaction attempts failed. |
4030 | Session | Session Complete | The session completed successfully. The transactions in the session are complete and successful. |
4031 | Session | Session Partial | The session was partially completed. One or more transactions in the session were incomplete. |
Additional codes.
Code | Description |
---|---|
0 | Payment not made. |
200 | Request validated and accepted by back end. |
400 | Request rejected by back end because of validation error. |
401 | Authentication required. |
403 | Access denied. |
415 | Message transmitted in an unknown format or by using an unsupported content type. |
500 | Velocity server error. |
502 | PSP returned an unknown error. |
504 | A timeout occurred while communicating with the PSP. |
1003 | Card expired. |
1005 | Invalid card number. |
1011 | Invalid card name. |
1012 | Invalid card address. |
1013 | Invalid card date of birth. |
1014 | Card is inactive. |
2007 | Payment processed. |
2019 | Payment duplicated. |
2084 | Card not found. |
4030 | Payment success. |
40031 | Partial payment success. |
20.2 Initialize Payment
The following table provides information about the codes that you can receive after you initialize a payment.
Code | Description |
---|---|
1 | Undefined client ID |
1 | Client ID / Account doesn't match. |
2 | Invalid client ID |
3 | Unknown client ID |
4 | Client disabled |
11 | Undefined account |
12 | Invalid account |
13 | Unknown account |
14 | Account disabled |
53 | Amount is more than pending amount. |
400 | Wrong operation: initialize. |
401 | Authentication required. |
401 | Authorization required. |
401 | Username / Password doesn't match. |
415 | Invalid XML Document. |
1002 | Internal database error - Unable to create a new Transaction. Contact [email protected] |
1003 | Internal database error - Unable to insert new message for Transaction. Contact [email protected] |
1004 | Internal database error - Unable to update Transaction. Contact [email protected] |
4021 | Payment failed: You have exceeded the maximum number of attempts. |
4039 | Payment session is already completed. |
20.3 Authorize Payment
The following table provides information about the codes that you can receive after you authorize a payment.
Code | Description |
---|---|
1 | Undefined client ID |
1 | Client ID / Account doesn't match. |
2 | Invalid client ID |
3 | Unknown client ID |
4 | Client disabled |
11 | Undefined account |
12 | Invalid account |
13 | Unknown account |
14 | Account disabled |
24 | The selected payment card is not available. |
26 | Undefined password. |
27 | Password is too short; min length is 6 characters. |
28 | Password is too long; max length is 50 characters. |
29 | Password contains invalid characters or |
31 | Authentication failed. |
32 | Authentication failed – Next invalid attempt will delete the account. |
33 | Authentication failed – Account deleted. |
34 | Authentication rejected by the single sign-on server. |
35 | User account not found. |
36 | A timeout occurred while communicating with the single sign-on server. |
37 | Mobile number not verified. |
38 | Unable to perform single sign-on due to invalid Security Token or Authentication URL. |
39 | User account disabled. |
41 | Undefined card ID. |
42 | ID for the stored card is too small, min value is 1. |
43 | Stored card not found. |
43 | Insufficient balance on voucher. |
44 | Stored card disabled. |
45 | Voucher and Redeem device-ids not equal. |
48 | Voucher payment temporarily locked. |
51 | Insufficient balance on e-money account. |
52 | Insufficient balance on loyalty account. |
52 | Amount is more than pending amount. |
53 | Authorization type not supported for the transaction. |
59 | An unknown error occurred while retrieving payment data from 3rd party wallet. Card has been blocked. |
90 | The connection timed out while authorizing the payment with the PSP. |
92 | Authorization rejected by PSP / Acquirer. |
92 | Payment rejected by invoice issuer |
99 | Unknown PSP / Acquirer. |
99 | The given request combination is not configured for the client. |
99 | Invoice payment not configured for client. |
100 | Payment authorized using a stored card. |
100 | Payment authorized using Invoice |
100 | Payment Authorized using stored card. |
101 | Payment authorized using e-money account. |
102 | Payment authorized using loyalty account. |
103 | Authorization already in progress. |
400 | Wrong operation: authorization. |
401 | Authentication required. |
401 | Authorization required. |
401 | Username / Password doesn't match. |
404 | Transaction with ID:. |
415 | Invalid XML Document. |
1002 | Internal database error - Unable to create a new Transaction. Contact [email protected] |
1003 | Internal database error - Unable to insert new message for Transaction. Contact [email protected] |
1004 | Internal database error - Unable to update Transaction. Contact [email protected] |
2000 | Payment authorized. |
2009 | Payment authorized and card stored. |
2010 | Authorization Declined or Rejected |
20.4 Capture Payment
Code | Description |
---|---|
1 | Client ID / Account doesn't match. |
400 | Invalid request. |
400 | Wrong operation: capture. |
401 | Authorization required. |
401 | Username / Password doesn't match. |
415 | Invalid XML Document. |
500 | Internal Error. |
997 | Capture not supported. |
998 | Network error. |
999 | Declined. |
1000 | Transaction captured successfully. |
1000 | Success. |
20.5 Refund Payment
Code | Description |
---|---|
1 | Client ID / Account doesn't match. |
51 | The amount is undefined. |
52 | The amount is too small. |
53 | The amount greater than the authorized amount. |
177 | Order already refunded. |
400 | Wrong operation: refund. |
401 | Authorization required. |
401 | Username / Password doesn't match. |
415 | Invalid XML Document. |
998 | Network error. |
999 | Declined. |
1000 | Transaction refunded successfully. |
1001 | Transaction cancelled successfully. |
9400 | Invalid request. |
9502 | Bad gateway. |
9500 | Internal sever error. |
21. Appendix
21.1 Processor Type
ID | Processor Type |
---|---|
1 | PSP |
3 | Wallet |
4 | APM |
2 | Acquirer |
5 | Virtual |
6 | Merchant Plug-in |
7 | Gateway |
8 | Tokenize |
9 | Fraud Gateway |
10 | Post Auth Fraud Gateway |
11 | Voucher and Credit |
21.2 Card
ID | Card |
---|---|
10 | SMS |
12 | Switch |
13 | Solo |
14 | Delta |
1 | American Express |
2 | Dankort |
3 | Diners Club |
4 | EuroCard |
5 | JCB |
6 | Maestro |
7 | Master Card |
8 | VISA |
9 | VISA Electron |
18 | Cartebleue |
19 | Postepay VISA |
20 | Postepay Mastercard |
22 | Discover |
24 | Invoice |
16 | VISA Checkout |
17 | MobilePay |
27 | Android Pay |
25 | AMEX Express Checkout |
23 | Master Pass |
15 | Apple Pay |
28 | Paypal |
31 | SADAD |
32 | AliPay |
34 | POLi |
35 | mVault |
11 | My Account |
39 | WeChat Pay |
40 | AliPay Chinese |
41 | Google Pay |
70 | BENEFIT |
69 | KNet |
21 | UATP |
72 | SADAD v2 |
87 | OMANNET |
71 | MADA |
94 | GrabPay |
36 | Klarna |
42 | PPRO |
92 | SWISH |
93 | GCash |
95 | PayMaya |
73 | FPX |
26 | TravelFund |
47 | Dragonpay |
88 | DRAGONPAYOFFLINE |
96 | Payment Center Offline |
63 | SafetyPay |
97 | PSE |
99 | Efecty |
100 | Banco de Bogata |
98 | Via Baloto |
82 | ELO |
45 | Bancontact |
50 | EPS |
52 | giropay |
53 | Ideal |
61 | Przelewy24 |
66 | Sofort |
86 | Mobile Money |
67 | UnionPay |
101 | UnionPay Card |
102 | Agency Credit |
21.3 Card State
ID | Card State |
---|---|
1 | Enabled |
2 | Disabled By Merchant |
3 | Disabled By PSP |
4 | Prerequisite not Met |
5 | Temporarily Unavailable |
6 | Disable Show |
21.4 Country
ID | Country |
---|---|
103 | UK |
338 | Libyan Arab Jamahiriya |
410 | Central African Republic |
502 | Cook Islands |
100 | Denmark |
616 | Japan |
415 | Netherlands Antilles |
422 | South Georgia and IS |
423 | British International Ocean Territory |
135 | Latvia |
622 | Macao |
425 | St. Lucia |
145 | St. Pierre and Miquelon |
401 | Aruba |
436 | St. Maarten |
440 | St. Vincent and The Grenadines |
507 | Cocos (Keeling) Islands |
647 | United Arab Emirates |
600 | Abu Dhabi |
602 | Dubai |
629 | Kerguelen Archipelago |
307 | Burundi |
122 | Bulgaria |
304 | Bolivia |
650 | Kiribati |
511 | Kiribati |
146 | Palestinian Territory |
516 | Tuvalu |
409 | French Departments and Territories in the Indian Ocean |
120 | Belarus |
109 | Switzerland |
404 | Chile |
609 | China |
315 | Democratic Republic of the Congo |
405 | Colombia |
309 | Cape Verde |
406 | Costa Rica |
208 | Cuba |
124 | Cyprus |
125 | Czech Republic |
115 | Germany |
316 | Djibouti |
417 | Scott Base |
317 | Egypt |
337 | Eritrea |
113 | Spain |
126 | Estonia |
319 | Ethiopia |
104 | Finland |
504 | Fiji |
416 | Falkland Islands |
108 | France |
127 | Faroe Islands |
128 | Georgia |
210 | Guadeloupe |
105 | Greece |
130 | Greenland |
421 | French Guiana |
133 | Ireland |
107 | Italy |
136 | Liechtenstein |
137 | Lithuania |
138 | Luxembourg |
141 | Monaco |
139 | Malta |
142 | Montenegro |
426 | Martinique |
339 | Mayotte |
110 | Netherlands |
343 | Reunion |
151 | San Marino |
335 | Tristan Da Cunha |
152 | Slovakia |
153 | Slovenia |
156 | Vatican City State |
430 | Pitcairn Island |
312 | Comoros |
322 | Ghana |
129 | Gibraltar |
323 | Guinea |
321 | Gambia |
410 | Guatemala |
411 | Guyana |
614 | Hong Kong |
412 | Honduras |
123 | Croatia |
131 | Hungary |
505 | Indonesia |
603 | India |
615 | Iran |
628 | Iraq |
132 | Iceland |
106 | Israel |
617 | Jordan |
325 | Kenya |
617 | Cambodia |
604 | Kuwait |
620 | Lao P.D.R. |
621 | Lebanon |
327 | Liberia |
634 | Sri Lanka |
326 | Lesotho |
333 | Morocco |
636 | Macau |
140 | Moldova |
328 | Madagascar |
623 | Maldives |
201 | Mexico |
143 | Republic of Macedonia |
624 | Mongolia |
334 | Mozambique |
331 | Mauritania |
332 | Mauritius |
329 | Malawi |
638 | Malaysia |
340 | Namibia |
427 | Nicaragua |
629 | Nepal |
513 | New Zealand |
610 | pakistan |
606 | Qatar |
607 | Russia |
344 | Rwanda |
150 | Republic of Serbia |
216 | Johnston Island |
217 | Midway Island |
218 | United States Minor Outlying Islands |
442 | Virgin Islands, United States |
510 | Norfolk Island |
626 | Diego Garcia |
308 | Cameroon |
407 | Ecuador |
506 | Micronesia |
211 | Haiti |
635 | Marshall Islands |
342 | Nigeria |
515 | Niue |
102 | Norway |
605 | Oman |
428 | Panama |
429 | Peru |
640 | Philippines |
641 | Palau |
112 | Poland |
147 | Portugal |
432 | Paraguay |
149 | Romania |
608 | Saudi-Arabia |
346 | Sudan |
642 | Singapore |
348 | Sierra Leone |
347 | St. Helena |
408 | El Salvador |
434 | Somalia |
349 | Sao Tome and Principe |
435 | Suriname |
101 | Sweden |
350 | Swaziland |
345 | Seychelles |
643 | Syrian Arab Republic |
311 | Chad |
644 | Thailand |
645 | Turkmenistan |
515 | Tonga |
352 | Tunisia |
154 | Turkey |
353 | Tanzania |
354 | Uganda |
155 | Ukraine |
439 | Uruguay |
200 | USA |
648 | Uzbekistan |
441 | Venezuela |
517 | Vanuatu |
519 | Samoa |
358 | Zimbabwe |
144 | Monserrat |
357 | Zaire |
414 | Carriacou |
424 | St. Christopher (St. Kitts) Nevis |
303 | Benin |
306 | Burkina Faso |
314 | Côte d'Ivoire |
313 | Congo |
320 | Gabon |
324 | Guinea-Bissau |
318 | Equatorial Guinea |
330 | Mali |
509 | New Caledonia |
341 | Niger |
504 | French Polynesia |
433 | Senegal |
351 | Togo |
518 | Wallis and Futuna Islands |
650 | Yemen |
355 | South Africa |
356 | Zambia |
161 | Åland Islands |
445 | French Southern Territories |
456 | Heard and McDonald Islands |
652 | Tajikistan |
520 | Timor-Leste |
521 | Tokelau |
219 | Saint Barthelemy |
443 | Bonaire, Saint Eustatius and Saba |
444 | Curacao |
159 | Guernsey |
158 | Svalbard and Jan Mayen Islands |
160 | Jersey |
220 | Saint Martin |
111 | Belgium |
114 | Austria |
116 | Afghanistan |
117 | Albania |
118 | Andorra |
119 | Armenia |
121 | Bosnia and Herzegovina |
300 | Algeria |
301 | Angola |
302 | Bangladesh |
305 | Botswana |
400 | Argentina |
402 | Belize |
403 | Brazil |
500 | Australia |
501 | Brunei Darussalam |
514 | Solomon Islands |
601 | Bahrain |
611 | Azerbaijan |
612 | Bhutan |
134 | Isle of Man |
202 | Canada |
203 | Anguilla |
204 | Antigua and Barbuda |
205 | Barbados |
206 | British Virgin Islands |
207 | Cayman Islands |
209 | Dominican Republic |
212 | Jamaica |
213 | American Samoa |
214 | Bermuda |
215 | Bahamas |
336 | Western Sahara |
413 | Antarctica |
418 | Dominica |
420 | Grenada |
431 | Puerto Rico |
437 | Turks and Caicos Islands |
438 | Trinidad and Tobago |
508 | Christmas Island |
618 | Kazakhstan |
359 | South Sudan |
619 | Kyrgyzstan |
627 | Guam |
637 | Northern Mariana Islands |
646 | Taiwan |
651 | Papua New Guinea |
653 | Myanmar |
416 | Bouvet Island |
649 | Vietnam |
148 | Kosovo |
633 | Kazakhstan |
632 | South Korea |
631 | North Korea |
625 | Burma |
21.5 Currency
ID | Currency |
---|---|
12 | Algerian Dinar |
44 | Bahamian Dollar |
64 | Ngultrum |
68 | Boliviano |
72 | Pula |
84 | Belize Dollar |
116 | Riel |
124 | Canadian Dollar |
132 | Cabo Verde Escudo |
136 | Cayman Islands Dollar |
144 | Sri Lanka Rupee |
152 | Chilean Peso |
15 | Yuan Renminbi |
170 | Colombian Peso |
174 | Comorian Franc |
188 | Costa Rican Colon |
191 | Kuna |
192 | Cuban Peso |
203 | Czech Koruna |
214 | Dominican Peso |
222 | El Salvador Colon |
230 | Ethiopian Birr |
232 | Nakfa |
238 | Falkland Islands Pound |
242 | Fiji Dollar |
262 | Djibouti Franc |
270 | Dalasi |
292 | Gibraltar Pound |
320 | Quetzal |
324 | Guinean Franc |
328 | Guyana Dollar |
332 | Gourde |
340 | Lempira |
344 | Hong Kong Dollar |
348 | Forint |
352 | Iceland Krona |
356 | Indian Rupee |
360 | Rupiah |
364 | Iranian Rial |
368 | Iraqi Dinar |
376 | New Israeli Sheqel |
388 | Jamaican Dollar |
398 | Tenge |
400 | Jordanian Dinar |
404 | Kenyan Shilling |
408 | North Korean Won |
414 | Kuwaiti Dinar |
417 | Som |
418 | Lao Kip |
422 | Lebanese Pound |
426 | Loti |
430 | Liberian Dollar |
434 | Libyan Dinar |
454 | Malawi Kwacha |
458 | Malaysian Ringgit |
462 | Rufiyaa |
478 | Ouguiya |
480 | Mauritius Rupee |
484 | Mexican Peso |
496 | Tugrik |
498 | Moldovan Leu |
504 | Moroccan Dirham |
512 | Rial Omani |
516 | Namibia Dollar |
524 | Nepalese Rupee |
558 | Cordoba Oro |
566 | Naira |
578 | Norwegian Krone |
586 | Pakistan Rupee |
590 | Balboa |
600 | Guarani |
604 | Sol |
608 | Philippine Peso |
634 | Qatari Rial |
643 | Russian Ruble |
646 | Rwanda Franc |
654 | Saint Helena Pound |
678 | Dobra |
682 | Saudi Riyal |
694 | Leone |
702 | Singapore Dollar |
704 | Dong |
706 | Somali Shilling |
748 | Lilangeni |
752 | Swedish Krona |
756 | Swiss Franc |
780 | Trinidad and Tobago Dollar |
807 | Denar |
818 | Egyptian Pound |
901 | New Taiwan Dollar |
933 | Belarusian Ruble |
936 | Ghana Cedi |
938 | Sudanese Pound |
941 | Serbian Dinar |
943 | Mozambique Metical |
946 | Romanian Leu |
8 | Lek |
32 | Argentine Peso |
36 | Australian Dollar |
48 | Bahraini Dinar |
50 | Taka |
51 | Armenian Dram |
52 | Barbados Dollar |
60 | Bermudian Dollar |
90 | Solomon Islands Dollar |
96 | Brunei Dollar |
104 | Kyat |
108 | Burundi Franc |
392 | Yen |
446 | Pataca |
532 | Netherlands Antillean Guilder |
533 | Aruban Florin |
554 | New Zealand Dollar |
598 | Kina |
728 | South Sudanese Pound |
784 | UAE Dirham |
931 | Peso Convertible |
932 | Zimbabwe Dollar |
944 | Azerbaijan Manat |
950 | CFA Franc BEAC |
960 | SDR (Special Drawing Right) |
968 | Surinam Dollar |
969 | Malagasy Ariary |
971 | Afghani |
972 | Somoni |
973 | Kwanza |
975 | Bulgarian Lev |
940 | Uruguay Peso en Unidades Indexadas (URUIURUI) |
976 | Congolese Franc |
977 | Convertible Mark |
981 | Lari |
947 | WIR Euro |
985 | Zloty |
990 | Unidad de Fomento |
994 | Sucre |
997 | US Dollar (Next day) |
965 | ADB Unit of Account |
970 | Unidad de Valor Real |
979 | Mexican Unidad de Inversion (UDI) |
978 | Euro |
208 | Danish Krone |
984 | Mvdol |
1 | No Specific Currency |
826 | Pound Sterling |
948 | WIR Franc |
890 | US Dollar |
410 | Won |
548 | Vatu |
690 | Seychelles Rupee |
710 | Rand |
760 | Syrian Pound |
764 | Baht |
776 | Pa’anga |
788 | Tunisian Dinar |
800 | Uganda Shilling |
834 | Tanzanian Shilling |
858 | Peso Uruguayo |
860 | Uzbekistan Sum |
882 | Tala |
886 | Yemeni Rial |
934 | Turkmenistan New Manat |
937 | Bolívar |
949 | Turkish Lira |
951 | East Caribbean Dollar |
952 | CFA Franc BCEAO |
953 | CFP Franc |
967 | Zambian Kwacha |
980 | Hryvnia |
986 | Brazilian Real |
21.6 Payment Type
ID | Payment Type |
---|---|
1 | Card |
3 | Wallet |
4 | APM |
5 | Card Token |
6 | Virtual |
7 | Online Banking |
8 | Offline Payment |
2 | Voucher and Credit |
21.7 Product Type
ID | Product Type |
---|---|
100 | Ticket |
200 | Ancillary |
210 | Insurance |
21.8 PSP
ID | PSP |
---|---|
1 | CellPoint Mobile |
2 | DIBS - Custom Pages |
3 | IHI |
4 | WorldPay |
5 | PayEx |
6 | Authorize.Net |
7 | WannaFind |
8 | NetAxept |
9 | CPG |
11 | MobilePay |
13 | VISA Checkout |
14 | Apple Pay |
15 | Master Pass |
16 | AMEX Express Checkout |
17 | Data Cash |
18 | Wire Card |
20 | Android Pay |
21 | GlobalCollect |
22 | Velocity |
23 | PayFort |
25 | CCAvenue |
26 | 2C2P |
27 | MayBank |
28 | PublicBank |
30 | AliPay |
32 | POLi |
36 | mVault |
43 | AliPay - Chinese |
49 | UATP |
50 | UATP Card Account |
44 | Google Pay |
52 | Chase Payment |
48 | CHUBB |
45 | Amex |
47 | MODIRUM MPI |
54 | Cielo |
56 | Global Payments |
57 | MADA MPGS |
65 | CEBU-RMFSS |
60 | EZY Fraud Gateway |
59 | VeriTrans4G |
51 | eGHL |
38 | Paytabs |
46 | PPRO |
62 | FIRST DATA |
63 | CyberSource |
41 | Citcon |
42 | NETS MPI |
37 | Klarna |
66 | SWISH |
61 | DragonPay |
19 | DSB |
76 | Agency Credit |
58 | CELLULANT |
78 | Reach |
12 | Adyen |
70 | SafetyPay |
73 | paymaya acq |
74 | nmi |
24 | PayPal |
40 | 2c2p-alc |
67 | GrabPay |
68 | PayMaya |
69 | Payment Center |
71 | CEBU Travel Fund |
72 | MPGS |
53 | PayU |
10 | Stripe |
64 | CyberSource Fraud Gateway |
75 | AUB |
21.9 Session Type
ID | Session Type |
---|---|
1 | Full Payment Session |
2 | Split Payment Session |
21.10 TXN Type
ID | TXN Type |
---|---|
10 | Call Centre Purchase |
11 | Call Centre Subscription |
20 | SMS Purchase |
21 | SMS Subscription |
30 | Web Purchase |
31 | Web Subscription |
100 | Top-Up Purchase |
101 | Top-Up Subscription |
1000 | E-Money Top-Up |
1001 | E-Money Purchase |
1002 | E-Money Transfer |
1003 | E-Money Withdrawal |
1009 | Card Purchase |
40 | Mobile App. Purchase |
41 | Mobile App. Subscription |
102 | Points Top-Up Purchase |
1004 | Points Top-Up |
1005 | Points Purchase |
1007 | Points Reward |
10091 | New Card Purchase |
1 | Shopping Online |
2 | Shopping Offline |
3 | Self Service Online |
4 | Self Service Offline |
5 | Self Service Online with additional rules on FOP |
6 | Payment Link Transaction |
7 | Telephone Order |
8 | Mail Order |
21.11 Supported tax_id_type
21.11.1 PSE
The following document types and corresponding tax_id_type are supported for PSE:
Document Type | Supported tax_id_type |
---|---|
Citizenship Card | CC |
Foreign Citizenship Card | CE |
Tax Identification Number | TI |
Identity Card | IDC |
Passport | PP |
Birth Certificate | RC |
Foreign Identification Document | DE |
Updated 3 months ago