The Mobipaid API is organized around REST. Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.
You can use the Mobipaid API in test/development mode, which does not affect your live data or interact with the banking networks. The URL and API key you use to authenticate the request determines whether the request is live mode or test mode.
The Mobipaid API uses API keys to authenticate requests. You can view and manage your API keys in the Mobipaid Developer Dashboard.
Every application have two access keys in place, development mode and production mode
Development mode specifications:
- The URL is https://test.mobipaid.io/.
- Access key have the prefix mp_test_.
Production mode specifications:
- The URL is https://live.mobipaid.io/.
- Access key have the prefix mp_live_.
- Connect your application with a merchant.
- Change your status application to Published.
- Merchant have to enable your application on their dashboard.
Your Access keys carry many privileges, so be sure to keep them secure! Do not share your access API keys in publicly accessible areas such as GitHub, client-side code, and so forth.
Authentication to the API is performed via HTTP Bearer Auth. Provide your Access key as the bearer auth value.
This is the example with CURL.
curl -X GET https://test.mobipaid.io/v2/payments -H "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0"
All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.
Status code | Description |
---|---|
200 - OK | Everything worked as expected. |
400 - Bad Request | The request was unacceptable, often due to missing a required parameter. |
401 - Unauthorized | No valid API key provided. |
402 - Request Failed | The parameters were valid but the request failed. |
403 - Forbidden | The API key doesn't have permissions to perform the request. |
404 - Not Found | The requested resource doesn't exist. |
409 - Conflict | The request conflicts with another request (perhaps due to using the same idempotent key). |
429 - Too Many Requests | Too many requests hit the API too quickly. We recommend an exponential backoff of your requests. |
500, 502, 503, 504 - Server Errors | Something went wrong on Mobipaid's end. (These are rare.) |
Request a payment to your customer email or mobile number with this feature. We will send invoice to the customer automatically.
We support Credit Card, Direct Debit, Paypal, Apple Pay, Google Pay, Nedbank, American Express, etc. With mobipaid wallet in place, customer can pay quickly with payment options that has been saved.
This payment request is intended for one time payment.
Create a new single payment request.
Body Params
Field | Description |
---|---|
request_methods
required |
array
"EMAIL" if you want to send invoice through email. "SMS" if you want to send invoice through SMS. "WEB" if you don't want us to send invoice at all but you still need email or mobile_number. Example: ['EMAIL', 'SMS', 'WEB'] |
reference_number
|
string
This will help you indentify a request. Example: "OO-1234-2020" |
email
required with condition |
string
Customer email, required if request_methods is containing "EMAIL". Example: "john@doe.com" |
merchant_phone_number
|
string
Merchant mobile number that used to send SMS. You can buy the number in merchant dashboard. Example: "+1234567890" |
mobile_number
required with condition |
string
Customer mobile number, required if request_methods is containing "SMS". Example: "+1234567890" |
initial_payment_amount required with condition |
number The initial amount of payment needed to pay for this request. Only needed if the payment_frequency parameter is not ONE-TIME. Example : 1.54. |
amount
required |
number
The amount of payment for this request Example: 3 |
currency
required |
string
The currency of this payment request in 3 digit ISO format Example: "USD" |
fixed_amount
required |
boolean
Boolean value between true and false. If set to false, customer can specify the amount they would like to pay. Commonly used for donation payments. |
tax_id
|
number
Tax profile ID to calculate the tax amount for this payment. If it does not exist, the amount value will be tax free. |
template_id
|
number
The Email or SMS template you would like to use with this payment. When empty, the payment request will be send using merchant's default template. If merchant does not set the default template, it will automatically send Mobipaid's default template. |
payment_type
|
string
Add optional payment_type by default it's filled with DB. Set it to "PA" to use Pre Authorization. You need to manually capture to accept the payment. |
payment_methods
|
array
Add optional payment methods that can be used to pay this request. You can add "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT" or "AMEX" in a single array |
moto_enabled
|
boolean
Enable MOTO card mode which have no additional authentication on payment widget |
shipping_enabled
|
boolean
Add optional shipping information that can be filled for this request. |
send_mms_invoice
|
boolean
Use "true" if you want Mobipaid to help you send an invoice through MMS. (Only available for USA and Canada mobile carriers.) Other non-supported countries will send an extended SMS with an URL to download the respective invoice. You will be charged based on your MMS and SMS fee where applicable. |
attach_invoice
|
boolean
Use "true" if you want Mobipaid to attach an invoice as a file and send it through email. |
invoice_url
|
string
The url of the invoice file. If it's not exist, the message template will be used as the invoice content. |
send_mms_receipt
|
boolean
Use "true" if you want Mobipaid to help you send a payment receipt through MMS or SMS. You will be charged on your MMS and SMS fee where applicable. |
attach_receipt
|
boolean
Use "true" if you want the payment receipt to be attached as a file and sent through email. |
receipt_file_type
|
string
File type for payment receipt. Available value: "pdf/jpeg/png", default value pdf. |
expiry_date
|
string
The expiry date for this payment request. Format = YYYY-MM-DD HH:MM |
customer_id
|
string
Customer ID used to update customer data if exist. Example: "h3xDi8" |
customer_salutation
|
string
Mr, Mrs, or Miss. Example: "Mr" |
customer_first_name
|
string
Customer first name. Example: "John" |
customer_last_name
|
string
Customer last name. Example: "Doe" |
send_confirmation
|
string
Use "true" if you want Mobipaid to help you send the confirmation sms/email after payment is succeed. Use "false" if you want to send the confirmation by yourself |
response_url
|
string
Response_url is the url where customer will get the payment result. After the transaction is paid, the payment response will be posted to the response_url. Example: "http://mymobipaidmerchant.com/response/" |
cancel_url
|
string
The url where customer will redirected when customer click cancel button on payment page. Example: "https://mywebsite.com" |
redirect_url
|
string
After payment we will redirect to this URL. If empty, we will show the receipt page instead. Example: "http://mymobipaidmerchant.com/receipt/" |
payment_frequency
|
string
The frequency for the payment request. Available frequency are "ONE-TIME", "WEEKLY", "MONTHLY", "QUARTERLY", "YEARLY". The default value is ONE-TIME. |
payment_start_date
required with condition |
string
Payment start date , requested if payment_frequency is not "ONE-TIME". The value must follow the ISO8601 standard (ex:"2023-08-09T16:59:59.000Z"). Default value is empty |
payment_end_date required with condition |
string Payment end date, requested if payment_frequency is not "ONE-TIME". The value must follow ISO8601 standard (ex:"2023-09-09T17:59:59.000Z"). Default value is empty. |
user_id | string user_id is value of user account id |
Required Header:
- Authorization
Request URL
https://test.mobipaid.io/v2/payment-requests/Request Body
{ "request_methods": [ "SMS"], "reference_number": "123", "email": "example@example.com", "merchant_phone_number": null, "mobile_number": "+12345678901", "customer_id": "", "customer_salutation": "Mr", "customer_first_name": "John", "customer_last_name" : "Preston", "redirect_url" : "https://mobipaid.com", "response_url" : "https://mobipaid.com", "cancel_url" : "https://mobipaid.com", "fixed_amount": true, "currency": "ZAR", "amount": 1500.12, "tax_id": "", "template_id": "", "moto_enabled": false, "shipping_enabled": false, "send_mms_invoice": true, "attach_invoice": true, "invoice_url": "https://mp-fixed-assets.s3.amazonaws.com/logo.png", "attach_receipt": true, "receipt_file_type": "pdf", "payment_type": "DB", "payment_methods": ["APPLE_PAY", "GOOGLE_PAY", "AMEX"], "expiry_date": "", "payment_frequency": "ONE-TIME", "payment_start_date": "", "user_id": "p4DxanBE" }
Examples
curl -X POST https://test.mobipaid.io/v2/payment-requests \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" \ --data '{ "request_methods": [ "SMS"], "reference_number": "123", "email": "example@example.com", "merchant_phone_number": null, "mobile_number": "+12345678901", "customer_id": "", "customer_salutation": "Mr", "customer_first_name": "John", "customer_last_name" : "Preston", "redirect_url" : "https://mobipaid.com", "response_url" : "https://mobipaid.com", "cancel_url" : "https://mobipaid.com", "fixed_amount": true, "currency": "ZAR", "amount": 1500.12, "tax_id": "", "template_id": "", "moto_enabled": false, "shipping_enabled": false, "send_mms_invoice": true, "attach_invoice": true, "invoice_url": "https://mp-fixed-assets.s3.amazonaws.com/logo.png", "attach_receipt": true, "receipt_file_type": "pdf", "payment_type": "DB", "payment_methods": [ "APPLE_PAY", "GOOGLE_PAY", "AMEX" ], "expiry_date": "" }'
import requests import json url = "https://test.mobipaid.io/v2/payment-requests" payload = json.dumps( { "request_methods": [ "SMS"], "reference_number": "123", "email": "example@example.com", "merchant_phone_number": None, "mobile_number": "+12345678901", "customer_id": "", "customer_salutation": "Mr", "customer_first_name": "John", "customer_last_name" : "Preston", "redirect_url" : "https://mobipaid.com", "response_url" : "https://mobipaid.com", "cancel_url" : "https://mobipaid.com", "fixed_amount": True, "currency": "ZAR", "amount": 1500.12, "tax_id": "", "template_id": "", "moto_enabled": false, "shipping_enabled": false, "send_mms_invoice": true, "attach_invoice": true, "invoice_url": "https://mp-fixed-assets.s3.amazonaws.com/logo.png", "attach_receipt": True, "receipt_file_type": "pdf", "payment_type": "DB", "payment_methods": [ "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT", "AMEX" ], "expiry_date": "", "user_id": "Mjy=" } ) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'POST', 'url': 'https://test.mobipaid.io/v2/payment-requests', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' }, body: JSON.stringify({ "request_methods": [ "SMS"], "reference_number": "123", "email": "example@example.com", "merchant_phone_number": null, "mobile_number": "+12345678901", "customer_id": "", "customer_salutation": "Mr", "customer_first_name": "John", "customer_last_name" : "Preston", "redirect_url" : "https://mobipaid.com", "response_url" : "https://mobipaid.com", "cancel_url" : "https://mobipaid.com", "fixed_amount": true, "currency": "ZAR", "amount": 1500.12, "tax_id": "", "template_id": "", "moto_enabled": false, "shipping_enabled": false, "send_mms_invoice": true, "attach_invoice": true, "invoice_url": "https://mp-fixed-assets.s3.amazonaws.com/logo.png", "attach_receipt": true, "receipt_file_type": "pdf", "payment_type": "DB", "payment_methods": [ "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT", "AMEX" ], "expiry_date": "" }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "request_methods" => [ "SMS"], "reference_number" => "123", "email" => "example@example.com", "merchant_phone_number" => null, "mobile_number" => "+12345678901", "customer_id" => "", "customer_salutation" => "Mr", "customer_first_name" => "John", "customer_last_name" => "Preston", "redirect_url" => "https://mobipaid.com", "response_url" => "https://mobipaid.com", "cancel_url" => "https://mobipaid.com", "fixed_amount" => true, "currency" => "ZAR", "amount" => 1500.12, "tax_id" => "", "template_id" => "", "moto_enabled" => false, "shipping_enabled" => false, "send_mms_invoice" => true, "attach_invoice" => true, "invoice_url" => "https://mp-fixed-assets.s3.amazonaws.com/logo.png", "attach_receipt" => true, "receipt_file_type" => "pdf", "payment_type": "DB", "payment_methods" => [ "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT", "AMEX" ], "expiry_date" => "" ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/payment-requests", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require 'json' url = URI("https://test.mobipaid.io/v2/payment-requests") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" request.body = { request_methods: [ "SMS"], reference_number: "123", email: "example@example.com", merchant_phone_number: nil, mobile_number: "+12345678901", customer_id: "", customer_salutation: "Mr", customer_first_name: "John", customer_last_name: "Preston", redirect_url: "https://mobipaid.com", response_url: "https://mobipaid.com", cancel_url: "https://mobipaid.com", fixed_amount: true, currency: "ZAR", amount: 1500.12, tax_id: "", template_id: "", moto_enabled: false, shipping_enabled: false, send_mms_invoice: true, attach_invoice: true, invoice_url: "https://mp-fixed-assets.s3.amazonaws.com/logo.png", attach_receipt: true, receipt_file_type: "pdf", payment_type: "DB", payment_methods: [ "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT", "AMEX" ], expiry_date: "" }.to_json response = https.request(request) puts response.read_body
Result Format
{ "amount": "1500.12", "attach_invoice": true, "attach_receipt": true, "cancel_url": "https://google.com", "created_at": "2020-02-19T06:43:50.000Z", "currency": "ZAR", "customer_first_name": "John", "customer_id": "", "customer_last_name": "Preston", "customer_salutation": "Mr", "email": "example@example.com", "expiry_date": "", "fixed_amount": true, "invoice_url": "https://upload.wikimedia.org/wikipedia/commons/a/a8/CCU_Logo.jpeg", "long_url": "https://long-url", "merchant_phone_number": null, "mobile_number": "+12345678901", "modified_at": "", "payment_methods": [ "GOOGLE_PAY", "AMEX" ], "payment_type": "DB", "qrcode_link": "https://qrcodelink", "receipt_file_type": "pdf", "redirect_url": "https://google.com", "reference_number": "123", "request_methods": [ "SMS" ], "response_url": "https://google.com", "result": "success", "send_mms_invoice": true, "send_mms_receipt": false, "shipping_enabled": false, "short_url": "https://short-url", "tax_id": "", "template_id": "", "transaction_id": "145510OO", "payment_frequency": "ONE-TIME", "user_id": 18 }
{ "message": "Forbidden" }
{ "is_valid": false, "error_field": "", "error_message": "Apple Pay is not enabled. Please check your cofiguration and/or contact your administrator.", "result": "failed" }
Request Samples
You can update the payment request by using the same parameters from create a payment request, but you have to add transaction_id to the body.
Required Header:
- Authorization
Request URL
https://test.mobipaid.io/v2/payment-requests/Request Body
{ "transaction_id": "2116376OO", "request_methods": [ "WEB"], "reference_number": "123", "email": "example@example.com", "merchant_phone_number": null, "mobile_number": "+12345678901", "customer_id": "", "customer_salutation": "Mr", "customer_first_name": "John", "customer_last_name" : "Preston", "redirect_url" : "https://mobipaid.com", "response_url" : "https://mobipaid.com", "cancel_url" : "https://mobipaid.com", "fixed_amount": true, "currency": "ZAR", "amount": 1500.12, "tax_id": "", "template_id": "", "moto_enabled": false, "shipping_enabled": false, "send_mms_invoice": true, "attach_invoice": true, "invoice_url": "https://mp-fixed-assets.s3.amazonaws.com/logo.png", "attach_receipt": true, "receipt_file_type": "pdf", "payment_type": "DB", "payment_methods": ["APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT", "AMEX"], "expiry_date": "" }
Examples
curl -X PUT https://test.mobipaid.io/v2/payment-requests \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" \ --data '{ "transaction_id": "2116376OO", "request_methods": [ "WEB"], "reference_number": "123", "email": "example@example.com", "merchant_phone_number": null, "mobile_number": "+12345678901", "customer_id": "", "customer_salutation": "Mr", "customer_first_name": "John", "customer_last_name" : "Preston", "redirect_url" : "https://mobipaid.com", "response_url" : "https://mobipaid.com", "cancel_url" : "https://mobipaid.com", "fixed_amount": true, "currency": "ZAR", "amount": 1500.12, "tax_id": "", "template_id": "", "moto_enabled": false, "shipping_enabled": false, "send_mms_invoice": true, "attach_invoice": true, "invoice_url": "https://mp-fixed-assets.s3.amazonaws.com/logo.png", "attach_receipt": true, "receipt_file_type": "pdf", "payment_type": "DB", "payment_methods": [ "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT", "AMEX" ], "expiry_date": "" }'
import requests import json url = "https://test.mobipaid.io/v2/payment-requests" payload = json.dumps( { "transaction_id": "2116376OO", "request_methods": [ "WEB"], "reference_number": "123", "email": "example@example.com", "merchant_phone_number": None, "mobile_number": "+12345678901", "customer_id": "", "customer_salutation": "Mr", "customer_first_name": "John", "customer_last_name" : "Preston", "redirect_url" : "https://mobipaid.com", "response_url" : "https://mobipaid.com", "cancel_url" : "https://mobipaid.com", "fixed_amount": True, "currency": "ZAR", "amount": 1500.12, "tax_id": "", "template_id": "", "moto_enabled": False, "shipping_enabled": False, "send_mms_invoice": True, "attach_invoice": True, "invoice_url": "https://mp-fixed-assets.s3.amazonaws.com/logo.png", "attach_receipt": True, "receipt_file_type": "pdf", "payment_type": "DB", "payment_methods": [ "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT", "AMEX" ], "expiry_date": "" } ) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("PUT", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'PUT', 'url': 'https://test.mobipaid.io/v2/payment-requests', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' }, body: JSON.stringify({ "transaction_id": "2116376OO", "request_methods": [ "WEB"], "reference_number": "123", "email": "example@example.com", "merchant_phone_number": null, "mobile_number": "+12345678901", "customer_id": "", "customer_salutation": "Mr", "customer_first_name": "John", "customer_last_name" : "Preston", "redirect_url" : "https://mobipaid.com", "response_url" : "https://mobipaid.com", "cancel_url" : "https://mobipaid.com", "fixed_amount": true, "currency": "ZAR", "amount": 1500.12, "tax_id": "", "template_id": "", "moto_enabled": false, "shipping_enabled": false, "send_mms_invoice": true, "attach_invoice": true, "invoice_url": "https://mp-fixed-assets.s3.amazonaws.com/logo.png", "attach_receipt": true, "receipt_file_type": "pdf", "payment_type": "DB", "payment_methods": [ "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT", "AMEX" ], "expiry_date": "" }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "transaction_id" => "2116376OO", "request_methods" => [ "WEB"], "reference_number" => "123", "email" => "example@example.com", "merchant_phone_number" => null, "mobile_number" => "+12345678901", "customer_id" => "", "customer_salutation" => "Mr", "customer_first_name" => "John", "customer_last_name" => "Preston", "redirect_url" => "https://mobipaid.com", "response_url" => "https://mobipaid.com", "cancel_url" => "https://mobipaid.com", "fixed_amount" => true, "currency" => "ZAR", "amount" => 1500.12, "tax_id" => "", "template_id" => "", "moto_enabled" => false, "shipping_enabled" => false, "send_mms_invoice" => true, "attach_invoice" => true, "invoice_url" => "https://mp-fixed-assets.s3.amazonaws.com/logo.png", "attach_receipt" => true, "receipt_file_type" => "pdf", "payment_type": "DB", "payment_methods" => [ "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT", "AMEX" ], "expiry_date" => "" ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/payment-requests", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "PUT", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require 'json' url = URI("https://test.mobipaid.io/v2/payment-requests") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Put.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" request.body = { transaction_id: "2116376OO", request_methods: [ "WEB"], reference_number: "123", email: "example@example.com", merchant_phone_number: nil, mobile_number: "+12345678901", customer_id: "", customer_salutation: "Mr", customer_first_name: "John", customer_last_name: "Preston", redirect_url: "https://mobipaid.com", response_url: "https://mobipaid.com", cancel_url: "https://mobipaid.com", fixed_amount: true, currency: "ZAR", amount: 1500.12, tax_id: "", template_id: "", moto_enabled: false, shipping_enabled: false, send_mms_invoice: true, attach_invoice: true, invoice_url: "https://mp-fixed-assets.s3.amazonaws.com/logo.png", attach_receipt: true, receipt_file_type: "pdf", payment_type: "DB", payment_methods: [ "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT", "AMEX" ], expiry_date: "" }.to_json response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "transaction_id": "145497OO", "request_methods": [ "WEB" ], "reference_number": "123", "email": "example@example.com", "mobile_number": "+12345678901", "merchant_phone_number": null, "customer_id": "", "customer_salutation": "Mr", "customer_first_name": "John", "customer_last_name": "Preston", "payment_type": "DB", "currency": "ZAR", "amount": "1500.12", "fixed_amount": true, "short_url": "https://shorturl", "long_url": "https://longurl", "qrcode_link": "https://qrlink", "tax_id": "", "template_id": "", "payment_methods": [ "GOOGLE_PAY", "AMEX" ], "shipping_enabled": false, "send_mms_invoice": true, "attach_invoice": true, "invoice_url": "https://upload.wikimedia.org/wikipedia/commons/a/a8/CCU_Logo.jpeg", "send_mms_receipt": false, "attach_receipt": true, "receipt_file_type": "pdf", "expiry_date": "", "response_url": "https://google.com", "redirect_url": "https://google.com", "cancel_url": "https://google.com", "created_at": "2020-02-18T06:53:07.000Z", "modified_at": "2020-02-19T09:02:46.000Z" }
{ "is_valid": false, "error_field": "transaction_id", "error_message": "transaction_id is not valid" }
{ "message": "Forbidden" }
Request Samples
You can fetch a single payment request by using the GET method with a transaction_id in the route parameter. If you choose to get multiple payment requests detail instead of single payment request detail, you can filled in query string parameters below as options.
Query | Description |
---|---|
start_date
|
string
Start search for payment request from the date entered into this parameter. The format is "YYYY-MM-DD" |
end_date
required with condition |
string
You need to specify the end_date if you specify the start_date. It use the same format of "YYYY-MM-DD" |
page
|
number
Select the payment request (default value 1). |
limit
|
number
Limit the amount of items fetched from payment request. The default value is 10 |
keyword
|
string
Search for a payment request that has the specified keyword in email, mobile number or reference number |
Required Header:
- Authorization
Request URL
https://test.mobipaid.io/v2/payment-requests/{transaction_id}Examples
curl -X GET https://test.mobipaid.io/v2/payment-requests/{transaction_id} \ --header "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0"
import requests url = "https://test.mobipaid.io/v2/payment-requests?page=5&limit=1" payload = {} headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("GET", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'GET', 'url': 'https://test.mobipaid.io/v2/payment-requests?page=5&limit=1', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/payment-requests?page=5&limit=1", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" url = URI("https://test.mobipaid.io/v2/payment-requests?page=5&limit=1") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Get.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" response = https.request(request) puts response.read_body
Result Format
{ "limit": "1", "page": "1", "page_count": 84, "total_count": 84, "transactions": [ { "amount": 739.88, "attach_receipt_on_email": false, "chargeback": [], "created_at": "2020-01-30T10:53:45.000Z", "currency": "EUR", "email": "saad.jamalkhan@gmail.com", "expiration_date": "2020-02-06T10:53:00.000Z", "fixed_amount": true, "invoice_url": null, "merchant_phone_number": "+19196894607", "mobile_number": "+23059418021", "modified_at": null, "payment_date": "2020-01-30T10:56:01.000Z", "payment_id": "8ac7a4a26ff5c0c4016ff617ed2128fa", "payment_methods": ["AMEX"], "payment_type": "DB", "receipt_file_type": null, "reference_number": "44923", "refund": [], "request_methods": [ "SMS", "EMAIL" ], "reversal": [], "send_mms_receipt": false, "shipping_information": false, "status": "success", "status_description": "", "tax_id": "PKZMknlE", "transaction_id": "145429OO", "url": "https://s.mpaid.us/37cfJ" } ] }
{ "message": "Forbidden" }
Request Samples
You can delete a single payment request by using the DELETE method with a transaction_id in the route parameter.
Please note that you will not be allowed to delete a transaction that already has a payment history.
Required Header:
- Authorization
Request URL
https://test.mobipaid.io/v2/payment-requests/{transaction_id}Examples
curl -X DELETE https://test.mobipaid.io/v2/payment-requests/{transaction_id} \ --header "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0"
import requests url = "https://test.mobipaid.io/v2/payment-requests/2116376OO" payload = {} headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_live_9Au2ABAwToHDfMf1kiwr' } response = requests.request("DELETE", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'DELETE', 'url': 'https://test.mobipaid.io/v2/payment-requests/2116376OO', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_live_9Au2ABAwToHDfMf1kiwr' } }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/payment-requests/2116376OO", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "DELETE", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_live_9Au2ABAwToHDfMf1kiwr" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" url = URI("https://test.mobipaid.io/v2/payment-requests/2116376OO") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Delete.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_live_9Au2ABAwToHDfMf1kiwr" response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "transaction_id": "145493OO" }
{ "is_valid": false, "error_field": "transaction_id", "error_message": "Transaction is not found.", "result": "failed" }
Request Samples
The payment response is sent via the payment response URL that you provided in your payment request.We send a JSON response in a POST parameter called response.On your payment response provided URL you will need to check for a post parameter called response and read the JSON payload contained within the post variable.
Test
Two possible result codes of NOK for failure in the payment attempt and result_code: 000.100.110 with ACK for a successful payment.
response {
"result": "ACK",
"token": "9b6352ab516a043cd33cf65cf8210af35bd4d3c9",
"transaction_id": "211PO",
"payment_id": "8ac7a4a074726760017472b283ce070f",
"amount": "50.33",
"currency": "USD",
"currency_symbol": "$",
"result_code": "000.100.110",
"result_description": "Request successfully processed in 'Merchant in Integrator Test Mode'",
"additional_info_text": {
"Type": "baju baru"
},
"additional_info_dropdown": {
"Size": "M"
},
"cart_items": "[{\"sku\":\"123\",\"name\":\"Blue Shirt XL\",\"qty\":1,\"unit_price\":11.2},{\"sku\":\"456\",\"name\":\"Black Short Pant XL\",\"qty\":2,\"unit_price\":22.4}]"
}
Production
Two possible result codes of NOK for failure in the payment attempt and result_code: 000.000.000 with ACK for a successful payment.
response {
"result": "ACK",
"token": "9b6352ab516a043cd33cf65cf8210af35bd4d3c9",
"transaction_id": "211PO",
"payment_id": "8ac7a4a074726760017472b283ce070f",
"amount": "50.33",
"currency": "USD",
"currency_symbol": "$",
"result_code": "000.000.000",
"result_description": "Transaction succeeded",
"additional_info_text": {
"Type": "baju baru"
},
"additional_info_dropdown": {
"Size": "M"
},
"cart_items": "[{\"sku\":\"123\",\"name\":\"Blue Shirt XL\",\"qty\":1,\"unit_price\":11.2},{\"sku\":\"456\",\"name\":\"Black Short Pant XL\",\"qty\":2,\"unit_price\":22.4}]"
}
Sample payment response
The result codes are part of the response body's JSON containing a code and a description explaining the code.
Successful
Result code | Description |
---|---|
000.000.000 | Transaction succeeded |
000.000.100 | Successful request |
000.100.105 | Chargeback Representment is successful |
000.100.106 | Chargeback Representment cancellation is successful |
000.100.110 | Request successfully processed in 'Merchant in Integrator Test Mode' |
000.100.111 | Request successfully processed in 'Merchant in Validator Test Mode' |
000.100.112 | Request successfully processed in 'Merchant in Connector Test Mode' |
000.300.000 | Two-step transaction succeeded |
000.300.100 | Risk check successful |
000.300.101 | Risk bank account check successful |
000.300.102 | Risk report successful |
000.300.103 | Exemption check successful |
000.310.100 | Account updated |
000.310.101 | Account updated (Credit card expired) |
000.310.110 | No updates found, but account is valid |
000.400.110 | Authentication successful (frictionless flow) |
000.400.120 | Authentication successful (data only flow) |
000.600.000 | Transaction succeeded due to external update |
Successful but flagged for review
Result code | Description | Notes |
---|---|---|
000.400.000 | Transaction succeeded (please review manually due to fraud suspicion) | The bank processed the transaction but Mobipaid flagged it for risk reasons and are reviewing it. |
000.400.020 | Transaction succeeded (please review manually due to CVV return code) | |
000.400.040 | Transaction succeeded (please review manually due to amount mismatch) | |
000.400.050 | Transaction succeeded (please review manually because transaction is pending) | |
000.400.060 | Transaction succeeded (approved at merchant's risk) | |
000.400.070 | Transaction succeeded (waiting for external risk review) | |
000.400.080 | Transaction succeeded (please review manually because the service was unavailable) | |
000.400.081 | Transaction succeeded (please review manually, as the risk status not available yet due network timeout) | |
000.400.082 | Transaction succeeded (please review manually, as the risk status not available yet due processing timeout) | |
000.400.090 | Transaction succeeded (please review manually due to external risk check) | |
000.400.100 | Transaction succeeded, risk after payment rejected |
Pending
Result code | Description | Notes |
---|---|---|
000.200.000 | transaction pending | |
000.200.001 | Transaction pending for acquirer, the consumer is not present | |
000.200.100 | successfully created checkout | For Checkout, this indicates that the session is now open. |
000.200.101 | successfully updated checkout | |
000.200.102 | successfully deleted checkout | |
000.200.103 | checkout is pending | |
000.200.200 | Transaction initialized | |
000.200.201 | QR Scanned/Link Clicked, waiting for the final authentication result | |
100.400.500 | waiting for external risk | |
800.400.500 | Waiting for confirmation of non-instant payment. Denied for now. | |
800.400.501 | Waiting for confirmation of non-instant debit. Denied for now. | |
800.400.502 | Waiting for confirmation of non-instant refund. Denied for now. |
Rejected
Result code | Description | Notes |
---|---|---|
000.400.101 | card not participating/authentication unavailable | 3-D Secure is not available for this card. |
000.400.102 | user not enrolled | 3-D Secure is not enabled for this card. |
000.400.103 | Technical Error in 3D system | There was a technical error with 3-D Secure. |
000.400.104 | Missing or malformed 3DSecure Configuration for Channel | 3-D Secure is not configured correctly on this channel. Check your 3-D Secure configuration and ensure that it is correct before asking your customer to try again. |
000.400.105 | Unsupported User Device - Authentication not possible | 3-D Secure is not supported on the customer's device. The customer should try again with another device. |
000.400.106 | invalid payer authentication response(PARes) in 3DSecure Transaction | Payment failed due to a failed 3-D Secure response. |
000.400.107 | Communication Error to Scheme Directory Server | Transaction failed due to a communication error. |
000.400.108 | Cardholder Not Found - card number provided is not found in the ranges of the issuer | The customer's card is not supported. |
000.400.109 | Card is not enrolled for 3DS version 2 | 3-D Secure 2.0 is not enabled for this card. |
000.400.111 | Data Only request failed | |
000.400.112 | 3RI transaction not permitted | |
000.400.200 | risk management check communication error | Transaction failed due to a communication error. |
Communication error
Result code | Description | Notes |
---|---|---|
000.400.030 | Transaction partially failed (please reverse manually due to failed automatic reversal) | The customer failed the account verification services (AVS) checks or entered the wrong CVV or CVC. Alternatively, one of the systems processing the transaction was down. Sometimes, if the banks' automatic reversal fails, they must manually reverse the transaction. Mobipaid is working with the acquiring and issuing banks to refund your funds. |
900.100.100 | unexpected communication error with connector/acquirer | The issuing bank, acquiring bank, or a third-party involved in the transaction process was experiencing downtime. |
900.100.200 | error response from connector/acquirer | |
900.100.201 | error on the external gateway (e.g. on the part of the bank, acquirer,...) | Authentication of this payment failed. |
900.100.202 | invalid transaction flow, the requested function is not applicable for the referenced transaction. | An example of this is if the payment method does not support refunds. For example, when the Mobipaid Dashboard cannot refund an EFTsecure transaction or when you try to trigger a partial refund on a payment method that does not support refunds. To perform the refund, you must do a manual EFT refund from your bank account to your customer's bank account. |
900.100.203 | Error on the internal gateway | |
900.100.204 | Error during message parsing | |
900.100.300 | timeout, uncertain result | The acquiring bank or a third-party involved in the transaction process was experiencing downtime. |
900.100.301 | Transaction timed out without response from connector/acquirer. It was reversed. | |
900.100.310 | Transaction timed out due to internal system misconfiguration. Request to acquirer has not been sent. | |
900.100.400 | timeout at connectors/acquirer side | The payment request timed out on the payment provider's end. One reason why this occurs is if the customer does not approve the payment provider's authentication request. |
900.100.500 | timeout at connectors/acquirer side (try later) | |
900.100.600 | connector/acquirer currently down | |
900.100.700 | error on the external service provider | |
900.200.100 | Message Sequence Number of Connector out of sync | |
900.300.600 | user session timeout | The customer's session timed out before they approved the payment request. |
900.400.100 | unexpected communication error with external risk provider |
System error
Result code | Description | Notes |
---|---|---|
600.100.100 | Unexpected Integrator Error (Request could not be processed) | |
800.500.100 | direct debit transaction declined for unknown reason | |
800.500.110 | Unable to process transaction - ran out of terminalIds - please contact acquirer | |
800.600.100 | transaction is being already processed | Transaction is already being processed. Please wait before attempting again. |
800.800.400 | Connector/acquirer system is under maintenance | System under maintenance. Please wait before attempting to pay again or pay using a different payment method. |
800.800.800 | The payment system is currently unavailable, please contact support in case this happens again. | System unavailable. Please wait before attempting to pay again or pay using a different payment method. |
800.800.801 | The payment system is currently under maintenance. Please apologize for the inconvenience this may cause. If you were not informed of this maintenance window in advance, contact your sales representative. | System under maintenance. Please wait before attempting to pay again or pay using a different payment method. |
999.999.888 | UNDEFINED PLATFORM DATABASE ERROR | |
999.999.999 | UNDEFINED CONNECTOR/ACQUIRER ERROR |
Asynchronous workflow error
Result code | Description | Notes |
---|---|---|
100.395.101 | Bank not supported for Giropay | |
100.395.102 | Account not enabled for Giropay e.g. test account | |
100.395.501 | Previously pending online transfer transaction timed out | |
100.395.502 | Acquirer/Bank reported timeout on online transfer transaction | |
100.396.101 | Cancelled by user | The user started a transaction and then cancelled it or Checkout. |
100.396.102 | Not confirmed by user | |
100.396.103 | Previously pending transaction timed out | The registration transaction (RG) was not authenticated and timed out. The debit transaction references the registration token so might also fail. See the description for 800.100.152 for more information. |
100.396.104 | Uncertain status - probably cancelled by user | The user started a transaction and then cancelled it or Checkout. |
100.396.106 | User did not agree to payment method terms | |
100.396.201 | Cancelled by merchant | |
100.397.101 | Cancelled by user due to external update | |
100.397.102 | Rejected by connector/acquirer due to external update |
Soft decline
Result code | Description | |
---|---|---|
300.100.100 | Transaction declined (additional customer authentication required) |
External risk system check
Result code | Description | Notes |
---|---|---|
100.380.401 | User Authentication Failed | Wrong OTP. This result code signifies that the bank's system was unable to authenticate the customer. Your customer's transaction failed because, (1) you entered the wrong OTP or (2) there was a field or system error with the OTP. Your bank was unable to authenticate you and process the transaction. Try again or contact your bank to find out if there is an issue with the OTP system. |
100.380.501 | Risk management transaction timeout | The customer probably did not enter their OTP or they might not have seen the 3-D Secure page because their browser or an extension might have blocked it, or because of an issue with the bank's 3-D Secure server. If the card is 3-D Secure enabled, the customer should receive an OTP during the authentication phase of the payment. The customer's bank handles OTP generation and sending. Mobipaid is not aware of and does not control the 3-D Secure authentication process. The customer's bank also authenticates the payment if the customer provides the correct OTP and when completed, sends Mobipaid a successful payment response. Mobipaid does not know upfront whether a customer enabled their card for 3-D Secure. Your customer might not have entered the OTP in time, their bank card is not enabled for online transactions, or there could be an issue with the bank's 3-D Secure server or transaction approval server. Ask your customer to try again if you know they activated their bank card for online transactions or ask them to contact their bank. |
100.400.000 | transaction declined (Wrong Address) | |
100.400.001 | transaction declined (Wrong Identification) | |
100.400.002 | Transaction declined (Insufficient credibility score) | |
100.400.005 | transaction must be executed for German address | |
100.400.007 | System error ( possible incorrect/missing input data) | |
100.400.020 | transaction declined | |
100.400.021 | transaction declined for country | |
100.400.030 | transaction not authorized. Please check manually | |
100.400.039 | transaction declined for other error | |
100.400.040 | authorization failure | |
100.400.041 | transaction must be executed for German address | |
100.400.042 | transaction declined by SCHUFA (Insufficient credibility score) |
Result code | Description |
---|---|
100.400.043 | transaction declined because of missing obligatory parameter(s) |
100.400.044 | transaction not authorized. Please check manually |
100.400.045 | SCHUFA result not definite. Please check manually |
100.400.051 | SCHUFA system error (possible incorrect/missing input data) |
100.400.060 | authorization failure |
100.400.061 | transaction declined (Insufficient credibility score) |
100.400.063 | transaction declined because of missing obligatory parameter(s) |
100.400.064 | transaction must be executed for Austrian, German or Swiss address |
100.400.065 | result ambiguous. Please check manually |
100.400.071 | system error (possible incorrect/missing input data) |
100.400.080 | authorization failure |
100.400.081 | transaction declined |
100.400.083 | transaction declined because of missing obligatory parameter(s) |
100.400.084 | transaction can not be executed for given country |
100.400.085 | result ambiguous. Please check manually |
100.400.086 | transaction declined (Wrong Address) |
100.400.087 | transaction declined (Wrong Identification) |
100.400.091 | system error (possible incorrect/missing input data) |
100.400.100 | transaction declined - very bad rating |
100.400.120 | authorization failure |
100.400.121 | account blacklisted |
100.400.122 | transaction must be executed for valid German account |
100.400.123 | transaction declined because of missing obligatory parameter(s) |
100.400.130 | system error (possible incorrect/missing input data) |
100.400.139 | system error (possible incorrect/missing input data) |
100.400.140 | transaction declined by GateKeeper |
100.400.141 | Challenge by ReD Shield |
100.400.142 | Deny by ReD Shield |
100.400.143 | Noscore by ReD Shield |
100.400.144 | ReD Shield data error |
100.400.145 | ReD Shield connection error |
100.400.146 | Line item error by ReD Shield |
100.400.147 | Payment void and transaction denied by ReD Shield |
100.400.148 | Payment void and transaction challenged by ReD Shield |
100.400.149 | Payment void and data error by ReD Shield |
100.400.150 | Payment void and connection error by ReD Shield |
100.400.151 | Payment void and line item error by ReD Shield |
100.400.152 | Payment void and error returned by ReD Shield |
100.400.241 | Challenged by Threat Metrix |
100.400.242 | Denied by Threat Metrix |
Result code | Description |
---|---|
100.400.243 | Invalid sessionId |
100.400.260 | authorization failure |
100.400.300 | abort checkout process |
100.400.301 | reenter age/birthdate |
100.400.302 | reenter address (packstation not allowed) |
100.400.303 | reenter address |
100.400.304 | invalid input data |
100.400.305 | invalid foreign address |
100.400.306 | delivery address error |
100.400.307 | offer only secure methods of payment |
100.400.308 | offer only secure methods of payment; possibly abort checkout |
100.400.309 | confirm corrected address; if not confirmed, offer secure methods of payment only |
100.400.310 | confirm bank account data; if not confirmed, offer secure methods of payment only |
100.400.311 | transaction declined (format error) |
100.400.312 | transaction declined (invalid configuration data) |
100.400.313 | currency field is invalid or missing |
100.400.314 | amount invalid or empty |
100.400.315 | invalid or missing email address (probably invalid syntax) |
100.400.316 | transaction declined (card missing) |
100.400.317 | transaction declined (invalid card) |
100.400.318 | invalid IP number |
100.400.319 | transaction declined by risk system |
100.400.320 | shopping cart data invalid or missing |
100.400.321 | payment type invalid or missing |
100.400.322 | encryption method invalid or missing |
100.400.323 | certificate invalid or missing |
100.400.324 | Error on the external risk system |
100.400.325 | External risk system not available |
100.400.326 | Risk bank account check unsuccessful |
100.400.327 | Risk report unsuccessful |
100.400.328 | Risk report unsuccessful (invalid data) |
Address validation
Result code | Description | Notes |
---|---|---|
800.400.100 | AVS Check Failed | Card address validation failed. The customer should try again with the correct address. |
800.400.101 | Mismatch of AVS street value | Card address validation failed. The customer should try again with the correct address. |
800.400.102 | Mismatch of AVS street number | Card address validation failed. The customer should try again with the correct address. |
800.400.103 | Mismatch of AVS PO box value fatal | |
800.400.104 | Mismatch of AVS zip code value fatal | Card address validation failed. The customer should try again with the correct address. |
800.400.105 | Mismatch of AVS settings (AVSkip, AVIgnore, AVSRejectPolicy) value | |
800.400.110 | AVS Check Failed. Amount has still been reserved on the customer's card and will be released in a few business days. Please ensure the billing address is accurate before retrying the transaction. | Card address validation failed. The customer should try again with the correct address. |
800.400.150 | Implausible address data | Card address validation failed. The customer should try again with the correct address. |
800.400.151 | Implausible address state data | Card address validation failed. The customer should try again with the correct address. |
3-D Secure
Result code | Description | Notes |
---|---|---|
100.390.101 | purchase amount/currency mismatch | |
100.390.102 | PARes Validation failed | |
100.390.103 | PARes Validation failed - problem with signature | |
100.390.104 | XID mismatch | |
100.390.105 | Transaction rejected because of technical error in 3DSecure system | Authentication of this payment failed because of a bank error. |
100.390.106 | Transaction rejected because of error in 3DSecure configuration | The bank's 3-D Secure configuration is incorrect. The customer should contact their bank to identify what the issue is. |
100.390.107 | Transaction rejected because cardholder authentication unavailable | The issuing bank rejected the transaction and it failed because, (1) the card holder or issuing bank is not enrolled for 3-D Secure, (2) 3-D Secure card authentication was unsuccessful, for example, if the card holder is not enrolled for 3-D Secure, or (3) the card or issuing bank is not 3-D Secure ready. The customer must contact their bank to check if they have enrolled for 3-D Secure, or they must check themselves if they enrolled their card for 3-D Secure. |
100.390.108 | Transaction rejected because merchant not participating in 3DSecure program | |
100.390.109 | Transaction rejected because of Visa status 'U' or AMEX status 'N' or 'U' in 3DSecure program | The bank's 3-D Secure system was experiencing downtime and could not process the transaction. |
100.390.110 | Cardholder Not Found - card number provided is not found in the ranges of the issuer | |
100.390.111 | Communication Error to Scheme Directory Server | The issuing bank, acquiring bank, or a third-party involved in the transaction process was experiencing downtime. |
100.390.112 | Technical Error in 3D system | The bank's 3-D Secure process encountered an error. It could be that their 3-D Secure system is down, ask the customer to check in with their bank. |
100.390.113 | Unsupported User Device - Authentication not possible | 3-D Secure is not supported on the customer's device. The customer should try again with another device. |
100.390.114 | Not authenticated because the issuer is rejecting authentication | |
100.390.115 | Authentication failed due to invalid message format | |
100.390.116 | Access denied to the authentication system | |
100.390.117 | Authentication failed due to invalid data fields | |
100.390.118 | Authentication failed due to suspected fraud | The customer should contact their issuing bank bank for further information. |
800.400.200 | Invalid Payer Authentication in 3DSecure transaction |
Allowlist validation
Result code | Description |
---|---|
800.200.159 | account or user is blacklisted (card stolen) |
800.200.160 | account or user is blacklisted (card blocked) |
800.200.165 | account or user is blacklisted (card lost) |
800.200.202 | account or user is blacklisted (account closed) |
800.200.208 | account or user is blacklisted (account blocked) |
800.200.220 | account or user is blacklisted (fraudulent transaction) |
800.300.101 | account or user is blacklisted |
800.300.102 | country blacklisted |
800.300.200 | email is blacklisted |
800.300.301 | ip blacklisted |
800.300.302 | ip is anonymous proxy |
800.300.401 | bin blacklisted |
800.300.500 | transaction temporary blacklisted (too many tries invalid CVV) |
800.300.501 | transaction temporary blacklisted (too many tries invalid expire date) |
800.310.200 | Account closed |
800.310.210 | Account not found |
800.310.211 | Account not found (BIN/issuer not participating) |
Risk validation
Result code | Description | Notes |
---|---|---|
800.110.100 | duplicate transaction | The issuing bank has identified that the transaction reference, unique ID, or retreival reference number of the transaction is the same as an earlier transaction. Mobipaid must raise this with the acquiring bank of the merchant who can investigate and confirm why they flagged the transaction as a duplicate. |
800.120.100 | Rejected by Throttling. | |
800.120.101 | maximum number of transactions per account already exceeded | |
800.120.102 | maximum number of transactions per ip already exceeded | |
800.120.103 | maximum number of transactions per email already exceeded | The customer's bank rejects the transaction if it fails velocity checking for the email ID in risk management. The customer transacted too many times in a limited amount of time and must allow some time to elapse before transacting again. |
800.120.200 | maximum total volume of transactions already exceeded | |
800.120.201 | maximum total volume of transactions per account already exceeded | |
800.120.202 | maximum total volume of transactions per ip already exceeded | |
800.120.203 | maximum total volume of transactions per email already exceeded | |
800.120.300 | chargeback rate per bin exceeded | |
800.120.401 | maximum number of transactions or total volume for configured MIDs or CIs exceeded | |
800.130.100 | Transaction with same TransactionId already exists | |
800.140.100 | maximum number of registrations per mobile number exceeded | |
800.140.101 | maximum number of registrations per email address exceeded | |
800.140.110 | maximum number of registrations of mobile per credit card number exceeded | |
800.140.111 | maximum number of registrations of credit card number per mobile exceeded | |
800.140.112 | maximum number of registrations of email per credit card number exceeded | When a merchant enables this risk setting for their website or business, a card number can only have one email registration. This error occurs when trying to register a card and email that was already registered. The customer should either use their registered email or use a new email when registering with an email. |
800.140.113 | maximum number of registrations of credit card number per email exceeded | |
800.150.100 | Account Holder does not match Customer Name | |
800.160.100 | Invalid payment data for configured Shopper Dispatching Type | |
800.160.110 | Invalid payment data for configured Payment Dispatching Type | |
800.160.120 | Invalid payment data for configured Recurring Transaction Dispatching Type | The API parameters are wrong for recurring or one-click transactions. |
800.160.130 | Invalid payment data for configured TicketSize Dispatching Type |
Configuration validation
Result code | Description | Notes |
---|---|---|
500.100.201 | Channel/Merchant is disabled (no processing possible) | |
500.100.202 | Channel/Merchant is new (no processing possible yet) | |
500.100.203 | Channel/Merchant is closed (no processing possible) | |
500.100.301 | Merchant-Connector is disabled (no processing possible) | |
500.100.302 | Merchant-Connector is new (no processing possible yet) | |
500.100.303 | Merchant-Connector is closed (no processing possible) | |
500.100.304 | Merchant-Connector is disabled at gateway (no processing possible) | |
500.100.401 | Connector is unavailable (no processing possible) | |
500.100.402 | Connector is new (no processing possible yet) | |
500.100.403 | Connector is unavailable (no processing possible) | |
500.200.101 | No target account configured for DD transaction | |
600.200.100 | invalid Payment Method | |
600.200.200 | Unsupported Payment Method | |
600.200.201 | Channel/Merchant not configured for this payment method | |
600.200.202 | Channel/Merchant not configured for this payment type | An example of this is if a customer tries to pay with a payment method, for example, an American Express card, when American Express is not configured for your Mobipaid account. Inform your customer that the payment method that they attempted is not supported, and that they should select another payment method and try again. |
600.200.300 | invalid Payment Type | |
600.200.310 | invalid Payment Type for given Payment Method | |
600.200.400 | Unsupported Payment Type | An example of this is if you try to execute a payment type (such as rebill) that is not supported on a specific API or for a certain payment method. |
600.200.500 | Invalid payment data. You are not configured for this currency or sub type (country or brand) | An example of this is if a customer tries to process an American Express card when American Express is not configured for your Mobipaid account, or if you or Mobipaid have blocked cards issued in a particular country. |
600.200.501 | Invalid payment data for Recurring transaction. Merchant or transaction data has wrong recurring configuration. | |
600.200.600 | invalid payment code (type or method) | |
600.200.700 | invalid payment mode (you are not configured for the requested transaction mode) | |
600.200.701 | testMode not allowed | |
600.200.800 | invalid brand for given payment method and payment mode (you are not configured for the requested transaction mode) | |
600.200.810 | invalid return code provided | |
600.300.101 | Merchant key not found | |
600.300.200 | merchant source IP address not whitelisted | |
600.300.210 | merchant notificationUrl not whitelisted | |
600.300.211 | shopperResultUrl not whitelisted | |
800.121.100 | Channel not configured for given source type. Please contact your account manager. | |
800.121.200 | Secure Query is not enabled for this entity. Please contact your account manager. |
Registration validation
Result code | Description | Notes |
---|---|---|
100.150.100 | request contains no Account data and no registration id | |
100.150.101 | invalid format for specified registration id (must be uuid format) | |
100.150.200 | registration does not exist | Mobipaid did not find a stored card for that token. |
100.150.201 | registration is not confirmed yet | |
100.150.202 | registration is already deregistered | You referenced a deleted stored card. |
100.150.203 | registration is not valid, probably initially rejected | When the customer tried to register their card for the payment, they provided the wrong data or no data which results in the issuing bank rejecting the registration. The initial registration phase of the transaction failed, meaning, (1) the registering of the card contained no account holder data, (2) the issuing bank was offline for the initial period of the transaction, or (3) did not pass 3-D Secure resulting in the token not being valid. Try the transaction again, and if it does not succeed, contact your bank for assistance. |
100.150.204 | account registration reference pointed to no registration transaction | |
100.150.205 | referenced registration does not contain an account | |
100.150.300 | payment only allowed with valid initial registration | |
100.350.100 | referenced session is REJECTED (no action possible). | An example of this is if you try to refund a rejected debit transaction. |
100.350.101 | referenced session is CLOSED (no action possible) | |
100.350.200 | undefined session state | |
100.350.201 | referencing a registration through reference id is not applicable for this payment type | |
100.350.301 | confirmation (CF) must be registered (RG) first | |
100.350.302 | session already confirmed (CF) | |
100.350.303 | cannot deregister (DR) unregistered account and/or customer | |
100.350.310 | cannot confirm (CF) session via XML | |
100.350.311 | cannot confirm (CF) on a registration passthrough channel | |
100.350.312 | cannot do passthrough on non-internal connector | |
100.350.313 | registration of this type has to provide confirmation url | |
100.350.314 | customer could not be notified of pin to confirm registration (channel) | |
100.350.315 | customer could not be notified of pin to confirm registration (sending failed) | |
100.350.316 | cannot extend the token (TE) on unregistered account | |
100.350.400 | no or invalid PIN (email/SMS/MicroDeposit authentication) entered | |
100.350.500 | unable to obtain personal (virtual) account - most likely no more accounts available | |
100.350.601 | registration is not allowed to reference another transaction | |
100.350.602 | Registration is not allowed for recurring payment migration |
Job validation
Result code | Description |
---|---|
100.250.100 | job contains no execution information |
100.250.105 | invalid or missing action type |
100.250.106 | invalid or missing duration unit |
100.250.107 | invalid or missing notice unit |
100.250.110 | missing job execution |
100.250.111 | missing job expression |
100.250.120 | invalid execution parameters, combination does not conform to standard |
100.250.121 | invalid execution parameters, hour must be between 0 and 23 |
100.250.122 | invalid execution parameters, minute and seconds must be between 0 and 59 |
100.250.123 | invalid execution parameters, Day of month must be between 1 and 31 |
100.250.124 | invalid execution parameters, month must be between 1 and 12 |
100.250.125 | invalid execution parameters, Day of week must be between 1 and 7 |
100.250.250 | Job tag missing |
100.360.201 | unknown schedule type |
100.360.300 | cannot schedule(SD) unscheduled job |
100.360.303 | cannot deschedule(DS) unscheduled job |
100.360.400 | schedule module not configured for LIVE transaction mode |
Reference validation
Result code | Description | Notes |
---|---|---|
700.100.100 | reference id does not exist | |
700.100.200 | non matching reference amount | |
700.100.300 | invalid amount (probably too large) | |
700.100.400 | referenced payment method does not match with requested payment method | |
700.100.500 | referenced payment currency does not match with requested payment currency | |
700.100.600 | referenced mode does not match with requested payment mode | |
700.100.700 | referenced transaction is of inappropriate type | |
700.100.701 | referenced a DB transaction without explicitly providing an account. Not allowed to used referenced account. | |
700.100.710 | cross-linkage of two transaction-trees | |
700.300.100 | referenced tx can not be refunded, captured or reversed (invalid type) | |
700.300.200 | referenced tx was rejected | |
700.300.300 | referenced tx can not be refunded, captured or reversed (already refunded, captured or reversed) | |
700.300.400 | referenced tx can not be captured (cut off time reached) | |
700.300.500 | chargeback error (multiple chargebacks) | |
700.300.600 | referenced tx can not be refunded or reversed (was chargebacked) | |
700.300.700 | referenced tx can not be reversed (reversal not possible anymore) | |
700.300.800 | referenced tx can not be voided | |
700.400.000 | serious workflow error (call support) | |
700.400.100 | cannot capture (PA value exceeded, PA reverted or invalid workflow?) | The preauthorisation that you are capturing was already captured, you are capturing more than the preauthorised amount, or you are capturing a reversed preauthorisation. |
700.400.101 | cannot capture (Not supported by authorization system) | |
700.400.200 | cannot refund (refund volume exceeded or tx reversed or invalid workflow?) | The transaction that you are refunding was already refunded or reversed, or you are refunding a value greater than the original amount. |
700.400.300 | cannot reverse (already refunded|reversed, invalid workflow or amount exceeded) | The transaction that you are refunding was already refunded or reversed, or you are refunding a value greater than the original amount. |
700.400.400 | cannot chargeback (already chargebacked or invalid workflow?) | |
700.400.402 | chargeback can only be generated internally by the payment system | |
700.400.410 | cannot reverse chargeback (chargeback is already reversed or invalid workflow?) |
Result code | Description | Notes |
---|---|---|
700.400.411 | cannot reverse chargeback or invalid workflow (second chargeback) | |
700.400.420 | cannot reverse chargeback (no chargeback existing or invalid workflow?) | |
700.400.510 | capture needs at least one successful transaction of type (PA) | |
700.400.520 | refund needs at least one successful transaction of type (CP or DB or RB or RC) | You are trying to refund a transaction that was unsuccessful. |
700.400.530 | reversal needs at least one successful transaction of type (CP or DB or RB or PA) | |
700.400.540 | reconciliation needs at least one successful transaction of type (CP or DB or RB) | |
700.400.550 | chargeback needs at least one successful transaction of type (CP or DB or RB) | |
700.400.560 | receipt needs at least one successful transaction of type (PA or CP or DB or RB) | |
700.400.561 | receipt on a registration needs a successful registration in state 'OPEN' | |
700.400.562 | receipts are configured to be generated only internally by the payment system | |
700.400.565 | finalize needs at least one successful transaction of type (PA or DB) | |
700.400.570 | cannot reference a waiting/pending transaction | You are trying te execute a transaction based on a transaction that is still processing, for example, you are trying to refund a transaction, but the debit is not complete. |
700.400.580 | cannot find transaction | |
700.400.590 | installment needs at least one successful transaction of type (DB or PA) | |
700.400.600 | finalize needs at least one successful transaction of type (IN, DB, PA or CD) | |
700.400.700 | initial and referencing channel-ids do not match | An example of this is if you try to refund a transaction on a different channel from the original debit, or try to capture and authorise on different channels. |
700.450.001 | cannot transfer money from one account to the same account | |
700.500.001 | referenced session contains too many transactions | Transaction failed due to an internal error. |
700.500.002 | capture or preauthorization appears too late in referenced session | |
700.500.003 | test accounts not allowed in production | |
700.500.004 | cannot refer a transaction which contains deleted customer information |
Format validation
Result code | Description | Notes |
---|---|---|
100.300.101 | invalid test mode (please use LIVE or INTEGRATOR_TEST or CONNECTOR_TEST) | |
100.300.200 | transaction id too long | |
100.300.300 | invalid reference id | An example of this is if a refund does not reference a successful debit. |
100.300.400 | missing or invalid channel id | Your merchant credentials are not correct in the transaction request. |
100.300.401 | missing or invalid sender id | |
100.300.402 | missing or invalid version | |
100.300.501 | invalid response id | |
100.300.600 | invalid or missing user login | |
100.300.601 | invalid or missing user pwd | |
100.300.700 | invalid relevance | |
100.300.701 | invalid relevance for given payment type | |
100.370.100 | transaction declined | |
100.370.101 | responseUrl not set in Transaction/Frontend | |
100.370.102 | malformed responseUrl in Transaction/Frontend | |
100.370.110 | transaction must be executed for German address | |
100.370.111 | system error( possible incorrect/missing input data) | |
100.370.121 | no or unknown ECI Type defined in Authentication | |
100.370.122 | parameter with null key provided in 3DSecure Authentication | |
100.370.123 | no or unknown verification type defined in 3DSecure Authentication | |
100.370.124 | unknown parameter key in 3DSecure Authentication | |
100.370.125 | Invalid 3DSecure Verification_ID. Must have Base64 encoding a Length of 28 digits | |
100.370.131 | no or unknown authentication type defined in Transaction/Authentication@type | |
100.370.132 | no result indicator defined Transaction/Authentication/resultIndicator | |
100.500.101 | payment method invalid | |
100.500.201 | payment type invalid | |
100.500.301 | invalid due date | |
100.500.302 | invalid mandate date of signature | |
100.500.303 | invalid mandate id | |
100.500.304 | invalid mandate external id | |
100.600.500 | usage field too long | |
100.900.500 | invalid recurrence mode | |
200.100.101 | invalid Request Message. No valid XML. XML must be url-encoded! maybe it contains a not encoded ampersand or something similar. | |
200.100.102 | invalid Request. XML load missing (XML string must be sent within parameter 'load') | |
200.100.103 | invalid Request Message. The request contains structural errors | |
200.100.150 | transaction of multirequest not processed because of subsequent problems | |
200.100.151 | multi-request is allowed with a maximum of 10 transactions only | |
200.100.199 | Wrong Web Interface / URL used. Please check out the Tech Quick Start Doc Chapter 3. | |
200.100.201 | invalid Request/Transaction tag (not present or [partially] empty) | |
200.100.300 | invalid Request/Transaction/Payment tag (no or invalid code specified) | |
200.100.301 | invalid Request/Transaction/Payment tag (not present or [partially] empty) | |
200.100.302 | invalid Request/Transaction/Payment/Presentation tag (not present or [partially] empty) | Your merchant credentials are not correct in the transaction request. |
200.100.401 | invalid Request/Transaction/Account tag (not present or [partially] empty) | |
200.100.402 | invalid Request/Transaction/Account(Customer, Relevance) tag (one of Account/Customer/Relevance must be present) | |
200.100.403 | invalid Request/Transaction/Analysis tag (Criterions must have a name and value) | |
200.100.404 | invalid Request/Transaction/Account (must not be present) | |
200.100.501 | invalid or missing customer | |
200.100.502 | invalid Request/Transaction/Customer/Name tag (not present or [partially] empty) | |
200.100.503 | invalid Request/Transaction/Customer/Contact tag (not present or [partially] empty) | |
200.100.504 | invalid Request/Transaction/Customer/Address tag (not present or [partially] empty) | |
200.100.601 | invalid Request/Transaction/(ApplePay|GooglePay) tag (not present or [partially] empty) | |
200.100.602 | invalid Request/Transaction/(ApplePay|GooglePay)/PaymentToken tag (not present or [partially] empty) | |
200.100.603 | invalid Request/Transaction/(ApplePay|GooglePay)/PaymentToken tag (decryption error) | |
200.200.106 | duplicate transaction. Please verify that the UUID is unique | |
200.300.403 | Invalid HTTP method | |
200.300.404 | invalid or missing parameter | You omitted a required parameter (for example, the transaction amount) or submitted an invalid parameter. If you see this error on the Mobipaid Dashboard, contact support for assistance. |
200.300.405 | Duplicate entity | |
200.300.406 | Entity not found | |
200.300.407 | Entity not specific enough | |
800.900.100 | sender authorization failed | |
800.900.101 | invalid email address (probably invalid syntax) | |
800.900.200 | invalid phone number (has to start with a digit or a '+', at least 7 and max 25 chars long) | |
800.900.201 | Unknown channel | The entity ID in the payment request is wrong. |
800.900.300 | Invalid authentication information | The authentication password is wrong. |
800.900.301 | user authorization failed, user has no sufficient rights to process transaction | |
800.900.302 | Authorization failed | |
800.900.303 | No token created | |
800.900.399 | Secure Registration Problem | |
800.900.401 | Invalid IP number | |
800.900.450 | Invalid birthdate |
Address validation
Result code | Description |
---|---|
100.800.100 | request contains no street |
100.800.101 | The combination of street1 and street2 must not exceed 201 characters. |
100.800.102 | The combination of street1 and street2 must not contain only numbers. |
100.800.200 | request contains no zip |
100.800.201 | zip too long |
100.800.202 | invalid zip |
100.800.300 | request contains no city |
100.800.301 | city too long |
100.800.302 | invalid city |
100.800.400 | invalid state/country combination |
100.800.401 | state too long |
100.800.500 | request contains no country |
100.800.501 | invalid country |
Contact validation
Result code | Description |
---|---|
100.700.100 | customer.surname may not be null |
100.700.101 | customer.surname length must be between 0 and 50 |
100.700.200 | customer.givenName may not be null |
100.700.201 | customer.givenName length must be between 0 and 50 |
100.700.300 | invalid salutation |
100.700.400 | invalid title |
100.700.500 | company name too long |
100.700.800 | identity contains no or invalid 'paper' |
100.700.801 | identity contains no or invalid identification value |
100.700.802 | identification value too long |
100.700.810 | specify at least one identity |
100.900.100 | request contains no email address |
100.900.101 | invalid email address (probably invalid syntax) |
100.900.105 | email address too long (max 50 chars) |
100.900.200 | invalid phone number (has to start with a digit or a '+', at least 7 and max 25 chars long) |
100.900.300 | invalid mobile phone number (has to start with a digit or a '+', at least 7 and max 25 chars long) |
100.900.301 | mobile phone number mandatory |
100.900.400 | request contains no ip number |
100.900.401 | invalid ip number |
100.900.450 | invalid birthdate |
Account validation
Result code | Description | Notes |
---|---|---|
100.100.100 | request contains no creditcard, bank account number or bank name | |
100.100.101 | invalid creditcard, bank account number or bank name | The transaction failed because, (1) you entered the wrong credit card number, bank account number, or bank name or (2) your credit card is not activated for online transactions. Try again or contact your bank. |
100.100.104 | invalid unique id / root unique id | |
100.100.200 | request contains no month | |
100.100.201 | invalid month | |
100.100.300 | request contains no year | |
100.100.301 | invalid year | |
100.100.303 | card expired | The transaction failed because the customer used an expired card. The customer should try again with a valid card. |
100.100.304 | card not yet valid | |
100.100.305 | invalid expiration date format | |
100.100.400 | request contains no cc/bank account holder | |
100.100.401 | cc/bank account holder too short or too long | |
100.100.402 | cc/bank account holder not valid | |
100.100.500 | request contains no credit card brand | |
100.100.501 | invalid credit card brand | |
100.100.600 | empty CVV for Visa,MASTER, AMEX not allowed | |
100.100.601 | invalid CVV/brand combination | |
100.100.650 | empty CreditCardIssueNumber for MAESTRO not allowed | |
100.100.651 | invalid CreditCardIssueNumber | |
100.100.700 | invalid cc number/brand combination | Your customer might be entering all the digits found on the reverse side of their card, instead of only the last three digits for Visa and Mastercard or the last four digits for Amex and Diners. Remember that by default, Amex is not activated unless you have specifically requested it. If you receive this error often, Mobipaid recommends showing an image of what a CVV is and specifying to customers during the checkout the amount of digits they need to enter. Your customer's transaction failed because, (1) you entered the wrong credit card number, CVV, or CVC, (2) the credit card is not activated for online transactions, or (3) the credit card type is not accepted. Provide Mobipaid with the issuing bank and the country of issue of the credit card for further assistance. |
100.100.701 | suspecting fraud, this card may not be processed | |
100.200.100 | bank account contains no or invalid country | |
100.200.103 | bank account has invalid bankcode/name account number combination | |
100.200.104 | bank account has invalid account number format | |
100.200.200 | bank account needs to be registered and confirmed first. Country is mandate based. | |
100.210.101 | virtual account contains no or invalid Id | |
100.210.102 | virtual account contains no or invalid brand | |
100.211.101 | user account contains no or invalid Id | |
100.211.102 | user account contains no or invalid brand | |
100.211.103 | no password defined for user account | |
100.211.104 | password does not meet safety requirements (needs 8 digits at least and must contain letters and numbers) | |
100.211.105 | wallet id has to be a valid email address | |
100.211.106 | voucher ids have 32 digits always | |
100.212.101 | wallet account registration must not have an initial balance | |
100.212.102 | wallet account contains no or invalid brand | |
100.212.103 | wallet account payment transaction needs to reference a registration |
Amount validation
Result code | Description |
---|---|
100.550.300 | request contains no amount or too low amount |
100.550.301 | amount too large |
100.550.303 | amount format invalid (only two decimals allowed). |
100.550.310 | amount exceeds limit for the registered account. |
100.550.311 | exceeding account balance |
100.550.312 | Amount is outside allowed ticket size boundaries |
100.550.400 | request contains no currency |
100.550.401 | invalid currency |
100.550.601 | risk amount too large |
100.550.603 | risk amount format invalid (only two decimals allowed) |
100.550.605 | risk amount is smaller than amount (it must be equal or bigger than amount) |
100.550.701 | amounts not matched |
100.550.702 | currencies not matched |
Risk management
Result code | Description |
---|---|
100.380.101 | transaction contains no risk management part |
100.380.201 | no risk management process type specified |
100.380.305 | no frontend information provided for asynchronous transaction |
100.380.306 | no authentication data provided in risk management transaction |
Chargebacks
Result code | Description |
---|---|
000.100.200 | Reason not Specified |
000.100.201 | Account or Bank Details Incorrect |
000.100.202 | Account Closed |
000.100.203 | Insufficient Funds |
000.100.204 | Mandate not Valid |
000.100.205 | Mandate Cancelled |
000.100.206 | Revocation or Dispute |
000.100.207 | Cancellation in Clearing Network |
000.100.208 | Account Blocked |
000.100.209 | Account does not exist |
000.100.210 | Invalid Amount |
000.100.211 | Transaction succeeded (amount of transaction is smaller than amount of pre-authorization) |
000.100.212 | Transaction succeeded (amount of transaction is greater than amount of pre-authorization) |
000.100.220 | Fraudulent Transaction |
000.100.221 | Merchandise Not Received |
000.100.222 | Transaction Not Recognized By Cardholder |
000.100.223 | Service Not Rendered |
000.100.224 | Duplicate Processing |
000.100.225 | Credit Not Processed |
000.100.226 | Cannot be settled |
000.100.227 | Configuration Issue |
000.100.228 | Temporary Communication Error - Retry |
000.100.229 | Incorrect Instructions |
000.100.230 | Unauthorised Charge |
000.100.231 | Late Representment |
000.100.232 | Liability Shift |
000.100.233 | Authorization-Related Chargeback |
000.100.234 | Non receipt of merchandise |
000.100.299 | Unspecified (Technical) |
Fetch your payment history from Mobipaid in order to show how many payments have been done through our application.
Our payment history API support fetching payment history and refund a paid transaction
You can get a list of payment history using our GET method.
Here are the available query string parameters to help you fetch the right payment history:
Query | Description |
---|---|
start_date
|
string
Start search for payment history from the date entered into this parameter. The format is "YYYY-MM-DD" |
end_date
required with condition |
string
You need to specify the end_date if you specify the start_date. It use the same format of "YYYY-MM-DD" |
page
|
number
Select the payment history |
limit
|
number
Limit the amount of items fetched from payment history. The default value is 10 |
keywords
|
string
Search for a payment history that has the specified keyword in email, mobile number or reference number |
user_id | string Search for a payment history that has the specified by user id |
Request URL
https://test.mobipaid.io/v2/payments?{optional_parameter}Examples
curl -X GET https://test.mobipaid.io/v2/payments?{optional parameters here} \ --header "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0"
import requests url = "https://test.mobipaid.io/v2/payments?limit=5&page=1" payload = {} headers = { 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0', 'Content-Type': 'application/json' } response = requests.request("GET", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'GET', 'url': 'https://test.mobipaid.io/v2/payments?limit=5&page=1', 'headers': { 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0', 'Content-Type': 'application/json' } }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/payments?limit=5&page=1", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0", "Content-Type: application/json" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" url = URI("https://test.mobipaid.io/v2/payments?limit=5&page=1") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" request["Content-Type"] = "application/json" response = https.request(request) puts response.read_body
Result Format
{ "payments": [ { "payment_id": "8ac7a4a2735bed2301736a2e1cd40318", "reference_payment_id": null, "transaction_id": "1130OO", "transaction_type": "once-off", "reference_number": "123", "mobile_number": "+12345678901", "email": "email@domain.com", "amount": 1500.12, "currency": "ZAR", "payment_type": "CC.PA", "payment_date": "2020-07-20T03:04:33.000Z", "status": "success", "result_description": "Request successfully processed in 'Merchant in Integrator Test Mode'", "payment_url": "https://s.mpaid.us/sMBaf", "transaction_date": "2020-07-20T03:03:54.000Z", "request_detail": { "tip_amount": 0, "tax_percentage": "0.00 %", "tax_amount": 0, "additional_info": {}, "additional_info_text": {}, "additional_info_dropdown": {}, "cart_items": {} }, "user_id": 18 }, { "payment_id": "8ac7a4a1730e6e3e017313846dd54eeb", "reference_payment_id": null, "transaction_id": "11PO", "transaction_type": "pos_payment", "reference_number": "MP1", "mobile_number": null, "email": null, "amount": 50.33, "currency": "EUR", "payment_type": "CC.DB", "payment_date": "2020-07-03T07:11:52.000Z", "status": "failed", "result_description": "Invalid payment data. You are not configured for this currency or sub type (country or brand)", "payment_url": "https://sandbox-pay.mobipaid.com/pos_link/GpWv30S-OqDAtU3tOjO6NQ", "transaction_date": "2020-04-03T06:21:44.000Z", "request_detail": { "tip_amount": 0, "tax_percentage": "0.00 %", "tax_amount": 0, "additional_info": {}, "additional_info_text": { "text": "asd" }, "additional_info_dropdown": { "size": "S" }, "cart_items": [ { "sku": "-", "name": "Blue Shirt XL", "qty": 3, "unit_price": 2 }, { "sku": "456", "name": "Black Short Pant XL", "qty": 2, "unit_price": 22.4 } ] } }, "user_id": 18 ], "page": 1, "limit": 2, "start_date": "2020-07-01", "end_date": "2020-08-30", "page_count": 3, "total_count": 5 }
{ "message": "Forbidden" }
Request Samples
Fetch a single payment history from Mobipaid
You can use the same GET method like in Payment History, but you have to add payment_id in the route parameter.
Request URL
https://test.mobipaid.io/v2/payments/{payment_id}Examples
curl -X GET https://test.mobipaid.io/v2/payments/{payment_id} \ --header "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0"
import requests url = "https://test.mobipaid.io/v2/payments/8ac7a4a26ff5c0c4016ff617ed2128fa99999999" payload = {} headers = { 'Content-Type': ' application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("GET", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'GET', 'url': 'https://test.mobipaid.io/v2/payments/8ac7a4a26ff5c0c4016ff617ed2128fa99999999', 'headers': { 'Content-Type': ' application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/payments/8ac7a4a26ff5c0c4016ff617ed2128fa99999999", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" url = URI("https://test.mobipaid.io/v2/payments/8ac7a4a26ff5c0c4016ff617ed2128fa99999999") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Get.new(url) request["Content-Type"] = " application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" response = https.request(request) puts response.read_body
Result Format
{ "payment": { "payment_id": "8ac7a4a1730e6e3e017313846dd54eeb", "reference_payment_id": null, "transaction_id": "11PO", "transaction_type": "pos_payment", "reference_number": "MP1", "mobile_number": null, "email": null, "amount": 50.33, "currency": "EUR", "payment_type": "CC.DB", "payment_date": "2020-07-03T07:11:52.000Z", "status": "failed", "result_description": "Invalid payment data. You are not configured for this currency or sub type (country or brand)", "payment_url": "https://sandbox-pay.mobipaid.com/pos_link/GpWv30S-OqDAtU3tOjO6NQ", "transaction_date": "2020-04-03T06:21:44.000Z", "request_detail": { "tip_amount": 0, "tax_percentage": "0.00 %", "tax_amount": 0, "additional_info": {}, "additional_info_text": { "text": "asd" }, "additional_info_dropdown": { "size": "S" }, "cart_items": [ { "sku": "-", "name": "Blue Shirt XL", "qty": 3, "unit_price": 2 }, { "sku": "456", "name": "Black Short Pant XL", "qty": 2, "unit_price": 22.4 } ] } } }
{ "message": "Your Payment history data is not found", "result": "failed" }
{ "message": "Forbidden" }
Request Samples
Refund a paid payment history from Mobipaid. You have to include the payment_id of the payment history you want to refund.
Body Params
Field | Description |
---|---|
amount
required |
number
The amount to be refunded to the customer |
string
A refund receipt will be send to this email address if you add it. |
|
mobile_number |
string
A refund receipt will be send to this mobile number if you add it. |
Request URL
https://test.mobipaid.io/v2/refunds/{unique_id}Request Body
{ "email": "example@example.com", "amount": 1, "mobile_number": "+12345678" }
Examples
curl -X POST https://test.mobipaid.io/v2/refunds/{payment_id} \ --header "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0"
import requests url = "https://test.mobipaid.io/v2/refunds" payload = "{\n\"email\": \"example@example.com\",\n\"amount\": 1,\n\"mobile_number\": \"+12345678\"\n}\n\n" headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'POST', 'url': 'https://test.mobipaid.io/v2/refunds', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' }, body: JSON.stringify({"email":"example@example.com","amount":1,"mobile_number":"+12345678"}) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/refunds", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS =>"{\n\"email\": \"example@example.com\",\n\"amount\": 1,\n\"mobile_number\": \"+12345678\"\n}\n\n", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" url = URI("https://test.mobipaid.io/v2/refunds") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" request.body = "{\n\"email\": \"example@example.com\",\n\"amount\": 1,\n\"mobile_number\": \"+12345678\"\n}\n\n" response = https.request(request) puts response.read_body
Result Format
{ "amount": 45, "balance": 31, "currency": "ZAR", "email": "example@example.com", "mobile_number": "", "payment_id": "8ac7a49f70664e4f01706677b1e64a2e", "ref_number": "000211582016283", "refund_date": "2020-02-21T06:38:05.000Z", "refunded_amount": 1, "shipping_information": true, "status": "refund", "transaction_id": 495, "transaction_type": "once-off" }
{ "result": "failed", "message": "Payment is not found." }
{ "is_valid": false, "error_field": "amount", "error_message": "amount is required.", "result": "failed" }
Request Samples
Capture a pre-authorization payment. You have to include the payment_id of the payment history you want to capture.
Body Params
Field | Description |
---|---|
amount
required |
number
The amount to be captured, cannot more than the actual payment. |
Request URL
https://test.mobipaid.io/v2/captures/{payment_id}Request Body
{ "amount": 10 }
Examples
curl -X POST https://test.mobipaid.io/v2/captures/8ac7a49f7297dc2701729954fc4c1f71 \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" \ --data '{ "amount": 10 }'
import requests import json url = "https://test.mobipaid.io/v2/captures/8ac7a49f7297dc2701729954fc4c1f71" payload = json.dumps( { "amount": 10 } ) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'POST', 'url': 'https://test.mobipaid.io/v2/captures/8ac7a49f7297dc2701729954fc4c1f71', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' }, body: JSON.stringify({ "amount": 10 }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "amount" => 10 ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/captures/8ac7a49f7297dc2701729954fc4c1f71", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require 'json' url = URI("https://test.mobipaid.io/v2/captures/8ac7a49f7297dc2701729954fc4c1f71") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" request.body = { amount: 10 }.to_json response = https.request(request) puts response.read_body
Result Format
{ "transaction_type": "once-off", "payment_id": "8ac7a4a07297e42e01729955d6f40fa2", "transaction_id": "171OO", "captured_amount": 10, "amount": 1500.12, "balance": 10, "currency": "ZAR", "ref_number": "123", "shipping_information": true, "status": "capture", "capture_date": "2020-06-09T13:47:19.000Z" }
{ "result": "failed", "message": "Payment is not found." }
Request Samples
Cancel a subscription that is already paid in the payment history with type scheduled. You have to include the payment_id of the scheduled payment in the payment history in order to cancel it.
Request URL
https://live.mobipaid.io/v2/payments/subscription/{payment_id}Examples
curl -X DELETE https://live.mobipaid.io/v2/payments/subscription/{payment_id} \ --header "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0"
import requests import json url = "https://live.mobipaid.io/v2/payments/subscription/8ac7a49f7297dc2701729954fc4c1f71" payload = {} headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_A83ucDEekfzqOATsxfrj' } response = requests.request("DELETE", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "DELETE", url: "https://live.mobipaid.io/v2/payments/subscription/8ac7a4a07532805d017540b10b420dbd", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" }, }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://live.mobipaid.io/v2/payments/subscription/8ac7a4a07532805d017540b10b420dbd", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "DELETE", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://live.mobipaid.io/v2/payments/subscription/8ac7a4a07532805d017540b10b420dbd") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Delete.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" response = https.request(request) puts response.read_body
Result Format
{ "transaction_type": "scheduled", "payment_id": "8ac7a4a2753280600175404c232c4189", "email": "whibi9999@gmail.com", "mobile_number": "+6282115888911", "amount": 56, "currency": "ZAR", "ref_number": "ref001", "status": "subscription_ended" }
{ "result": "failed", "message": "Payment is not found." }
Request Samples
Reverse a paid payment. You have to include the payment_id of the specific payment you want reversed.
Body Params
Field | Description |
---|---|
email
|
string
A reversal receipt will be sent to this email address if you add it. |
mobile_number
|
string
A reversal receipt will be sent to this mobile number if you add it. |
Request URL
https://test.mobipaid.io/v2/reversal/{payment_id}Request Body
{ "email": "example@example.com", "mobile_number": "+12345678" }
Examples
curl -X POST https://test.mobipaid.io/v2/reversal/8ac7a49f7297dc2701729954fc4c1f71 \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_A83ucDEekfzqOATsxfrj" \ --data '{ "email" : "example@example.com", "mobile_number: "+12345678" }'
import requests url = "https://test.mobipaid.io/v2/reversal/{payment_id}" payload = "{\n\"email\": \"example@example.com\",\n\"mobile_number\": \"+12345678\"\n}\n\n" headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'POST', 'url': 'https://test.mobipaid.io/v2/reversal/{payment_id}', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' }, body: JSON.stringify({"email":"example@example.com","mobile_number":"+12345678"}) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/reversal/{payment_id}", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS =>"{\n\"email\": \"example@example.com\",\n\"mobile_number\": \"+12345678\"\n}\n\n", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" url = URI("https://test.mobipaid.io/v2/reversal/{payment_id}") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" request.body = "{\n\"email\": \"example@example.com\",\n\"mobile_number\": \"+12345678\"\n}\n\n" response = https.request(request) puts response.read_body
Result Format
{ "transaction_type": "once-off", "payment_id": "8ac7a4a27d452ef8017d45f8eb6a434b", "transaction_id": "2199496OO", "email": "example@example.com", "mobile_number": "+12345678", "reversal_amount": 4.98, "amount": 4.98, "balance": 0, "currency": "USD", "ref_number": "", "status": "reversal", "reversal_date": "2021-11-22T04:48:00.000Z" }
{ "result": "failed", "message": "Payment is not found." }
Request Samples
Create a POS payment link with this feature.
We support Credit Card, Direct Debit, Paypal, Apple Pay, Google Pay, Nedbank, etc. With mobipaid wallet in place, customer can pay quickly with payment options that has been saved.
You can create one POS link for many payments.
Create a POS payment link for the merchant. One merchant can only have one POS link.
Body Params
Field | Description |
---|---|
currency
 |
array
The currency of this payment request in 3 digit ISO format Example: ["USD","ZAR"] |
redirect_url
 |
string
After payment, we will redirect to this URL. If empty, we will show the receipt page instead. Example: "http://mymobipaidmerchant.com/receipt/" |
response_url
 |
string
Response_url is the URL where the customer will get the payment result. After the transaction is paid, the payment response will be posted to the response_url. Example: "http://mymobipaidmerchant.com/response/" |
cancel_url
 |
string
The url where the customer will redirect when customer click cancels button on the payment page. Example: "https://mywebsite.com" |
tax_id
 |
string
Tax profile ID to calculate the tax amount for this payment. If it does not exist, the amount of value will be tax-free. |
additional_info
 |
array of object
Add additional notes for this payment. The format example of each object : {"name":"justInfo", "value":"justiinfo value"} |
additional_info_text
 |
array of object
Enable the customer to input additional info using a text input. The format example of each object : {"name":"infoText", "placeholder":"enter your infoText","required":true/false} |
additional_info_dropdown
 |
array of object
Enable the customer to input additional info by selecting an option from a select input. The format example of each object : {"name":"yourOption", "options": "option1,option2,option3", "required":true/false} |
tip_enabled
 |
boolean
Use "true" if you want the customer to be able to input the tip amount. |
moto_enabled
 |
boolean
Enable MOTO card mode which has no additional authentication on payment widget |
share_button_enabled
 |
boolean
Enable share button on the payment page. Customer will be able to share the payment request to social media such as Facebook, Twitter, etc |
auto_generate_ref_number
 |
boolean
Use "true" if you want the payment reference number to be auto-generated. Else, the customer will need to input reference number manually. |
ref_number_suffix
 |
number
Add a suffix to the reference number when the reference number is auto-generated. |
ref_number_prefix
 |
string
Add a prefix to reference number when the reference number is auto-generated. |
payment_methods
 |
array
Add optional payment methods that can be used to pay this request. You can add "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT" or "AMEX" in a single array. |
repeat_payment
 |
boolean
Use "true" if you want the customer to be able to make a recurring payment. |
Request URL
https://test.mobipaid.io/v2/posRequest Body
{ "redirect_url": "https://mobipaid.com", "response_url": "https://yourshop.com/response_handler", "cancel_url": "https://yourshop.com", "currency": ["ZAR", "USD", "EUR"], "tax_id": "", "additional_info": [ {"name": "Product", "value": "Shirt"}, {"name":"Color", "value": "Red"} ], "additional_info_text": [ {"name": "text" , "placeholder" : "input text on front", "required":true} ], "additional_info_dropdown": [ {"name": "size", "options": "S, M, L, XL", "required":true} ], "tip_enabled": true, "moto_enabled": true, "share_button_enabled": true, "auto_generate_ref_number": true, "ref_number_suffix": 1, "ref_number_prefix": "MP", "payment_methods": ["GOOGLE_PAY", "APPLE_PAY", "NEDBANK_EFT", "AMEX"] }
Examples
curl -X POST https://test.mobipaid.io/v2/pos \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" \ --data '{ "redirect_url": "https://mobipaid.com", "response_url": "https://yourshop.com/response_handler", "cancel_url": "https://yourshop.com", "currency": ["ZAR", "USD", "EUR"], "tax_id": "", "additional_info": [ {"name": "Product", "value": "Shirt"}, {"name":"Color", "value": "Red"} ], "additional_info_text": [ {"name": "text" , "placeholder" : "input text on front", "required":true} ], "additional_info_dropdown": [ {"name": "size", "options": "S, M, L, XL", "required":true} ], "tip_enabled": true, "moto_enabled": true, "share_button_enabled": true, "auto_generate_ref_number": true, "ref_number_suffix": 1, "ref_number_prefix": "MP", "payment_methods": ["GOOGLE_PAY", "APPLE_PAY", "NEDBANK_EFT","AMEX"] }'
import requests import json url = "https://test.mobipaid.io/v2/pos" payload = json.dumps( { "redirect_url": "https://mobipaid.com", "response_url": "https://yourshop.com/response_handler", "cancel_url": "https://yourshop.com", "currency": ["ZAR", "USD", "EUR"], "tax_id": "", "additional_info": [ {"name": "Product", "value": "Shirt"}, {"name":"Color", "value": "Red"} ], "additional_info_text": [ {"name": "text" , "placeholder" : "input text on front", "required":true} ], "additional_info_dropdown": [ {"name": "size", "options": "S, M, L, XL", "required":true} ], "tip_enabled": true, "moto_enabled": true, "share_button_enabled": true, "auto_generate_ref_number": true, "ref_number_suffix": 1, "ref_number_prefix": "MP", "payment_methods": ["GOOGLE_PAY", "APPLE_PAY", "NEDBANK_EFT","AMEX"] } ) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "POST", url: "https://test.mobipaid.io/v2/pos", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" }, body: JSON.stringify({ redirect_url: "https://mobipaid.com", response_url: "https://yourshop.com/response_handler", cancel_url: "https://yourshop.com", currency: ["ZAR", "USD", "EUR"], tax_id: "", additional_info: [ {"name": "Product", "value": "Shirt"}, {"name":"Color", "value": "Red"} ], additional_info_text: [ {"name": "text" , "placeholder" : "input text on front", "required":true} ], additional_info_dropdown: [ {"name": "size", "options": "S, M, L, XL", "required":true} ], tip_enabled: true, moto_enabled: true, share_button_enabled: true, auto_generate_ref_number: true, ref_number_suffix: 1, ref_number_prefix: "MP", payment_methods: ["GOOGLE_PAY", "APPLE_PAY", "NEDBANK_EFT","AMEX"] }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "redirect_url" => "https://mobipaid.com", "response_url" => "https://yourshop.com/response_handler", "cancel_url" => "https://yourshop.com", "currency" => ["ZAR", "USD", "EUR"], "tax_id" => "", "additional_info" => array( array("name" => "Product", "value" => "Shirt"), array("name" => "Color", "value" => "Red") ), "additional_info_text" => array( array("name" => "text", "placeholder" => "input text on front", "required" => true) ), "additional_info_dropdown" => array( array("name" => "size", "options" => "S, M, L, XL", "required" => true) ), "tip_enabled" => true, "moto_enabled" => true, "share_button_enabled" => true, "auto_generate_ref_number" => true, "ref_number_suffix" => 1, "ref_number_prefix" => "MP", "payment_methods" => ["GOOGLE_PAY", "APPLE_PAY", "NEDBANK_EFT","AMEX"] ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/pos", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://test.mobipaid.io/v2/pos") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" request.body = { redirect_url: "https://mobipaid.com", response_url: "https://yourshop.com/response_handler", cancel_url: "https://yourshop.com", currency: ["ZAR", "USD", "EUR"], tax_id: "", additional_info: [ {"name": "Product", "value": "Shirt"}, {"name":"Color", "value": "Red"} ], additional_info_text: [ {"name": "text" , "placeholder" : "input text on front", "required":true} ], additional_info_dropdown: [ {"name": "size", "options": "S, M, L, XL", "required":true} ], tip_enabled: true, moto_enabled: true, share_button_enabled: true, auto_generate_ref_number: true, ref_number_suffix: 1, ref_number_prefix: "MP", payment_methods: ["GOOGLE_PAY", "APPLE_PAY", "NEDBANK_EFT","AMEX"] }.to_json response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "auto_generate_ref_number": true, "ref_number_prefix": "MP", "ref_number_suffix": 1, "additional_info": [ { "name": "Product", "value": "Shirt" }, { "name": "Color", "value": "Red" } ], "additional_info_text": [ { "name": "text", "placeholder": "input text on front", "required": true } ], "additional_info_dropdown": [ { "name": "size", "options": "S, M, L, XL", "required": true } ], "tip_enabled": true, "currency": [ "ZAR", "USD", "EUR" ], "moto_enabled": true, "tax_id": "", "payment_methods": [ "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT", "AMEX" ], "cancel_url": "https://yourshop.com", "response_url": "https://yourshop.com/response_handler", "redirect_url": "https://mobipaid.com", "db_transaction_id": "111PO", "db_payment_url": "https://sandbox-pay.mobipaid.com/pos_link/FIIZBbASgUeJ7sRrJE3eRA", "db_short_url": "https://s.mpaid.us/F7QSR", "db_qrcode_link": "https://mp-qrcodes.s3.amazonaws.com/stage/pos/httpssmpaidusF7QSR.png", "pa_transaction_id": "112PO", "pa_payment_url": "https://sandbox-pay.mobipaid.com/pos_link/X2x1fAMib0N0LsidbiB9xw", "pa_short_url": "https://s.mpaid.us/rby8Z", "pa_qrcode_link": "https://mp-qrcodes.s3.amazonaws.com/stage/pos/httpssmpaidusrby8Z.png" }
{ "is_valid": false, "error_field": "tax_id", "error_message": "tax_id is not valid" }
Request Samples
Update an existing POS payment link for the merchant.
Body Params
Field | Description |
---|---|
currency
 |
array
The currency of this payment request in 3 digit ISO format Example: ["USD","ZAR"] |
redirect_url
 |
string
After payment we will redirect to this URL. If empty, we will show the receipt page instead. Example: "http://mymobipaidmerchant.com/receipt/" |
response_url
 |
string
Response_url is the url where customer will get the payment result. After the transaction is paid, the payment response will be posted to the response_url. Example: "http://mymobipaidmerchant.com/response/" |
cancel_url
 |
string
The url where customer will redirected when customer click cancel button on payment page. Example: "https://mywebsite.com" |
tax_id
 |
string
Tax profile ID to calculate the tax amount for this payment. If it does not exist, the amount value will be tax free. |
additional_info
 |
array of object
Add additional notes for this payment. The format example of each object : {"name":"justInfo", "value":"justiinfo value"} |
additional_info_text
 |
array of object
Enable customer to input additional info using a text input. The format example of each object : {"name":"infoText", "placeholder":"enter your infoText","required":true/false} |
additional_info_dropdown
 |
array of object
Enable customer to input additional info by selecting an option from a select input. The format example of each object : {"name":"yourOption", "options": "option1,option2,option3", "required":true/false} |
tip_enabled
 |
boolean
Use "true" if you want the customer to be able to input tip amount. |
moto_enabled
 |
boolean
Enable MOTO card mode which have no additional authentication on payment widget |
share_button_enabled
 |
boolean
Enable share button on payment page. Customer will be able to share the payment request to social media such as Facebook, Twitter, etc |
auto_generate_ref_number
 |
boolean
Use "true" if you want the payment reference number to be auto generated. Else, customer will need to input reference number manually. |
ref_number_suffix
 |
number
Add a suffix to reference number when reference number is auto generated. |
ref_number_prefix
 |
string
Add a prefix to reference number when reference number is auto generated. |
payment_methods
 |
array
Add optional payment methods that can be used to pay this request. You can add "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT" or "AMEX" in a single array. |
Request URL
https://test.mobipaid.io/v2/posRequest Body
{ "redirect_url": "https://mobipaid.com", "response_url": "https://yourshop.com/response_handler", "cancel_url": "https://yourshop.com", "currency": ["ZAR", "USD", "EUR"], "tax_id": "", "additional_info": [ {"name": "Product", "value": "Shirt"}, {"name":"Color", "value": "Red"} ], "additional_info_text": [ {"name": "text" , "placeholder" : "input text on front", "required":true} ], "additional_info_dropdown": [ {"name": "size", "options": "S, M, L, XL", "required":true} ], "tip_enabled": true, "moto_enabled": true, "share_button_enabled": true, "auto_generate_ref_number": true, "ref_number_suffix": 1, "ref_number_prefix": "MP", "payment_methods": ["GOOGLE_PAY", "APPLE_PAY", "NEDBANK_EFT", "AMEX"] }
Examples
curl -X PUT https://test.mobipaid.io/v2/pos \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" \ --data '{ "redirect_url": "https://mobipaid.com", "response_url": "https://yourshop.com/response_handler", "cancel_url": "https://yourshop.com", "currency": ["ZAR", "USD", "EUR"], "tax_id": "", "additional_info": [ {"name": "Product", "value": "Shirt"}, {"name":"Color", "value": "Red"} ], "additional_info_text": [ {"name": "text" , "placeholder" : "input text on front", "required":true} ], "additional_info_dropdown": [ {"name": "size", "options": "S, M, L, XL", "required":true} ], "tip_enabled": true, "moto_enabled": true, "share_button_enabled": true, "auto_generate_ref_number": true, "ref_number_suffix": 1, "ref_number_prefix": "MP", "payment_methods": ["GOOGLE_PAY", "APPLE_PAY", "NEDBANK_EFT","AMEX"] }'
import requests import json url = "https://test.mobipaid.io/v2/pos" payload = json.dumps( { "redirect_url": "https://mobipaid.com", "response_url": "https://yourshop.com/response_handler", "cancel_url": "https://yourshop.com", "currency": ["ZAR", "USD", "EUR"], "tax_id": "", "additional_info": [ {"name": "Product", "value": "Shirt"}, {"name":"Color", "value": "Red"} ], "additional_info_text": [ {"name": "text" , "placeholder" : "input text on front", "required":true} ], "additional_info_dropdown": [ {"name": "size", "options": "S, M, L, XL", "required":true} ], "tip_enabled": true, "moto_enabled": true, "share_button_enabled": true, "auto_generate_ref_number": true, "ref_number_suffix": 1, "ref_number_prefix": "MP", "payment_methods": ["GOOGLE_PAY", "APPLE_PAY", "NEDBANK_EFT","AMEX"] } ) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("PUT", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "PUT", url: "https://test.mobipaid.io/v2/pos", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" }, body: JSON.stringify({ redirect_url: "https://mobipaid.com", response_url: "https://yourshop.com/response_handler", cancel_url: "https://yourshop.com", currency: ["ZAR", "USD", "EUR"], tax_id: "", additional_info: [ {"name": "Product", "value": "Shirt"}, {"name":"Color", "value": "Red"} ], additional_info_text: [ {"name": "text" , "placeholder" : "input text on front", "required":true} ], additional_info_dropdown: [ {"name": "size", "options": "S, M, L, XL", "required":true} ], tip_enabled: true, moto_enabled: true, share_button_enabled: true, auto_generate_ref_number: true, ref_number_suffix: 1, ref_number_prefix: "MP", payment_methods: ["GOOGLE_PAY", "APPLE_PAY", "NEDBANK_EFT","AMEX"] }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "redirect_url" => "https://mobipaid.com", "response_url" => "https://yourshop.com/response_handler", "cancel_url" => "https://yourshop.com", "currency" => ["ZAR", "USD", "EUR"], "tax_id" => "", "additional_info" => array( array("name" => "Product", "value" => "Shirt"), array("name" => "Color", "value" => "Red") ), "additional_info_text" => array( array("name" => "text", "placeholder" => "input text on front", "required" => true) ), "additional_info_dropdown" => array( array("name" => "size", "options" => "S, M, L, XL", "required" => true) ), "tip_enabled" => true, "moto_enabled" => true, "share_button_enabled" => true, "auto_generate_ref_number" => true, "ref_number_suffix" => 1, "ref_number_prefix" => "MP", "payment_methods" => ["GOOGLE_PAY", "APPLE_PAY", "NEDBANK_EFT","AMEX"] ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/pos", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "PUT", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://test.mobipaid.io/v2/pos") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Put.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" request.body = { redirect_url: "https://mobipaid.com", response_url: "https://yourshop.com/response_handler", cancel_url: "https://yourshop.com", currency: ["ZAR", "USD", "EUR"], tax_id: "", additional_info: [ {"name": "Product", "value": "Shirt"}, {"name":"Color", "value": "Red"} ], additional_info_text: [ {"name": "text" , "placeholder" : "input text on front", "required":true} ], additional_info_dropdown: [ {"name": "size", "options": "S, M, L, XL", "required":true} ], tip_enabled: true, moto_enabled: true, share_button_enabled: true, auto_generate_ref_number: true, ref_number_suffix: 1, ref_number_prefix: "MP", payment_methods: ["GOOGLE_PAY", "APPLE_PAY", "NEDBANK_EFT","AMEX"] }.to_json response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "auto_generate_ref_number": true, "ref_number_prefix": "MP", "ref_number_suffix": 1, "additional_info": [ { "name": "Product", "value": "Shirt" }, { "name": "Color", "value": "Red" } ], "additional_info_text": [ { "name": "text", "placeholder": "input text on front", "required": true } ], "additional_info_dropdown": [ { "name": "size", "options": "S, M, L, XL", "required": true } ], "tip_enabled": true, "currency": [ "ZAR", "USD", "EUR" ], "moto_enabled": true, "tax_id": "", "payment_methods": [ "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT" ], "cancel_url": "https://yourshop.com", "response_url": "https://yourshop.com/response_handler", "redirect_url": "https://mobipaid.com", "db_transaction_id": "111PO", "db_payment_url": "https://sandbox-pay.mobipaid.com/pos_link/FIIZBbASgUeJ7sRrJE3eRA", "db_short_url": "https://s.mpaid.us/F7QSR", "db_qrcode_link": "https://mp-qrcodes.s3.amazonaws.com/stage/pos/httpssmpaidusF7QSR.png", "pa_transaction_id": "112PO", "pa_payment_url": "https://sandbox-pay.mobipaid.com/pos_link/X2x1fAMib0N0LsidbiB9xw", "pa_short_url": "https://s.mpaid.us/rby8Z", "pa_qrcode_link": "https://mp-qrcodes.s3.amazonaws.com/stage/pos/httpssmpaidusrby8Z.png" }
{ "is_valid": false, "error_field": "tax_id", "error_message": "tax_id is not valid" }
Request Samples
Get existing POS link for the connected merchant.
Request URL
https://test.mobipaid.io/v2/posExamples
curl -X GET https://test.mobipaid.io/v2/pos \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0"
import requests import json url = "https://test.mobipaid.io/v2/pos" headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("GET", url, headers=headers) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "GET", url: "https://test.mobipaid.io/v2/pos", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" }, }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/pos", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://test.mobipaid.io/v2/pos") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Get.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "auto_generate_ref_number": true, "ref_number_prefix": "MP", "ref_number_suffix": 1, "additional_info": { "Product": "Shirt", "Color": "Red" }, "additional_info_text": { "text": "input text on front" }, "additional_info_dropdown": { "size": "S, M, L, XL" }, "tip_enabled": true, "currency": [ "ZAR", "USD", "EUR" ], "moto_enabled": true, "tax_id": "", "payment_methods": [ "APPLE_PAY", "GOOGLE_PAY", "NEDBANK_EFT" ], "cancel_url": "https://yourshop.com", "response_url": "https://yourshop.com/response_handler", "redirect_url": "https://mobipaid.com", "db_transaction_id": "111PO", "db_payment_url": "https://sandbox-pay.mobipaid.com/pos_link/FIIZBbASgUeJ7sRrJE3eRA", "pa_transaction_id": "112PO", "pa_payment_url": "https://sandbox-pay.mobipaid.com/pos_link/X2x1fAMib0N0LsidbiB9xw" }
{ "result": "failed", "message": "Merchant DB POS link is not found." }
Request Samples
Generate a POS link with pre-filled parameters for the connected merchant.
* You need to create POS Link before run this request
Body Params
Field | Description |
---|---|
currency
 |
string
The currency of this payment request in 3 digit ISO format Example: "USD" |
amount
 |
string
The payment amount for this payment link. |
tip_amount
 |
string
The tip amount for this payment link. |
payment_type
 |
string
The payment type of this POS link. You can select between "PA" and "DB" |
reference
 |
string
You can input reference number for this link |
cancel_url
 |
string
The url where customer will redirected when customer click cancel button on payment page. Example: "https://mywebsite.com" |
response_url
 |
string
response_url is the url where customer will get the payment result. After the transaction is paid, the payment response will be posted to the response_url. Example: "http://mymobipaidmerchant.com/response/" |
return_url
 |
string
The URL that will be set for "return to shop" button. |
additional_text_fields
 |
object
Additional text input generated for this link. |
additional_dropdown_fields
 |
object
Additional select input for this link. |
cart_items
 |
array of object
Additional cart items that will be created for this payment the parameter must be an array of objects with "sku", "name", "qty" and "unit_price" property. Example: [{ "sku": "p1", "name": "product_1", "qty": 1, "unit_price": 10.15 }, { "sku": "p2", "name": "product_2", "qty": 3, "unit_price": 20.25 }] |
Request URL
https://test.mobipaid.io/v2/pos/generate-linkRequest Body
{ "payment_type": "DB", "tip_amount": 0, "amount": 50.33, "reference": "RED-SHIRT-123", "currency": "ZAR", "return_url": "https://yourshop.com", "response_url": "https://yourshop.com/response_handler", "cart_items": [{ "sku": "p1", "name": "Blue Shirt XL", "qty": 1, "unit_price": 10.15 }, { "sku": "p2", "name": "Black Short Pant XL", "qty": 3, "unit_price": 20.25 }], "additional_text_fields": { "text": "Hey guys" }, "additional_dropdown_fields": { "size": "XL" } }
Examples
curl -X PUT https://test.mobipaid.io/v2/pos \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" \ --data '{ "payment_type": "DB", "tip_amount": 0, "amount": 50.33, "reference": "RED-SHIRT-123", "currency": "ZAR", "return_url": "https://yourshop.com", "response_url": "https://yourshop.com/response_handler", "cart_items": [{ "sku": "p1", "name": "Blue Shirt XL", "qty": 1, "unit_price": 10.15 }, { "sku": "p2", "name": "Black Short Pant XL", "qty": 3, "unit_price": 20.25 }], "additional_text_fields": { "text": "Hey guys" }, "additional_dropdown_fields": { "size": "XL" } }'
import requests import json url = "https://test.mobipaid.io/v2/pos/generate-link" payload = json.dumps( { "payment_type": "DB", "tip_amount": 0, "amount": 50.33, "reference": "RED-SHIRT-123", "currency": "ZAR", "return_url": "https://yourshop.com", "response_url": "https://yourshop.com/response_handler", "cart_items": [{ "sku": "p1", "name": "Blue Shirt XL", "qty": 1, "unit_price": 10.15 }, { "sku": "p2", "name": "Black Short Pant XL", "qty": 3, "unit_price": 20.25 }], "additional_text_fields": { "text": "Hey guys" }, "additional_dropdown_fields": { "size": "XL" } } ) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "POST", url: "https://test.mobipaid.io/v2/pos/generate-link", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" }, body: JSON.stringify({ payment_type: "DB", tip_amount: 0, amount: 50.33, reference: "RED-SHIRT-123", currency: "ZAR", return_url: "https://yourshop.com", response_url: "https://yourshop.com/response_handler", cart_items: [{ "sku": "p1", "name": "Blue Shirt XL", "qty": 1, "unit_price": 10.15 }, { "sku": "p2", "name": "Black Short Pant XL", "qty": 3, "unit_price": 20.25 }], additional_text_fields: { text: "Hey guys" }, additional_dropdown_fields: { size: "XL" } }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "payment_type" => "DB", "tip_amount" => 0, "amount" => 50.33, "reference" => "RED-SHIRT-123", "currency" => "ZAR", "return_url" => "https://yourshop.com", "response_url" => "https://yourshop.com/response_handler", "cart_items" => [ array( "sku" => "p1", "name" => "Blue Shirt XL", "qty" => 1, "unit_price" => 10.15 ), array( "sku" => "p2", "name" => "Black Short Pant XL", "qty" => 3, "unit_price" => 20.25 ) ], "additional_text_fields" => array( "text" => "Hey guys" ), "additional_dropdown_fields" => array( "size" => "XL" ) ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/pos/generate-link", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://test.mobipaid.io/v2/pos/generate-link") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" request.body = { payment_type: "DB", tip_amount: 0, amount: 50.33, reference: "RED-SHIRT-123", currency: "ZAR", return_url: "https://yourshop.com", response_url: "https://yourshop.com/response_handler", cart_items: [{ "sku": "p1", "name": "Blue Shirt XL", "qty": 1, "unit_price": 10.15 }, { "sku": "p2", "name": "Black Short Pant XL", "qty": 3, "unit_price": 20.25 }], additional_text_fields: { text: "Hey guys" }, additional_dropdown_fields: { size: "XL" } }.to_json response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "long_url": "https://sandbox-pay.mobipaid.com/pos_link/FIIZBbASgUeJ7sRrJE3eRA?q=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXltZW50X3JlcXVlc3RfY3JpdGVyaWEiOnsidGlwX2Ftb3VudCI6MCwiYW1vdW50Ijo1MC4zMywicmVmZXJlbmNlIjoiUkVELVNISVJULTEyMyIsImN1cnJlbmN5IjoiWkFSIiwicmV0dXJuX3VybCI6Imh0dHBzOi8veW91cnNob3AuY29tIiwicmVzcG9uc2VfdXJsIjoiaHR0cHM6Ly95b3Vyc2hvcC5jb20vcmVzcG9uc2VfaGFuZGxlciIsImNhcnRfaXRlbXMiOlt7Im5hbWUiOiJCbHVlIFNoaXJ0IFhMIiwicXR5IjoxfSx7Im5hbWUiOiJCbGFjayBTaG9ydCBQYW50IFhMIiwicXR5IjozfV0sImFkZGl0aW9uYWxfdGV4dF9maWVsZHMiOnsidGV4dCI6IkhleSBndXlzIn0sImFkZGl0aW9uYWxfZHJvcGRvd25fZmllbGRzIjp7InNpemUiOiJYTCJ9LCJhY2Nlc3Nfa2V5X2lkIjoxfSwiaWF0IjoxNTg1ODAxOTAwfQ.FhkUuFU9OHguYNLZU0JNCqawhSytzdeU9xgnk8BeE20", "short_url": "https://s.mpaid.us/gici3", "qrcode_link": "https://mp-qrcodes.s3.amazonaws.com/stage/pos/httpssmpaidusgici3.png" }
{ "is_valid": false, "error_field": "currency", "error_message": "The POS link does not support the specified currency", "result": "failed" }
Request Samples
The payment response is sent via the payment response URL that you provided in your payment request.We send a JSON response in a POST parameter called response.On your payment response provided URL you will need to check for a post parameter called response and read the JSON payload contained within the post variable.
Two possible result codes of NOK for failure in the payment attempt and ACK for a successful payment.
Sample payment response
response {
"result": "ACK",
"token": "9b6352ab516a043cd33cf65cf8210af35bd4d3c9",
"transaction_id": "211PO",
"payment_id": "8ac7a4a074726760017472b283ce070f",
"amount": "50.33",
"currency": "USD",
"currency_symbol": "$",
"result_code": "000.100.110",
"result_description": "Request successfully processed in 'Merchant in Integrator Test Mode'",
"additional_info_text": {
"Type": "baju baru"
},
"additional_info_dropdown": {
"Size": "M"
},
"cart_items": "[{\"sku\":\"123\",\"name\":\"Blue Shirt XL\",\"qty\":1,\"unit_price\":11.2},{\"sku\":\"456\",\"name\":\"Black Short Pant XL\",\"qty\":2,\"unit_price\":22.4}]"
}
You can get, create, edit and delete customer group with this feature.
Create a new customer group for the customer.
Body Params
Field | Description |
---|---|
group_name
required |
string
Customer group's name. |
description
|
string
Customer group's specific description. |
Request URL
https://live.mobipaid.io/v2/customers/groupsRequest Body
{ "group_name" : "Card", "description" : "group for card" }
Examples
curl -X POST https://live.mobipaid.io/v2/customers/groups \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_A83ucDEekfzqOATsxfrj" \ --data '{ "group_name" : "Card", "description" : "group for card" }'
import requests import json url = "https://live.mobipaid.io/v2/customers/groups" payload = json.dumps( { "group_name" : "Card", "description" : "group for card" } ) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "POST", url: "https://live.mobipaid.io/v2/customers/groups", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" }, body: JSON.stringify({ "group_name" : "Card", "description" : "group for card" }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "group_name" => "Card", "description" => "group for card" ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://live.mobipaid.io/v2/customers/groups", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://live.mobipaid.io/v2/customers/groups") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" request.body = { "group_name" : "Card", "description" : "group for card" }.to_json response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "customer_group_id": "K1Z2J2Zl", "group_name": "card", "description": "group for card" }
{ "is_valid": false, "error_field": "group_name", "error_message": "group_name already exists.", "result": "failed" }
Request Samples
You can update the customer group by using the same parameters from create a customer group, but you have to add customer_group_id to the body.
Required Header:
- Authorization
Request URL
https://live.mobipaid.io/v2/customers/groupsRequest Body
{ "customer_group_id" : "K1Z2J2Zl", "group_name" : "Card", "description" : "group for card" }
Examples
curl -X POST https://live.mobipaid.io/v2/customers/groups \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_A83ucDEekfzqOATsxfrj" \ --data '{ "customer_group_id" : "K1Z2J2Zl", "group_name" : "Card", "description" : "group for card" }'
import requests import json url = "https://live.mobipaid.io/v2/customers/groups" payload = json.dumps( { "customer_group_id" : "K1Z2J2Zl", "group_name" : "Card", "description" : "group for card" } ) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "POST", url: "https://live.mobipaid.io/v2/customers/groups", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" }, body: JSON.stringify({ "customer_group_id" : "K1Z2J2Zl", "group_name" : "Card", "description" : "group for card" }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "customer_group_id" => "K1Z2J2Zl", "group_name" => "Card", "description" => "group for card" ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://live.mobipaid.io/v2/customers/groups", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://live.mobipaid.io/v2/customers/groups") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" request.body = { "customer_group_id" : "K1Z2J2Zl", "group_name" : "Card", "description" : "group for card" }.to_json response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "customer_group_id": "K1Z2J2Zl", "group_name": "card", "description": "group for card" }
{ "is_valid": false, "error_field": "group_name", "error_message": "group_name already exists.", "result": "failed" }
Request Samples
You can fetch a customer group detail by using GET method with a customer_group_id in the route parameter
Required Header:
- Authorization
Request URL
https://live.mobipaid.io/v2/customers/groups/{customer_group_id}Examples
curl -X GET https://live.mobipaid.io/v2/customers/groups/{customer_group_id} \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0"
import requests import json url = "https://live.mobipaid.io/v2/customers/groups?page=5&limit=1" payload = {} headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("GET", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "GET", url: "https://live.mobipaid.io/v2/customers/groups?page=5&limit=1", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" }, }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://live.mobipaid.io/v2/customers/groups?page=5&limit=1", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://live.mobipaid.io/v2/customers/groups?page=5&limit=1") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Get.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "limit": 10, "page": 1, "page_count": 1, "total_count": 1, "customer_groups": [ { "customer_group_id": "K1Z2J2Zl", "group_name": "card", "description": "group for card" } ] }
{ "is_valid": false, "error_field": "customer_group_id", "error_message": "customer_group_id is not found.", "result": "failed" }
Request Samples
You can delete a customer group by using the DELETE method with a customer_group_id in the route parameter.
Required Header:
- Authorization
Request URL
https://live.mobipaid.io/v2/customers/groups/{customer_group_id}Examples
curl -X DELETE https://live.mobipaid.io/v2/customers/groups/K1Z2J2Zl \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0"
import requests import json url = "https://live.mobipaid.io/v2/customers/groups/K1Z2J2Zl" payload = {} headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("DELETE", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "DELETE", url: "https://live.mobipaid.io/v2/customers/groups/K1Z2J2Zl", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" }, }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://live.mobipaid.io/v2/customers/groups/K1Z2J2Zl", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "DELETE", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://live.mobipaid.io/v2/customers/groups/K1Z2J2Zl") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Delete.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "customer_group_id": "K1Z2J2Zl" }
{ "is_valid": false, "error_field": "customer_group_id", "error_message": "customer_group_id is not found.", "result": "failed" }
Request Samples
Fetch your user account from Mobipaid.
Required Header:
- Authorization
Request URL
https://test.mobipaid.io/v2/user_account/Result Format
[ { "user_id": "p4DxanBE", "email": "demo2@mobipaid.com", "type": "sales" }, { "user_id": "K1Z2MXlO", "email": "demo3@mobipaid.com", "type": "sales" } ]
Request Samples
Create new message template for SMS and Email with this feature.
We support Credit Card, Direct Debit, Paypal, Apple Pay, Google Pay, Nedbank, etc. With mobipaid wallet in place, customer can pay quickly with payment options that has been saved.
You can create message template based on transaction type.
You can fetch a message template detail by using GET method with a template_id in the route parameter
Required Header:
- Authorization
You can delete a message template by using the DELETE method with a template_id in the route parameter.
Required Header:
- Authorization
Create a new message template for the merchant.
Body Params
Field | Description |
---|---|
template_name
|
string
Message template name. Example : "Once-off payment request template". |
transaction_type
|
string
The transaction type which message template belongs to. Can only be filled with "once-off" or "scheduled". |
email_subject
|
string
The subject of message template. For example : "Payment due to Mad Decent". |
email_content
|
string
The content of email message template. |
sms_content
|
string
The content of SMS message template. |
default
|
boolean
Use "true" if you want to set this message template as default once-off/scheduled message template for this merchant. |
global_template
|
boolean
Use "true" if you want to set this message template available for other user under this merchant. Use "false" if you want message template can only be used by the owner. |
You can update the message template by using the same parameters from create a message template, but you have to add template_id to the body.
Required Header:
- Authorization
You can get, create, edit and delete customer with this feature.
Create a new customer for the merchant.
Body Params
Field | Description |
---|---|
email
required with condition |
string
Customer's email. You must fill either email or mobile_no field. Example : "john@doe.com". |
mobile_no
required with condition |
string
Customer's mobile number. You must fill either email or mobile_no field. Example : "+1234567890". |
customer_group_id
|
string
Customer's group id. Example : "K1Z2J2Zl". |
salutation
|
string
Customer's salutation. Example : "Mr.". |
first_name
required |
string
Customer's first name. |
last_name
|
string
Customer's last name. |
description
|
string
Customer's specific description. |
country_iso
|
string
Customer's country ISO. Example : "DE". |
state
|
string
Customer's state. Example : "DE". |
city
|
string
Customer's city. Example : "Munchen". |
postal_code
|
string
Customer's postal code. Example : "12345". |
reference_number
|
string
Customer's reference number. Example : "12345". |
additional_value
|
json
Customer's additional value. Example : {"age": 20, "gender": "male"}. |
Request URL
https://live.mobipaid.io/v2/customersRequest Body
{ "email": "john@doe.com", "mobile_no": "+1234567890", "customer_group_id": "K1Z2J2Zl", "salutation": "Mr.", "first_name": "john", "last_name": "doe", "description": "customer john doe", "country_iso": "DE", "state": "Bayern", "city": "Munchen", "postal_code": "12345", "reference_number": "1234", "additional_value": {"age": 20, "gender": "male"} }
Examples
curl -X POST https://live.mobipaid.io/v2/customers \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_A83ucDEekfzqOATsxfrj" \ --data '{ "email": "john@doe.com", "mobile_no": "+1234567890", "customer_group_id": "K1Z2J2Zl", "salutation": "Mr.", "first_name": "john", "last_name": "doe", "description": "customer john doe", "country_iso": "DE", "state": "Bayern", "city": "Munchen", "postal_code": "12345", "reference_number": "1234", "additional_value": {"age": 20, "gender": "male"} }'
import requests import json url = "https://live.mobipaid.io/v2/customers" payload = json.dumps( { "email": "john@doe.com", "mobile_no": "+1234567890", "customer_group_id": "K1Z2J2Zl", "salutation": "Mr.", "first_name": "john", "last_name": "doe", "description": "customer john doe", "country_iso": "DE", "state": "Bayern", "city": "Munchen", "postal_code": "12345", "reference_number": "1234", "additional_value": {"age": 20, "gender": "male"} } ) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "POST", url: "https://live.mobipaid.io/v2/customers", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" }, body: JSON.stringify({ "email": "john@doe.com", "mobile_no": "+1234567890", "customer_group_id": "K1Z2J2Zl", "salutation": "Mr.", "first_name": "john", "last_name": "doe", "description": "customer john doe", "country_iso": "DE", "state": "Bayern", "city": "Munchen", "postal_code": "12345", "reference_number": "1234", "additional_value": {"age": 20, "gender": "male"} }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "email" => "john@doe.com", "mobile_no" => "+1234567890", "customer_group_id" => "K1Z2J2Zl", "salutation" => "Mr.", "first_name" => "john", "last_name" => "doe", "description" => "customer john doe", "country_iso" => "DE", "state" => "Bayern", "city" => "Munchen", "postal_code" => "12345", "reference_number" => "1234", "additional_value" => array("age" => 20, "gender" => "male") ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://live.mobipaid.io/v2/customers", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://live.mobipaid.io/v2/customers") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" request.body = { "email": "john@doe.com", "mobile_no": "+1234567890", "customer_group_id": "K1Z2J2Zl", "salutation": "Mr.", "first_name": "john", "last_name": "doe", "description": "customer john doe", "country_iso": "DE", "state": "Bayern", "city": "Munchen", "postal_code": "12345", "reference_number": "1234", "additional_value": {"age": 20, "gender": "male"} }.to_json response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "customer_id": "2BD8rYXr", "mobile_no": "+1234567890", "email": "john@doe.com", "salutation": "Mr.", "first_name": "john", "last_name": "doe", "customer_group_id": "K1Z2J2Zl", "description": "customer john doe", "country_iso": "DE", "country_name": "Germany", "state": "Bayern", "city": "Munchen", "postal_code": "12345", "reference_number": "1234", "additional_value": { "age": 20, "gender": "male" } }
{ "is_valid": false, "error_field": "mobile_no", "error_message": "mobile_no already exists.", "result": "failed" }
Request Samples
You can update the customer by using the same parameters from create a customer, but you have to add customer_id to the body.
Required Header:
- Authorization
Request URL
https://live.mobipaid.io/v2/customersRequest Body
{ "customer_id": "j4nJ74Xa", "email": "john@doe.com", "mobile_no": "+1234567890", "customer_group_id": "K1Z2J2Zl", "salutation": "Mr.", "first_name": "john", "last_name": "doe", "description": "customer john doe", "country_iso": "DE", "state": "Bayern", "city": "Munchen", "postal_code": "12345", "reference_number": "1234", "additional_value": {"age": 20, "gender": "male"} }
Examples
curl -X POST https://live.mobipaid.io/v2/customers \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_A83ucDEekfzqOATsxfrj" \ --data '{ "customer_id": "j4nJ74Xa", "email": "john@doe.com", "mobile_no": "+1234567890", "customer_group_id": "K1Z2J2Zl", "salutation": "Mr.", "first_name": "john", "last_name": "doe", "description": "customer john doe", "country_iso": "DE", "state": "Bayern", "city": "Munchen", "postal_code": "12345", "reference_number": "1234", "additional_value": {"age": 20, "gender": "male"} }'
import requests import json url = "https://live.mobipaid.io/v2/customers" payload = json.dumps( { "customer_id": "j4nJ74Xa", "email": "john@doe.com", "mobile_no": "+1234567890", "customer_group_id": "K1Z2J2Zl", "salutation": "Mr.", "first_name": "john", "last_name": "doe", "description": "customer john doe", "country_iso": "DE", "state": "Bayern", "city": "Munchen", "postal_code": "12345", "reference_number": "1234", "additional_value": {"age": 20, "gender": "male"} } ) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "POST", url: "https://live.mobipaid.io/v2/customers", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" }, body: JSON.stringify({ "customer_id": "j4nJ74Xa", "email": "john@doe.com", "mobile_no": "+1234567890", "customer_group_id": "K1Z2J2Zl", "salutation": "Mr.", "first_name": "john", "last_name": "doe", "description": "customer john doe", "country_iso": "DE", "state": "Bayern", "city": "Munchen", "postal_code": "12345", "reference_number": "1234", "additional_value": {"age": 20, "gender": "male"} }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "customer_id" => "j4nJ74Xa", "email" => "john@doe.com", "mobile_no" => "+1234567890", "customer_group_id" => "K1Z2J2Zl", "salutation" => "Mr.", "first_name" => "john", "last_name" => "doe", "description" => "customer john doe", "country_iso" => "DE", "state" => "Bayern", "city" => "Munchen", "postal_code" => "12345", "reference_number" => "1234", "additional_value" => array("age" => 20, "gender" => "male") ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://live.mobipaid.io/v2/customers", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://live.mobipaid.io/v2/customers") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" request.body = { "customer_id": "j4nJ74Xa", "email": "john@doe.com", "mobile_no": "+1234567890", "customer_group_id": "K1Z2J2Zl", "salutation": "Mr.", "first_name": "john", "last_name": "doe", "description": "customer john doe", "country_iso": "DE", "state": "Bayern", "city": "Munchen", "postal_code": "12345", "reference_number": "1234", "additional_value": {"age": 20, "gender": "male"} }.to_json response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "customer_id": "2BD8rYXr", "mobile_no": "+1234567890", "email": "john@doe.com", "salutation": "Mr.", "first_name": "john", "last_name": "doe", "customer_group_id": "K1Z2J2Zl", "description": "customer john doe", "country_iso": "DE", "country_name": "Germany", "state": "Bayern", "city": "Munchen", "postal_code": "12345", "reference_number": "1234", "additional_value": { "age": 20, "gender": "male" } }
{ "is_valid": false, "error_field": "mobile_no", "error_message": "mobile_no already exists.", "result": "failed" }
Request Samples
You can fetch a customer detail by using GET method with a customer_id in the route parameter
Required Header:
- Authorization
Request URL
https://live.mobipaid.io/v2/customers/{customer_id}Examples
curl -X GET https://live.mobipaid.io/v2/customers/{customer_id} \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0"
import requests import json url = "https://live.mobipaid.io/v2/customers?page=5&limit=1" payload = {} headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("GET", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "GET", url: "https://live.mobipaid.io/v2/customers?page=5&limit=1", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" }, }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://live.mobipaid.io/v2/customers?page=5&limit=1", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://live.mobipaid.io/v2/customers?page=5&limit=1") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Get.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "limit": 10, "page": 1, "page_count": 1, "total_count": 1, "customers": [ { "customer_id": "2BD8rYXr", "mobile_no": "+1234567890", "email": "john@doe.com", "salutation": "Mr.", "first_name": "john", "last_name": "doe", "customer_group_id": "K1Z2J2Zl", "description": "customer john doe", "country_iso": "DE", "country_name": "Germany", "state": "Bayern", "city": "Munchen", "postal_code": "12345", "reference_number": "1234", "additional_value": { "age": 20, "gender": "male" } } ] }
{ "is_valid": false, "error_field": "customer_id", "error_message": "customer_id is not found.", "result": "failed" }
Request Samples
You can delete a customer by using the DELETE method with a customer_id in the route parameter.
Required Header:
- Authorization
Request URL
https://live.mobipaid.io/v2/customers/{customer_id}Examples
curl -X DELETE https://live.mobipaid.io/v2/customers/j4nJ74Xa \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0"
import requests import json url = "https://live.mobipaid.io/v2/customers/j4nJ74Xa" payload = {} headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_test_w3Lwv3CZIZzye4cYxxr0' } response = requests.request("DELETE", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "DELETE", url: "https://live.mobipaid.io/v2/customers/j4nJ74Xa", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" }, }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://live.mobipaid.io/v2/customers/j4nJ74Xa", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "DELETE", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://live.mobipaid.io/v2/customers/j4nJ74Xa") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Delete.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_test_w3Lwv3CZIZzye4cYxxr0" response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "customer_id": "2BD8rYXr" }
{ "is_valid": false, "error_field": "customer_id", "error_message": "customer_id is not found.", "result": "failed" }
Request Samples
The application management API provides api requests for your created applications in
developer portal along with merchant management functions.
To access this API, you need a special access key with the prefix mp_app_. You can get this
access key in your users_profile page in developer portal once you login. Authentication to
the API is performed via HTTP Bearer Auth. Provide your Access key as the bearer auth
value.
The get all apps route provides the developer with a list of all applications under the
developer identified by his/her access token. You will be able to retrieve a full list of
applications in the api route.
Request URL
https://test.mobipaid.io/v2/appExamples
GET https://test.mobipaid.io/v2/app \ -H "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX"
import requests url = "https://test.mobipaid.io/v2/app" payload = {} headers = { 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' } response = requests.request("GET", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'GET', 'url': 'https://test.mobipaid.io/v2/app', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' } }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/app", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" url = URI("https://test.mobipaid.io/v2/app") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = "Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "apps": [ { "app_id": "msFyZrmMczkAkED7oUPYD-ZALrTe02KIo2U8MzwtLV8-WFGJhB2G4lmB89dU", "user_id": 36, "app_status": "published", "app_name": "Test Published App", "app_description": "Test Published App Desc", "license_agreement_url": null, "privacy_policy_url": null, "logo_url": null }, { "app_id": "y39B1ENNjOSkojYM18UW-fwSmFDBDRY3gCjzZIf-9Bcty1ecVPVwvNykcylT", "user_id": 36, "app_status": "draft", "app_name": "Test Draft", "app_description": "Test Draft Description", "license_agreement_url": null, "privacy_policy_url": null, "logo_url": "Xs1Z6nqAdv_20210602092407.jpg" } ] }
{ "message": "App access Key not found" }
Request Samples
Create a new application in the developer portal.
Body Params
Field | Description |
---|---|
app_name
required |
string
Application name must be provided |
app_description
required |
string
Brief description about the application created please provide |
app_logo
optional |
string
Fill in with image url with extension .jpg/.jpeg/.png/.gif. The |
license_agreement_url optional
|
string
License agreement URL used by the created application if you |
privacy_policy_url
optional |
string
Privacy policy URL used by the created application. This is |
Request URL
https://test.mobipaid.io/v2/appRequest Body
{ "app_name" : "Test App Demo", "app_description" : "Description Test App Demo", "app_logo": "https://fakeurl.com/image-sample.png", "license_agreement_url": "https://www.google.com", "privacy_policy_url": "https://www.yahoo.com" }
Examples
curl -X POST https://test.mobipaid.io/v2/app \ -H "Content-Type: application/json" \ -H "Authorization: Bearer app_mp_test_yEtHTVY2mjFySrV2ryHF" \ --data '{ "app_name" : "Test App Demo", "app_description" : "Description Test App Demo", "app_logo": "https://fakeurl.com/image-sample.png", "license_agreement_url": "https://www.google.com", "privacy_policy_url": "https://www.yahoo.com" }'
import requests import json url = "https://test.mobipaid.io/v2/app" payload = json.dumps({ "app_name" : "Test App Demo", "app_description" : "Description Test App Demo", "app_logo": "https://fakeurl.com/sample-image.png", "license_agreement_url": "https://www.google.com", "privacy_policy_url": "https://www.yahoo.com" } ) headers = { 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzY' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'POST', 'url': 'https://test.mobipaid.io/v2/app', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzY' }, body: JSON.stringify({ "app_name" : "Test App Demo", "app_description" : "Description Test App Demo", "app_logo": "https://fakeurl.com/sample-image.png", "license_agreement_url": "https://www.google.com", "privacy_policy_url": "https://www.yahoo.com" }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "app_name" => "Test App Demo", "app_description" => "Description Test App Demo", "app_logo" => "https://fakeurl.com/sample-image.png", "license_agreement_url" => "https://www.google.com", "privacy_policy_url" => "https://www.yahoo.com" ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/app", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzY" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require 'json' url = URI("https://test.mobipaid.io/v2/app") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer app_mp_test_05hd2V93RYW8MlhxdnzY" request.body = { "app_name" : "Test App Demo", "app_description" : "Description Test App Demo", "app_logo": "https://fakeurl.com/sample-image.png", "license_agreement_url": "https://www.google.com", "privacy_policy_url": "https://www.yahoo.com" }.to_json response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "app_id": "pfpGlPfw4ePdlb-VSWiqifWBES3Sf5hfecPihDoUPbeA6TEQ-FwjzTYiuDpt", "app_name": "Test App Demo", "app_status": "draft", "token": "38741548" }
{ "is_valid": false, "error_field": "app_logo", "error_message": "App Logo URL is not valid" }
Request Samples
This request has the same body structure as the Create New Application endpoint. The difference is the addition of url parameter app_id this is the unique identifier for your application that you have created and require to be edited.
Request URL
https://test.mobipaid.io/v2/app/{app_id}Request Body
{ "app_name" : "Test App Demo", "app_description" : "Description Test App Demo", "app_logo": "https://fakeurl.com/sample-image.png", "license_agreement_url": "https://www.google.com", "privacy_policy_url": "https://www.yahoo.com" }
Examples
curl -X PUT https://test.mobipaid.io/v2/app/{app_id} \ -H "Content-Type: application/json" \ -H "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" \ --data '{ "app_description" : "Description Test App Demo", "app_logo": "https://fakeurl.com/sample-image.png", "license_agreement_url": "https://www.google.com", "privacy_policy_url": "https://www.yahoo.com" }'
import requests import json url = "https://test.mobipaid.io/v2/app/{app_id}" payload = json.dumps( { "app_name" : "Test App Demo" "app_description" : "Description Test App Demo", "app_logo": "https://fakeurl.com/sample-image.png", "license_agreement_url": "https://www.google.com", "privacy_policy_url": "https://www.yahoo.com" }) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' } response = requests.request("PUT", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'PUT', 'url': 'https://test.mobipaid.io/v2/app/{app_id}', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' }, body: JSON.stringify({ "app_name": "Test App Demo", "app_description" : "Description Test App Demo", "app_logo": "https://fakeurl.com/sample-image.png", "license_agreement_url": "https://www.google.com", "privacy_policy_url": "https://www.yahoo.com" }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "app_name" => "Test App Demo", "app_description" => "Description Test App Demo", "app_logo" => "https://fakeurl.com/sample-image.png", "license_agreement_url" => "https://www.google.com", "privacy_policy_url" => "https://www.yahoo.com" ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/app/{app_id}", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "PUT", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require 'json' url = URI("https://test.mobipaid.io/v2/app/{app_id}") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Put.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer app_mp_test_w3Lwv3CZIZzye4cYxxr0" request.body = { "app_name" : "Test Demo Apps", "app_description" : "Test Demo Apps Description", "app_logo": "https://fakeurl.com/sample-image.png", "license_agreement_url": "https://www.google.com", "privacy_policy_url": "https://www.yahoo.com" }.to_json response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "app_id": "cmOhiROUk5zcwC5PXUZZTH-p71jQzjBFMiArZB-lWPu2DVFjUG0QZgpicKSO", "app_name": "Test App Demo", "app_status": "draft", "token": "91404459" }
{ "message": "App access Key not found" }
Request Samples
This request returns the details of the merchant connected to the application, given the app_id and merchant_id in the request.
Request URL
https://test.mobipaid.io/v2/app/{app_id}/merchants/{merchant_id}Examples
curl -X GET https://test.mobipaid.io/v2/app/{app_id}/merchants/{merchant_id} \ --header "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX"
import requests url = "https://test.mobipaid.io/v2/app/{app_id}/merchants/{merchant_id}" payload = {} headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' } response = requests.request("GET", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'GET', 'url': 'https://test.mobipaid.io/v2/app/{app_id}/merchants/{merchant_id}', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' } }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/app/{app_id}/merchants/{merchant_id}", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" url = URI("https://test.mobipaid.io/v2/app/{app_id}/merchants/{merchant_id}") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Get.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "app_id": "msFyZrmMczkAkED7oUPYD-ZALrTe02KIo2U8MzwtLV8-WFGJhB2G4lmB89dU", "token": "31873800", "merchants": [ { "merchant_id": "BLDQVvnm", "name": "Dummy Merchant please ignore", "phone_number": "+6281222324170", "address_line1": "Ancol Timur III / 41", "email": "merchant@gmail.com", "signatory_first_name": "First ", "signatory_last_name": "Last", "access_key": "mp_dummy_zZOQWkesvf1iGlSeHLxR", "app_id": "msFyZrmMczkAkED7oUPYD-ZALrTe02KIo2U8MzwtLV8-WFGJhB2G4lmB89dU" } ] }
Request Samples
Disconnect the merchant from application. It will disconnect automatically from developer's side and merchant's side, given the merchant_id and app_id in the url parameters.
Request URL
https://test.mobipaid.io/v2/app/{app_id}/merchants/{merchant_id}Examples
curl -X DELETE https://test.mobipaid.io/v2/app/{app_id}/merchants/{merchant_id} \ --header "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX"
import requests url = "https://test.mobipaid.io/v2/app/{app_id}/merchants/{merchant_id}" payload = {} headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' } response = requests.request("DELETE", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'DELETE', 'url': 'https://test.mobipaid.io/v2/app/{app_id}/merchants/{merchant_id}', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' } }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/app/{app_id}/merchants/{merchant_id}", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "DELETE", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" url = URI("https://test.mobipaid.io/v2/app/{app_id}/merchants/{merchant_id}") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Delete.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" response = https.request(request) puts response.read_body
Result Format
{ "result": "success" }
Request Samples
Get the details of one app based on app_id, containing a list of merchants connected to it along with his/her access key to your applications.
Request URL
https://test.mobipaid.io/v2/app/{app_id}Examples
https://test.mobipaid.io/v2/app/{app_id} \ --header "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX"
import requests url = "https://test.mobipaid.io/v2/app/{app_id}" payload = {} headers = { 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' } response = requests.request("GET", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'GET', 'url': 'https://test.mobipaid.io/v2/app/{app_id}', 'headers': { 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' } }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/app/{app_id}", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" url = URI("https://test.mobipaid.io/v2/app/{app_id}") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = "Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "app_id": "msFyZrmMczkAkED7oUPYD-ZALrTe02KIo2U8MzwtLV8-WFGJhB2G4lmB89dU", "token": "58116137", "merchants": [ { "merchant_id": "BLDQVvnm", "name": "The dummy merchant please ignore", "phone_number": "+6281222324170", "address_line1": "Ancol Timur III / 41", "email": "merchant@gmail.com", "signatory_first_name": "First ", "signatory_last_name": "Last ", "access_key": "mp_dummy_zZOQWkesvf1iGlSeHLxR", "app_id": "msFyZrmMczkAkED7oUPYD-ZALrTe02KIo2U8MzwtLV8-WFGJhB2G4lmB89dU" } ] }
{ "message": "App access Key not found" }
Request Samples
This request provides application status given app_id in the url parameter. The available status is deleted, drafted, published, and suspended.
Draft - Status is not yet published on production developer is required to update the status from draft for production implementation.
Deleted - The application has been removed from the merchants , the application is no longer able to be accessed from merchants.
Published - The application is published for production from the developer.
Suspended - The application is suspended from usage , there is a temporary suspension placed on your application no merchants will be able to get access to your application or be able to use your application.
Request URL
https://test.mobipaid.io/v2/app/status/{app_id}Examples
curl -X GET https://test.mobipaid.io/v2/app/status/{app_id} \ --header "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX"
import requests url = "https://test.mobipaid.io/v2/app/status/{app_id}" payload = {} headers = { 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' } response = requests.request("GET", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require('request'); var options = { 'method': 'GET', 'url': 'https://test.mobipaid.io/v2/app/status/{app_id}', 'headers': { 'Content-Type': 'application/json', 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' } }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/app/status/{app_id}", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "net/http" url = URI("https://test.mobipaid.io/v2/app/status/{app_id}") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Get.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "app_id": "MBZVOR1rWlJwp85B-FAH3jXXztDVbS1AlhDWg6Z-OLGJ6IRSYDZxmeR2ZSHq", "app_status": "draft" }
{ "message": "App access Key not found" }
Request Samples
Modify status of application into Draft, Deleted, Published, and Suspended given the app_id in url parameter.
Draft - Status is not yet published on production developer is required to update the status from draft for production implementation.
Deleted - The application has been removed from the merchants , the application is no longer able to be accessed from merchants.
Published - The application is published for production from the developer.
Suspended - The application is suspended from usage , there is a temporary suspension placed on your application no merchants will be able to get access to your application or be able to use your application.
Request URL
https://test.mobipaid.io/v2/app/status/{app_id}Request Body
{ "app_status" : "published" }
Examples
curl -X PUT https://test.mobipaid.io/v2/app/status/{app_id} \ -H "Content-Type: application/json" \ -H "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" \ --data '{ "app_status": "published" }'
import requests import json url = "https://test.mobipaid.io/v2/app/status/{app_id}" payload = json.dumps( { "app_status": "published" } ) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' } response = requests.request("PUT", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "PUT", url: "https://test.mobipaid.io/v2/app/status/{app_id}", headers: { "Content-Type": "application/json", "Authorization": "Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" }, body: JSON.stringify({ app_status : "published" }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "app_status": "published" ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/app/status/{app_id}", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "PUT", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://test.mobipaid.io/v2/app/status/{app_id}") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Put.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" request.body = { app_status : "published" }.to_json response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "app_id": "kIJ99lL3I9tFLlcHPe-on2IMsnKUrlYcHN0CF0gSNrGSL-IdVtBg4rWmG82W", "app_status": "published" }
Request Samples
This requests a return token that can be used by the merchant to connect to the application, by the given app_id in the url parameter.
Please keep in mind that the token will only be returned if the developer already has agreed to the eula in that specific application. Otherwise, the application can't access messages returned.
Request URL
https://test.mobipaid.io/v2/app/{app_id}/merchants/inviteRequest Body
{}
Examples
curl -X POST https://test.mobipaid.io/v2/app/{app_id}/merchants/invite \ -H "Content-Type: application/json" \ -H "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" \ --data '{}'
import requests import json url = "https://test.mobipaid.io/v2/app/{app_id}/merchants/invite" payload = json.dumps( {} ) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer app_mp_test_05hd2V93RYW8MlhxdnzX' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "POST", url: "https://test.mobipaid.io/v2/app/{app_id}/merchants/invite", headers: { "Content-Type": "application/json", "Authorization": "Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" }, body: JSON.stringify({}) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array(); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://test.mobipaid.io/v2/app/{app_id}/merchants/invite", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://test.mobipaid.io/v2/app/{app_id}/merchants/invite") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer app_mp_test_05hd2V93RYW8MlhxdnzX" request.body = {}.to_json response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "app_id": "msFyZrmMczkAkED7oUPYD-ZALrTe02KIo2U8MzwtLV8-WFGJhB2G4lmB89dU", "token": "31873800" }
{ "error_message": "This application can't be accessed.", "result": "failed" }
Request Samples
Generate QR code links represent the EMV payload based on the EMVCo-Merchant-Presented-QR-specification document. The country code should be present in the URL param as iso3 country code format as represented in ISO 3166-1 standard.
Body Params
Field | Description |
---|---|
payment_type
required |
string
Represent the pos link payment method, only consists of two valid values : DB (Debit) or PA (Pre-authorization) |
tip_amount
optional |
number
The amount of tip you want to pay instead of the original amount. Example : 2.13 |
amount
required |
number
The amount you want to pay via EMV payload. Example : 10.11 |
reference
optional
|
string
The identification code for your payment |
currency
required |
string
Three-letter currency code for payment based on ISO 4217 specification. |
Request URL
https://live.mobipaid.io/v2/emv/{country_code}Request Body
{ "payment_type": "DB", "tip_amount": 10.23, "amount": 0, "reference": "RED-SHIRT-123", "currency": "ZAR" }
Examples
curl -X POST https://live.mobipaid.io/v2/emv/{country_code} \ -H "Content-Type: application/json" \ -H "Authorization: Bearer mp_live_9Au2ABAwToHDfMf1kiwr" \ --data '{ "payment_type": "DB", "tip_amount": 2.24, "amount": 15.00, "reference": "RED-SHIRT-123", "currency": "ZAR" }'
import requests import json url = "https://live.mobipaid.io/v2/emv/{country_code}" payload = json.dumps({ "payment_type": "DB", "tip_amount": 2.24, "amount": 15.00, "reference": "RED-SHIRT-123", "currency": "ZAR" }) headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer mp_live_9Au2ABAwToHDfMf1kiwr' } response = requests.request("POST", url, headers=headers, data = payload) print(response.text.encode('utf8'))
var request = require("request"); var options = { method: "POST", url: "https://live.mobipaid.io/v2/emv/{country_code}", headers: { "Content-Type": "application/json", "Authorization": "Bearer mp_live_9Au2ABAwToHDfMf1kiwr" }, body: JSON.stringify({ "payment_type": "DB", "tip_amount": 2.24, "amount": 15.00, "reference": "RED-SHIRT-123", "currency": "ZAR" }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
$curl = curl_init(); $data = array( "payment_type" => "DB", "tip_amount" => 2.24, "amount" => 15.00, "reference" => "RED-SHIRT-123", "currency" => "ZAR" ); $data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://live.mobipaid.io/v2/emv/{country_code}", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json", "Authorization: Bearer mp_live_9Au2ABAwToHDfMf1kiwr" ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
require "uri" require "net/http" require "json" url = URI("https://live.mobipaid.io/v2/emv/{country_code") https = Net::HTTP.new(url.host, url.port); https.use_ssl = true request = Net::HTTP::Post.new(url) request["Content-Type"] = "application/json" request["Authorization"] = "Bearer mp_live_9Au2ABAwToHDfMf1kiwr" request.body = { "payment_type": "DB", "tip_amount": 2.24, "amount": 15.00, "reference": "RED-SHIRT-123", "currency": "ZAR" }.to_json response = https.request(request) puts response.read_body
Result Format
{ "result": "success", "qrcode_link": "https://mp-qrcodes.s3.amazonaws.com/stage/pos_payment/EMV-U1JwInASoK.png", "qrcode_base64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAPoCAYAAABNo9TkAAAbdUlEQVR4AezBwa1ot7UtyqGJk48AxsEYGBxjYBwMQoDj8G/c1u/44QiE57J2Vf3x57/++ncAAACAVhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANr9ymNnjcB/MvfNS2eN/BRz37xy1shLc9+8dNbIK3PfvHTWyCtz37x01shLc9/w+84a+aq5b77srJFX5r75qrNGfoq5b146a+SVuW9eOmvkq+a++aqzRl6a++als0bgP5n75pUKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtfuXj5r6h31kjXzX3zUtnjbwy981LZ428MvfNS2eNfNVZI1911gh/z1kjXzX3zVedNfJlc9/8BHPfvHTWCP3mvnnprJFXzhqh39w39Dtr5KsqAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQ7ld+kLNGfoq5b/h75r7h981989JZI6/MffPSWSOvzH3z0lkj/L65b146a+SluW++au6bn+KskVfmvvmyuW/oN/fNV501Qr+zRn6KuW9+ggoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO1+Bf7HnTXy0tw3r5w18tLcN/Sb++ar5r75Kea++aq5b146a+SVuW9eOmuE33fWyEtz3/wUc9+8ctbIl8198xPMfQP8nwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO1+Bfj/OWvklblvXjpr5JW5b146a+SluW9+grNGXpr7ht931shPcdbIl8198xOcNfLSWSMvzX3zVWeNvDL3DX/P3DfAexUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGj3Kz/I3DfA/zlr5KW5b77qrJGf4qyRr5r75qeY++anOGvkq84a4e85a+QnOGvkpblvvuqskZfmvqHf3Df8s1QAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGj3Kx931gj8N81988pZIy/NffPKWSNfdtbIK3PfvHTWyCtz37x01shLc9+8ctbIS3Pf/BRnjbwy9w1/z9w3r5w18tLcNy+dNfLK3DcvnTXyytw3L5018tLcNz/BWSMvzX3zVWeNwH9SAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdn/8+a+//h34H3bWCP88c9+8ctbIV81982VnjfD75r75Kc4aod/cN1911shXzX3D33PWyFfNfQP/qyoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALT7lcfOGnlp7puf4qyRV+a+eemsEf5Z5r556ayRl84a+aq5b77qrJGX5r75qrNGvuqsEf6euW9+grNGXjpr5KW5b/h9Z4181dw3XzX3zUtnjdBv7puvOmvkpblvXqkAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANDujz//9de/89BZIz/F3DcvnTXyVXPfvHLWyEtz3/D7zhr5srlvvuqsEX7f3DcvnTXyytw3P8VZI/Sb++bLzhp5Ze6brzpr5KW5b+A/OWvkpblvXjlr5KeY++arKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0O5XPm7um1fOGnnprJGX5r75qrNGXpn7hn+euW9eOmvklblv+OeZ++anOGuE3zf3zUtnjbxy1shLc9+8NPfNK2eNfNXcNy+dNfJVc9981VkjL81989JZI6/MfUO/s0ZemvvmlQoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO1+5ePOGvkpzhp5Ze6bl+a+eeWskS+b+4bfd9bIS3PfvHLWyE8x981PcdbIV81981Vz37x01shLc9/8BHPfvHTWCP88c9+8ctbIV81989JZIy/NfcPvm/vmpbNGXpn75qsqAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQ7lc+bu6bV84aeWnum5fOGnnlrJGvmvvmpbNG+H1z3/wUc9+8dNbIK3PfvHTWyEtz37xy1gh/z9w3XzX3zVedNfLS3Dc/xdw3X3XWyFfNffPSWSNfNffNK2eNvDT3zUtnjbwy981PcdbIS3PfvHLWyEtz37xSAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACg3a983Fkj9Jv75qvmvnnprJGvmvuGfnPffNXcNy+dNfJVc9/w+84a+bK5b+h31gj95r75qrNGvuqska86awT+kwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO1+5ePmvuH3zX3z0lkjr8x981PMffPSWSOvzH3z0lkjXzX3zVedNfJTzH3zVWeNfNncN6/MffPSWSMvnTXyE5w18mVz37xy1shLc9/AfzL3zVedNfLS3DevnDXyZWeNvDL3zVdVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACg3a88NvfNV5018lOcNfLS3Df8s5w18mVz37xy1shLc9+8MvfNS2eNvDT3zVedNfJTnDXyytw3L81989JZIz/B3DcvnTXyVXPfvHTWyCtz37x01shLc9+8ctbIS3PfvHLWyJedNQL/LRUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANr9ysedNcLvm/vmpbNGvmrum5fmvnnlrBHg++a++bKzRl45a+TL5r6h31kjr8x989LcNz/FWSPwn5w18lVz33zVWSMvzX3zSgUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANr9ymNnjdDvrJGX5r75qrNGvmrum5fOGuGf5ayRl+a+eemskVfmvvkpzhp5ae6bV84aeWnum5/irJGvmvvmpbNGvuqskVfmvnlp7puXzhr5qrNGXpn75qWzRvh9c9982Vkjr8x981UVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADa/coPMvfNl5018lVnjfwUc9+8ctbIV81989JZIz/FWSNfddbIV5018tLcN/Q7a+SnmPvmlbNGXjpr5KW5b36Cs0a+bO6bV84a+aqzRl6a++als0ZemfuGfmeNvDT3zSsVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADa/fHnv/76dz7srJGvmvvmq84aeWnum1fOGvkp5r75qrNGXpr7Bv6bzhp5Ze6bLztr5JW5b146a+SluW++6qyRr5r75qvOGvmquW/45zlr5KW5b145a+SluW9eOWvkp5j75qsqAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQ7o8///XXv/PQWSP8PXPfvHLWyFfNffNlZ43A/6q5b146a4TfN/fNS2eNfNXcN1911shLc9/w+84aeWnum686a+SluW9eOWvkq+a++SnOGvmquW9eOmvkpblvfoIKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtfuWxuW9eOmvklblvXjpr5KeY++arzhr5Kea++aqzRl6a++aVs0boN/fNV5018mVz37xy1shLZ43Q76yRr5r75qeY++als0Zemfvmpzhr5KW5b16Z++als0ZeOWvkpblvXjpr5JW5b76qAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7f74819//TsfdtYI8H/mvnnlrJGX5r556ayRV+a+eemskVfmvqHfWSN8w9w38N9y1shLc9+8dNYI/K+a+4bfVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoN2vPHbWyEtz37xy1shLc9+8dNbIK3Pf/BRnjfD75r556ayRrzpr5Kc4a+SluW/4fXPf/BRnjbx01gj/LHPf/BRnjbw0980rZ428NPfNK2eNvDT3zU9x1shXnTXy0tw3r5w18tLcN69UAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABo9yuPzX3zVXPf8PecNfLK3Dc/xdw3L501Qr+5b75q7puvOmvkpblvfoqzRl6Z++anmPuGfmeNvDT3zStz33zZWSP0O2vklblv4D+pAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAu1/5uLNGXpn7hr9n7pufYu6br5r75pWzRuh31shLc9+8dNbIK3Pf8PfMffNTzH3zE5w18tLcNy+dNfLK3DdfddbITzH3DX/P3Dc/wdw3X3bWyCtz33xVBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdr/CP9JZI/Q7a+Sr5r75srNG4H/VWSP8PWeN/ARz33zZ3Df8vrlvfoqzRr7qrBH6nTXyVWeNvDT3zSsVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADa/coPctbIS3PffNXcN/zzzH3zylkj8P8y9w3/LHPffNlZI6/MffPSWSOvnDVCv7lvXjpr5KW5b75q7ptXzhp5ae6brzpr5KW5b145a+TL5r75CSoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANDujz//9de/wyecNfITzH3zZWeNvDL3zUtnjbwy982XnTUC/y1z37x01gh/z9w3P8FZI1829w2/76yRr5r75qWzRl6Z++als0a+au4b+E8qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0++PPf/317/wQZ43w98x988pZI182981XnTXyVXPfvHTWyE8w9w38v5w18lVz37x01shXzX3zylkjP8XcNy+dNfJVc9+8dNYI/Cdz33zVWSMvzX3zylkjL81980oFAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADa/fHnv/76dz7srJFX5r7h7zlr5Kvmvvmqs0a+au6bl84a+Snmvvmqs0ZemvvmlbNGfoq5b36Ks0a+au6brzpr5KW5b77qrJGvmvvmpzhrBPg/c998VQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHZ//Pmvv/6dh84aeWnum1fOGnlp7puXzhp5Ze6brzpr5KeY++als0a+au6bl84a+aq5b36Ks0a+au6brzpr5KW5b145awT+l81981Vnjbw09w2/76yRr5r75qWzRr5q7ht+XwUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHa/8oPMffNlc9+8ctYIf8/cN6+cNfLS3Df0O2vklblvfoq5b146a4R/nrlvXjlrhL9n7puvOmvklblvXpr75qvOGvmquW9emvuGf56zRr5q7ptXKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0O6PP//117/zYWeNfNXcNy+dNfLK3Dc/xVkjL81988pZIz/F3DdfddbIV81989JZI/y+uW/4e84a+aq5b77qrJGfYu6bn+KsEX7f3DcvnTXyU8x988pZIy/NfcPvqwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0O6PP//117/z0FkjL81988pZI182981XnTXyU8x988pZI181981LZ428NPfNV5018lVz33zVWSNfNffNS2eNfNXcN1921shPMPfNS2eNvDT3zStnjbw0980rZ4182dw3r5w18lVz3/D3nDVCv7lvXqkAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7X/lB5r556ayRn2LuG37f3DdfddYI/ea++bKzRl6Z++als0ZeOWvkpblv6Df3zUtnjbxy1shPMffNS2eNfNXcNy+dNfLK3DdfddYI/DfNffNVFQAAAKBdBQAA+P/6okcqAAAKz0lEQVTag4NbS2zlCoBHjclHAONgDAyOMTAOBiFAcchL777xBNp9PbeqANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdr/yRc4a+WRnjbwy981LZ43wc3PfvHTWyKea++als0ZemfvmpblvXjlrBPhvc9+8ctYI/85ZI6/MffPS3DevnDXy0lkjL8198w3mvvlkZ428MvfNS2eNvDL3zSc7a+QbVAAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaPfHn3//9U8+2Fkj32LuG37urJGX5r7h584a4efmvvlkZ428MvfNpzpr5KW5b146a4Sfm/vmU5018i3mvnnprBF+bu4b+p018tLcN/xeKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0O5XvsjcN9/irJFPNffNS3PfvHTWCD83982nOmvkU5018tLcN5/qrJGX5r75VGeNfKq5b146a4Sfm/vmpbNGXpr75lPNffPKWSPf4qwR/p25b77BWSMvzX3zqc4aeWnum1cqAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0+5UvctbIJ5v75pW5b77FWSOfau6bl84aeWXum0921sinmvvmW8x98w3mvnnprJGX5r555awRfj9z33yqs0ZemvvmW8x9w8+dNfKp5r556ayRb3HWyCtz33yqCgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtPvjz7//+icPnTXyLea++RZnjXyquW/4ubNGXpr75lucNfLK3DcvnTXy0tw33+CsET7D3Df83Fkj32Lum1fOGnlp7ptPddbIS3PfvHLWCPxP5r555ayRl+a+eaUCAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7P/78+69/Av+PnTXy0tw3r5w18qnmvnnprJFPNffNS2eNfKq5b146a+SVuW9eOmvkU8198y3OGvkWc9+8ctbIS3PfvHTWyCtz33yLs0ZemvvmG5w18tLcN9/irJFX5r556ayRl+a++QYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADa/cpjZ43AfzL3Db+fuW9eOmvklbNGXpr75lOdNfLS3Defau6bV84a+WRnjbwy9823mPvmpbNGXpn75pPNffOpzhr5VHPfvHTWCP3OGnll7ptPddbIJztr5JW5bz5VBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2v3Kh5v7hn5njXyquW9eOmvkG5w18snmvqHfWSOvzH3z0lkj32Lum28x980rZ428NPfNpzprhJ+b++aTzX3zqc4a+RZz38D/lQoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO1+5YucNfIt5r75FmeNvDT3zStnjbw0982nOmvkpbNG+Lm5bz7VWSPf4qwRfj9njbwy9w3/ztw33+KskU81980rZ428dNYIPzf3zbc4a+SluW9eqQAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLtfgf/n5r556ayRV+a++VRnjbw09823OGvkU501wu9n7ht+bu4bfj9njbwy9823mPuGfnPffIuzRl6a++YbVAAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaPcrwP+as0Y+1dw3n+yskVfmvvlUc998srNGXpn75lucNfLSWSOvzH3z0lkjn2rum0911shLc9+8dNbIp5r7hn5njcD/pbNGXpn75lNVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABoVwEAAADaVQAAAIB2FQAAAKBdBQAAAGhXAQAAANpVAAAAgHYVAAAAoF0FAAAAaFcBAAAA2lUAAACAdhUAAACgXQUAAABo98eff//1Tx46a+SluW/od9bIK3PffIuzRr7F3Def6qyRbzH3DT931shLc998qrNGPtncN5/qrBF+L3PfvHTWyEtz37xy1shLc998i7NGXpn75qWzRr7F3DffoAIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO3++PPvv/7JQ2eNwH8y981LZ428NPfNNzhr5FvMfcO/c9bIK3Pf8O+cNcLPzX3zqc4a4d+Z++ZTnTXyLea+eeWskZfmvnnprJFPNffNK2eNfLK5b145a+SluW9eqQAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0O6PP//+658AAAAArSoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANCuAgAAALSrAAAAAO0qAAAAQLsKAAAA0K4CAAAAtKsAAAAA7SoAAABAuwoAAADQrgIAAAC0qwAAAADtKgAAAEC7CgAAANDuvwAkx4WJRasUFgAAAABJRU5ErkJggg==" }