SmartPOS solutions
Note:
We currently offer this product in the following countries:
- Netherlands
- Belgium
As a partner, you can further connect accounts registered in the following countries:
- Italy
- Spain
If you are interested in our Point of Sale solutions, email [email protected]
Our SmartPOS solutions let you initiate payments through:
- Manual input
- Cloud POS payment
- On-same device third-party applications
- Web application
- Native application
Manual input
To start processing payments manually:
- Enter Amount due and select Pay.
- The customer can either tap or insert their card to make the payment.
- Once the payment is completed, a notification is displayed.
Cloud POS payment
With cloud POS payment, you can initiate payments from an external application.
This diagram shows a successful cloud-based POS payment flow. Click to magnify.
⚠️ Note: Before you start initiating payments, you must ensure cloud mode is enabled - see SmartPOS features.
- Create an order. See Recipe - Cloud POS payment .
- Cancel an order. See cancellation.
To receive payments updates subscribe to Event notifications.
On-same device third-party applications
Web applications
Web applications let you initiate payments on-same devices from a browser to the payment app.
This diagram shows a successful web application payment flow. Click to magnify.
Initiate payments
- Before initiating web application payments, you need to create an order.
Example
curl -X POST \
"https://api.multisafepay.com/v1/json/orders?api_key={your-api-key}"
-d '{
"type": "redirect",
"order_id": "my_order_id",
"gateway": "",
"currency": "EUR",
"amount": 10,
"description": "Order Description",
"payment_options": {
"notification_url": "https://www.example.com/paymentnotification",
"notification_method": "POST"
}
}
'
- Initiate a payment using the URL below:
msp://?amount={$amount}&order_id={$order_id}&callback={$callback_url}&printing=true&tipping=true¬ification_url={$notification_url}
amount
: the amount specified in EUR cents.order_id
: your unique identifier for order ID.callback_url
: this URL redirects the customer to receive payment status notifications.- Optionally, you can set
notification_url
to receive order payment updates notifications. tipping
: include a tip.printing
: activate printing function.
Payment status received can either be Completed or Cancelled.
Native applications
Native applications let you initiate payments on-same devices from app to payment app.
This diagram shows a successful native application payment flow. Click to magnify.
Initiate payments
- Before initiating native application payments, you need to create an order.
Example
curl -X POST \
"https://api.multisafepay.com/v1/json/orders?api_key={your-api-key}"
-d '
{
"type": "redirect",
"order_id": "my_order_id",
"gateway": "",
"currency": "EUR",
"amount": 10,
"description": "Order Description",
"payment_options": {
"notification_url": "https://www.example.com/paymentnotification",
"notification_method": "POST"
}
}
'
- To initiate payments - see MultiSafepay Android POS integration .
# API features
In addition to the features mentioned in our API reference, there are POS-specific details you can retrieve via our API, including the Terminal ID that processed a transaction.
Example GET order
{
"success": true,
"data": {
"amount": 1,
"amount_refunded": 0,
"completed": "2024-06-04T15:50:18",
"costs": [
{
"amount": 2,
"description": "2 For Visa Transactions",
"transaction_id": 899813954,
"type": "SYSTEM"
},
{
"amount": 0.6,
"description": "2.9 % For Visa CreditCards Transactions (min 60)",
"transaction_id": 899813955,
"type": "SYSTEM"
}
],
"created": "2024-06-04T15:50:17",
"currency": "EUR",
"custom_info": {
"custom_1": null,
"custom_2": null,
"custom_3": null
},
"customer": {
"address1": null,
"address2": null,
"city": null,
"country": null,
"country_name": null,
"email": null,
"first_name": null,
"house_number": null,
"last_name": null,
"locale": "en_US",
"phone1": null,
"phone2": null,
"state": null,
"zip_code": null
},
"description": "12341234",
"fastcheckout": "NO",
"financial_status": "completed",
"items": null,
"modified": "2024-06-04T15:50:18",
"order_id": "TestGetOrder123123",
"payment_details": {
"account_holder_name": "card holder",
"account_id": null,
"application_id": "a0000000031010",
"authorization_code": "705151",
"card_acceptor_id": "1001001",
"card_acceptor_location": "Amsterdam",
"card_acceptor_name": "TestMSP",
"card_additional_response_data": {
"sca_details": {}
},
"card_authentication_result": null,
"card_entry_mode": "ICC_CONTACTLESS",
"card_expiry_date": "3112",
"card_funding": "D",
"card_product": "F",
"card_product_type": 1,
"card_sequence_number": "0000",
"card_verification_result": "2",
"cardholder_verification_method": "FAILED",
"cardholder_verification_result": "UNKNOWN",
"emv": {
"91": "ab1231231234"
},
"external_transaction_id": "12312312312",
"issuer_bin": "123123",
"issuer_country_code": "ES",
"last4": "1234",
"recurring_flow": null,
"recurring_id": "1231213123",
"recurring_model": null,
"response_code": "00",
"scheme_reference_id": "123123123123123",
"terminal_id": "0000004d",
"type": "VISA"
},
"payment_methods": [
{
"account_holder_name": "card holder",
"amount": 1,
"card_expiry_date": "3112",
"currency": "EUR",
"description": "12341234",
"external_transaction_id": "123123412341234",
"payment_description": "Visa",
"status": "completed",
"type": "VISA"
}
],
"reason": "Approved",
"reason_code": "1000",
"related_transactions": null,
"status": "completed",
"transaction_id": 123412342341234,
"var1": null,
"var2": null,
"var3": null
}
}
Handle notifications
The table below sets out options available for receiving updates on the payments.
POS Solutions | Required | Optional |
---|---|---|
Cloud POS payment | Subscribe to the event notifications. | Configure a webhook. |
Web applications | Set callback_url in the link. | Set notification_url in the link to configure a webhook. |
Native applications | Set package_name in your intent call. | Configure a webhook. |
User guide
Cancellation
You can use two different request methods to cancel an order: POST or PATCH. Both methods require the use of an order_id
and a group API key, which you can find at your MultiSafepay dashboard under Manage groups.
PATCH request
To cancel an order with a PATCH request, follow these instructions:
- The
status
parameter (string) must be set to cancelled. - Set
exclude_order
(boolean) to true. This sets the outcome of the cancellation.
Example Request
curl --location --request PATCH \
--url 'https://api.multisafepay.com/v1/json/orders/{order_id}/?api_key={your-api-key}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json'
--data '
{
"status": "cancelled",
"exclude_order": true
}
'
Example Response
{
"success":true,
"data": {}
}
POST request
To cancel an order with a POST request, no additional parameters are required. Introduce the order_id
and the API key in the URL.
Example request
curl -X POST
"https://api.multisafepay.com/v1/json/orders/{order_id}/cancel?api_key={your-api-key}"
Example response
{
"success": true,
"data": {
"costs": [],
"created": "dateTtime",
"custom_info": {
"custom_1": null,
"custom_2": null,
"custom_3": null
},
"fastcheckout": "NO",
"financial_status": null,
"modified": "dateTtime",
"payment_details": {},
"payment_methods": null,
"status": "cancelled"
}
}
Refunds
How to process refunds
Via the API
See API reference – Refund order.
In your dashboard
- Sign in to your MultiSafepay dashboard .
- Go to Transactions > Transaction overview, and click the relevant transaction.
- On the Transaction details page, click Refund order.
- In the Reason / Description field, enter the reason for the refund or a description of what happened with the order, and then click Complete.
- In the Comment field, enter any additional information.
- In the Amount fields, enter the amount to refund.
- Click Continue.
- Review Refund confirmation, and then click Confirm.
Updates
Make a Get order request to get updates on a specific order.
Testing
You cannot test terminals in your MultiSafepay test account.
Updated 2 months ago