---
title: "Create POS order"
method: POST
path: "/orders"
tags: ["Point of Sale"]
---

# Create POS order

`POST /orders`

Create an order for Point of Sale

## Request body

- union
  - object — Order created with the cloud payment flow
    - `type` string, required — The type of payment flow.
    - `order_id` string, required — Your unique (client-defined) identifier for the order.
    - `currency` string, ISO-4217 currency code, required — The currency of the payment. **Format:** [ISO-4217 currency code](https://en.wikipedia.org/wiki/ISO_4217).
    - `amount` integer, required — The payment amount in the currency's smallest unit: - Decimal currencies: Value for 10 EUR = 1000 (1000 cents) - Zero-decimal currencies: Value for 10 JPY = 10 **Discounts** To discount: - An entire order, enter a reduced amount. - Specific items in the order, in the `shopping_cart`, reduce the `unit_price` of the relevant items.
    - `description` string, required — A description of the cloud payment. Appears on payment pages and customer bank statements (if supported by the bank).
    - `payment_options` object — Your [webhook endpoint](https://docs.multisafepay.com/docs/webhook#configure-your-webhook-endpoint)
      - `notification_url` string, url — The [webhook endpoint](https://docs.multisafepay.com/docs/webhook#configure-your-webhook-endpoint) for MultiSafepay to send status updates and other notifications about orders for this site.
      - `notification_method` 'POST' | 'GET' — Sets the webhook [notification method](https://docs.multisafepay.com/docs/webhook#3-acknowledge-the-notification). We recommend setting this to `POST` to reduce network load and increase security.
    - `customer` object — The customer’s personal information.
      - `locale` 'cs_CZ' | 'de_AT' | 'de_DE' | 'en_US' | 'fi_FI' | 'fr_BE' | 'fr_FR' | 'it_IT' | 'nl_BE' | 'nl_NL' | 'pl_PL' | 'es_ES' | 'sv_SE' | 'zh_CN', ab_CD with ISO 639 language codes and ISO 3166 country codes — **Format:** ab_CD with [ISO 639 language codes](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) and [ISO 3166 country codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). |Locale|Language & country| |--------|--------| |`cs_CZ`|Czech | |`de_AT`|German (Austria)| |`de_DE`|German (Germany)| |`en_US`|American English| |`fi_FI`|Finnish| |`fr_BE`|French (Belgium)| |`fr_FR`|French (France)| |`it_IT`|Italian| |`nl_BE`|Dutch (Belgium)| |`nl_NL`|Dutch (Netherlands)| |`pl_PL`|Polish| |`es_ES`|Spanish| |`sv_SE`|Swedish| |`zh_CN`|Chinese|
      - `first_name` string — The customer’s first name.
      - `last_name` string — The customer’s last name.
      - `phone` string — The customer’s phone number.
      - `email` string — The customer’s email address.
    - `gateway_info` object, required — Information about the payment gateway used for the order.
      - `terminal_id` string — The unique identifier of the terminal. To find the `terminal_id` for your device: 1. Sign in to your <a href="https://merchant.multisafepay.com" target="_blank">MultiSafepay dashboard</a> <i class="fa fa-external-link" style="font-size:12px;color:#8b929e"></i>. 2. Go to Devices > Terminals. 3. Your terminal_id is displayed under TID
    - `shopping_cart` object — The array of items in the customer's shopping cart, including the shipping costs, and the tax class (as defined in `checkout_options`). **Required for:** BNPL orders, but recommended for all orders. Displays on [payment pages](https://docs.multisafepay.com/docs/payment-pages/), [FastCheckout pages](https://docs.multisafepay.com/docs/fastcheckout/), and in your dashboard. To learn how to calculate the order `amount` from the `shopping_cart`, see [Rounding rule](/docs/rounding-rule/). **Discounts** - For non-BNPL orders, see Recipe – [Discount an order](/recipes/discount-an-order/). - For BNPL orders, see Recipe – [Discount a BNPL order](/recipes/discount-a-bnpl-order/).
      - `items` object[] — The items in the customer's shopping cart. Specify the relevant tax ruling per item.
        - `name` string — The name of the product or service.
        - `description` string — A description of the product or service.
        - `unit_price` number, float — The unit price (in decimals) of the item, excluding VAT. The currency of the shopping cart is set at order level using `currency`. **Example:** The value for a €90 backpack is `90`.
        - `quantity` integer — The number of units of the item.
        - `merchant_item_id` string — Your unique (client-defined) identifier for the product or service. **⚠️Note:** To avoid validation errors, we recommend using only these ASCII characters in your item ID: alphanumeric, `-`, `_`, `.`, `:`, `/`. If this item specifies the shipping costs, set to `msp-shipping`.
        - `tax_table_selector` string — Your client-defined identifier for a tax table, specified as `checkout_options.tax_tables.alternate.name`.
        - `weight` object — The weight per product.
          - `unit` 'KG' — The unit of weight.
          - `value` number — The weight of the item corresponding to the unit. For a 2 kilogram product: - Set `value` to `2`. - Set `unit` to `KG`.
  - object — Order created with the app-to-app payment flow, where the customer initiates and completes the payment on the same device.
    - `type` string, required — The type of payment flow.
    - `order_id` OrderId, required — unresolved $ref
    - `currency` Currency, required — unresolved $ref
    - `amount` Amount, required — unresolved $ref
    - `description` string, required — A description of the payment. Appears on payment pages and customer bank statements (if supported by the bank).
    - `payment_options` object — Contains: - URLs to your success page and cancel page. Make sure your URL only contains specific set of ASCII characters (alphanumeric, -, _, ., :, /). - Your [webhook endpoint](https://docs.multisafepay.com/docs/webhook#configure-your-webhook-endpoint)
      - `notification_url` string, url — The [webhook endpoint](https://docs.multisafepay.com/docs/webhook#configure-your-webhook-endpoint) for MultiSafepay to send status updates and other notifications about orders for this site.
      - `notification_method` 'POST' | 'GET' — Sets the webhook [notification method](https://docs.multisafepay.com/docs/webhook#3-acknowledge-the-notification). We recommend setting this to `POST` to reduce network load and increase security.
      - `redirect_url` string, url — The page customers are redirected to: - After **successful** payment, your success page, or thank you page - Where further steps of confirmation are necessary, to the next step in the process - If the transaction status is [Uncleared](https://docs.multisafepay.com/docs/uncaptured/)
      - `cancel_url` string, url — The page customers are redirected to after **unsuccessful** payments.
    - `customer` object — The customer’s personal information.
      - `locale` 'cs_CZ' | 'de_AT' | 'de_DE' | 'en_US' | 'fi_FI' | 'fr_BE' | 'fr_FR' | 'it_IT' | 'nl_BE' | 'nl_NL' | 'pl_PL' | 'es_ES' | 'sv_SE' | 'zh_CN', ab_CD with ISO 639 language codes and ISO 3166 country codes — **Format:** ab_CD with [ISO 639 language codes](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) and [ISO 3166 country codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). |Locale|Language & country| |--------|--------| |`cs_CZ`|Czech | |`de_AT`|German (Austria)| |`de_DE`|German (Germany)| |`en_US`|American English| |`fi_FI`|Finnish| |`fr_BE`|French (Belgium)| |`fr_FR`|French (France)| |`it_IT`|Italian| |`nl_BE`|Dutch (Belgium)| |`nl_NL`|Dutch (Netherlands)| |`pl_PL`|Polish| |`es_ES`|Spanish| |`sv_SE`|Swedish| |`zh_CN`|Chinese|
      - `first_name` string — The customer’s first name.
      - `last_name` string — The customer’s last name.
      - `phone` string — The customer’s phone number.
      - `email` string — The customer’s email address.
    - `shopping_cart` ShoppingCart — unresolved $ref
  - object — Order created with the web-to-app payment flow, where the customer initiates the payment on a web interface and completes it on the app.
    - `type` string, required — The type of payment flow.
    - `order_id` OrderId, required — unresolved $ref
    - `currency` Currency, required — unresolved $ref
    - `amount` Amount, required — unresolved $ref
    - `description` string, required — A description of the payment. Appears on payment pages and customer bank statements (if supported by the bank).

## Response `200`

Request successful

- object
  - `success` boolean — Indicates whether the request was successful.
  - `data` object
    - `order_id` string — Your unique (client-defined) identifier for the order.
    - `session_id` string — The unique identifier of the session.
    - `events_token` string — The token used to subscribe to [event notifications](/docs/event-notifications).
    - `events_stream_url` string — The URL to the event stream for this order. Use this URL to subscribe to [event notifications](/docs/event-notifications).

## Other responses

- `404` — Error

---

[API](https://skmtc.dev/multisafepay/apis/multisafepay-banking-order-api.md) · [All operations](https://skmtc.dev/multisafepay/apis/multisafepay-banking-order-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/multisafepay/multisafepay-banking-order-api/revisions/ce9612e4a307/schema)
