Solutions

We currently offer this product in the following countries:

CountriesNetherlands, Belgium
Countries for partnersNetherlands, Belgium, Italy, Spain

If you are interested in our Point of Sale solutions, email [email protected].

MultiSafepay POS devices support different payment flows depending on your integration setup and business needs:

Process payments directly on the device without external integration.

Initiate payments from an external system such as your POS or backend.

Trigger payments from applications running on the same device.


Compare payment flows

FeatureManual inputCloud POS paymentOn-device applications
Initiated fromDeviceExternal system (POS/backend)Same device (app or browser)
Integration neededNoneBackend or POS integrationWeb or Android app integration
Best forSimple setups, standalone usagePOS systems and external integrationsCustom apps and embedded experiences
User interactionManual input on deviceTriggered remotelyTriggered from app or browser
Development effortNoneMedium to highMedium to high
FlexibilityLowHighHigh

Manual input

To start processing payments manually on your device:

  1. Enter Amount due and select Pay.
  2. The customer taps or inserts their card to complete the payment.
  3. Once the payment is completed, a confirmation is displayed on the device.


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.

Cloud POS flow
⚠️

Note

Before initiating payments, ensure cloud mode is enabled. See features.

Cloud POS payments are not designed for on-device integrations.
Avoid using Cloud POS for native applications running on the same device.

Instead, use the on-device applications flow.

How to initiate payments

Enable cloud mode

Enable cloud mode on your device. To learn how to enable this setting, see Cloud Mode - Features.

Create an order

In your backend, create an order and include the parameters mentioned in the request:

curl --request POST \
     --url 'https://testapi.multisafepay.com/v1/json/orders?api_key=YOUR_GROUP_API_KEY' \
     --header 'Accept: application/json' \
     --header 'Content-Type: application/json' \
     --data '
{
  "type": "redirect",
  "order_id": "test-663",
  "gateway": "",
  "currency": "EUR",
  "amount": 100,
  "description": "Test Order Kiosk Description",
  "payment_options": {
    "notification_url": "https://www.example.com/event/notifications",
    "notification_method": "POST"
  },
  "customer": {
    "locale": "nl_NL",
    "phone": "0612345678",
    "email": "[email protected]"
  },
  "gateway_info": {
    "terminal_id": "000000MB"
  }
}'

For more information, see Recipe – Cloud POS payment

Wake up the device

Once the payment is created from your backend, the device will wake up and show the amount and details on the payment screen.

Subscribe to event notifications

Subscribe to our event notifications to receive real-time status updates. You can integrate this in your backend to show success and declined screens.


On-same device third-party applications

Web applications

Web applications let you initiate payments on the same device from a browser to the MultiSafepay payment app.

This diagram shows a successful web application payment flow. Click to magnify.

Web app flow

How to initiate payments

Create an order

Create an order using the MultiSafepay API.

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 the payment

Use the following URL to initiate a payment:

msp://?amount={$amount}&order_id={$order_id}&callback={$callback_url}&printing=true&tipping=true&notification_url={$notification_url}

Parameters

  • amount: Amount in EUR cents
  • order_id: Unique identifier (max 50 characters, allowed: a-z A-Z 0-9 / - _)
  • callback_url: Redirect URL to return payment status
  • notification_url (optional): Receive asynchronous payment updates
  • tipping: Enable tipping
  • printing: Enable receipt printing

Handle the payment result

The payment will return one of the following statuses:

  • completed
  • cancelled

Native applications (App-to-app)

Native applications let you initiate payments from your app to the MultiSafepay payment app on the same device.

This diagram shows a successful native application payment flow. Click to magnify.

Native app flow

How to initiate payments

For native integrations, we provide an Android integration using Android Intents .

Your application sends a payment request via an Intent, which is handled by the MultiSafepay app. Once the transaction is processed, the user is redirected back to your app with a callback containing the payment result.

Possible statuses:

  • completed
  • canceled
  • declined
  • Return an exception

See the integration guide:
MultiSafepay Android POS integration

ℹ️

Tap to Pay

App-to-app behavior on Tap to Pay devices may differ slightly from SmartPOS terminals.
See the Tap to Pay notes in the integration guide for specific limitations and requirements:


Next step: Device setup