Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Order terminals

Use our Management API to order payment terminals and accessories.

The Management API lets you order terminals and accessories for delivery to a location of your choice using API requests instead of the Customer Area.

This feature is in the development phase. The API, documentation, and processes will change as the feature evolves. If you have any feedback on the feature, reach out to your Adyen contact.

Products and orders

You can order products for a company account or a merchant account. A product can be:

  • A box containing a payment terminal and default items like a power cable.
  • An accessory, like a privacy shield, a stylus pen, or a replacement power cable.

Apart from the products, an order includes:

  • A billing entity for the company or merchant account. This is where we charge the order to. We create billing entities for you based on the details you provided when you applied for the accounts.
  • A shipping location for the company or merchant account. This is where we send the order. A shipping location is linked to a company account or a merchant account. You create shipping locations yourself.

API key and roles

To authenticate your requests to Management API, you need to have an API credential with an API key and the following roles:

  • Management API—Terminal ordering read
  • Management API—Terminal ordering read and write

If you are using a Terminal API integration with cloud-based communications, you can use the existing API key that you use for Terminal API requests.

Get the product ID

An order for terminal products must contain the IDs of the products you want to order. To retrieve those IDs and decide what to order:

  1. Get the ID of the account you want to order products for. You need to specify that ID in the URL of later requests.

    • For the company ID, make a GET /companies request.
    • For the merchant ID, make a GET /merchants request.

  2. Get a list of payment terminal models you can order for your company or merchant account. Use the following endpoints:

    Get model list for a merchant account

    The response returns the id and name of the various models. You can use the id as a query parameter to filter the product list in the next step.

    Model list
    {
      "data": [
        {
          "id": "Verifone.V400m",
          "name": "Verifone V400m"
        },
        ...
        {
          "id": "Castles.S1F2",
          "name": "Castles S1F2"
        }
      ]
    }
  3. Get a list of products you can order for your company or merchant account. Use the following endpoints, with the country as a query parameter:

    These are the query parameters to filter the paginated response:

    Query parameter Required Result
    country -white_check_mark- Returns products for the country specified by a two-letter country code in ISO 3166-1 alpha-2 format.
    terminalModelId Returns products for the terminal model specified by its ID. This is the id returned in the /terminalModels response. The product list will show the details of the box containing the terminal and all accessories you can order for that terminal model.
    offset Returns products shown on the specified page.
    limit The number of products to have on a page.

    The following example retrieves a list of all products related to the V400m payment terminal that can be ordered for a merchant account in France.

    Get product list by terminal model for a French merchant account
  4. When you receive the response, save the id values of the products you want to order.

    The next example shows the response for the GET merchants/{merchantId}/terminalProducts?country=FR&terminalModelId=Verifone.V400m request (prices have been changed to 0.00 in the example).

Get the billing entity ID

An order for terminal products must contain the ID of a billing entity. This is the legal entity where we charge the order to. We create billing entities for you based on the details provided when you applied for your company and merchant accounts.

  1. Get the billing entity ID for your company or merchant account. Use the following endpoints:

    You can filter the response using the following query parameter:

    • name: the name of the billing entity.
    Get billing entities for a company
    curl https://management-test.adyen.com/v1/companies/{companyId}/billingEntities \
    -H "x-API-key: YOUR_X-API-KEY" \
  2. When you receive the response, save the id of the billing entity to use in your order. The response also returns the name, taxId (VAT number) and contact details for each billing entity.

    Billing entity list
    {
      "data": [
        {
          "id": "Company.ExampleCompany",
          "name": "ExampleCompany",
          "taxId": "111111111",
          "email": "financial@company.com",
          "address": {
            "companyName": "Example Company",
            "streetAddress": "Boulevard Principal 3",
            "streetAddress2": "Tour Azure",
            "postalCode": "23456",
            "city": "Paris",
            "country": "France"
          }
        },
        ...
        {
          "id": "MerchantAccount.ExampleCompanyFrance",
          "name": "ExampleCompanyFrance",
          "taxId": "222222222",
          "email": "jdupont@test.com",
          "address": {
            "companyName": "Example Company France",
            "streetAddress": "11 Rue de Ville",
            "postalCode": "12345",
            "city": "Paris",
            "country": "France"
          }
        }
      ]
    }

Get the shipping location ID

An order for terminal products must contain the ID of a shipping location. This is the street address of the location where you want us to send the order to.

New shipping location

  1. To create a shipping location for your company or merchant account, use the following endpoints:

    Specify the following parameters in the request body:

    Parameter Description
    name A unique reference that lets you recognize the location.
    contact Name and phone number of the individual who can be contacted about the shipment.
    Where to send the order.
    Create shipping location
    curl https://management-test.adyen.com/v1/merchants/{merchantId}/shippingLocations \
    -H "x-API-key: YOUR_X-API-KEY" \
    -X POST \
    -d '{
      "name": "POS France depot",
      "contact": {
        "firstName": "Jesse",
        "lastName": "Dupont",
        "phoneNumber": "+33 1 76 35 07 90",
        "email": "jdupont@test.com"
      },
      "address": {
        "companyName": "Example Company France",
        "streetAddress": "11 Rue de Ville",
        "postalCode": "12345",
        "city": "Paris",
        "stateOrProvince": "",
        "country": "FR"
      }
    }'
  2. When you receive the response, note the following details:

    • id: the generated shipping location ID, for use in an order for terminal products.
    • name: your reference for this location. You can use this to filter the list of shipping locations.
    Shipping location created
    {
      "id": "S2-7145604F44356F424F4369432B3F486B6A6D",
      "name": "POS France depot",
      "contact": {
        "firstName": "Jesse",
        "lastName": "Dupont",
        "phoneNumber": "+33176350790",
        "email": "jdupont@test.com"
      },
      "address": {
        "companyName": "Example Company France",
        "streetAddress": "11 Rue de Ville",
        "postalCode": "12345",
        "city": "Paris"
      }
    }

Existing shipping locations

  1. To get a list of existing shipping locations for your company or merchant account, use the following endpoints:

    You can filter the paginated response using the following query parameters:

    Parameter Description
    name Filters the list by your reference to the shipping location.
    offset Returns locations starting from this offset.
    limit Sets a limit for the number of locations to return.
    Get shipping locations for a merchant account
  2. When you receive the response, save the id of the shipping location to use in your order.

    Shipping locations list
    {
      "data": [
        {
          "id": "S2-7145604F44356F424F4369432B3F486B6A6D",
          "name": "POS France depot",
          "contact": {
            "firstName": "Jesse",
            "lastName": "Dupont",
            "phoneNumber": "+33 1 76 35 07 90",
            "email": "jdupont@test.com"
          },
          "address": {
            "companyName": "Example Company France",
            "streetAddress": "11 Rue de Ville",
            "postalCode": "12345",
            "city": "Paris",
            "country": "France"
          }
        },
        {
          ...
        }
      ]
    }

Create a terminal order

  1. Make sure you have the following details:

  2. To create an order for your company or merchant account, use the following endpoints:

    Specify the following parameters in the request body:

    Parameter Required Description
    customerOrderReference Your purchase order number. This will be printed on the packing list.
    billingEntityId -white_check_mark- ID of the billing entity for the company or merchant account.
    shippingLocationId -white_check_mark- ID of the shipping location where we need to send the order.
    items -white_check_mark- An array listing the id and quantity of each product you want to order.
    taxId Tax number (VAT number) of the billing entity. Specify this parameter when the shipping location and the billing entity are in different countries.

    The next example places an order for one V400m terminal and 20 receipt rolls.

    Place a terminal order
    curl https://management-test.adyen.com/v1/merchants/{merchantId}/terminalOrders \
    -H "x-API-key: YOUR_X-API-KEY" \
    -X POST \
    -d '{
          "items": [
            {
              "id": "TBOX-V400m-774-EU",
              "quantity": 1
            },
            {
              "id": "PART-482077-EU",
              "quantity": 20
            }
          ],
          "customerOrderReference": "YOUR_REFERENCE_1",
          "shippingLocationId": "S2-7145604F44356F424F4369432B3F486B6A6D",
          "billingEntityId": "Company.ExampleCompany"
    }'

    The response echoes the parameters you provided and additionally includes the id and status of your order, the date and time you placed the order, and the full details of the billing entity and the shipping location.

    Order placed
    {
      "id": "7219627091701347",
      "customerOrderReference": "YOUR_REFERENCE_1",
      "status": "Placed",
      "shippingLocation": {
        "id": "S2-7145604F44356F424F4369432B3F486B6A6D",
        "name": "POS France depot",
        "contact": {
          "firstName": "Jesse",
          "lastName": "Dupont",
          "phoneNumber": "+33 1 76 35 07 90",
          "email": "jdupont@test.com"
        },
        "address": {
          "companyName": "Example Company France",
          "streetAddress": "11 Rue de Ville",
          "postalCode": "12345",
          "city": "Paris",
          "country": "France"
        }
      },
      "billingEntity": {
        "id": "Company.ExampleCompany",
        "name": "ExampleCompany",
        "taxId": "111111111",
        "email": "financial@company.com",
        "address": {
          "companyName": "Example Company",
          "streetAddress": "Boulevard Principal 3",
          "streetAddress2": "Tour Azure",
          "postalCode": "23456",
          "city": "Paris",
          "country": "France"
        }
      },
      "orderDate": "2020-01-22T14:12:33Z",
      "items": [
        {
          "id": "TBOX-V400m-684-EU",
          "name": "V400m Package",
          "quantity": 1
        },
        {
          "id": "PART-620222-EU",
          "name": "Receipt Roll",
          "quantity": 20
        }
      ]
    }

When an order reaches the status Shipped, the response also includes a URL where you can track your order.

Terminal Order notifications

To stay informed about your order, you can subscribe to Terminal Order notifications. These notifications are triggered at certain steps in the logistical process and contain information such as shipment date, terminal serial numbers, and track & trace number. We send these platform notifications as an HTTP callback (webhook) to your server.

We also keep you up to date on the status of your order through email messages and in your Customer Area > Orders and returns.

Manage orders

You can view , update, and cancel orders using API requests. However, updating and cancelling is only allowed while the order has the status Placed. This indicates we haven't started processing the order yet.

View orders

You can use the /terminalOrders endpoint to check which orders can still be updated or cancelled, and to get the ID of those orders. To keep up to date on the progress of your order, we recommend using Terminal Order notifications.

List of orders

  • To get the details of all orders for your company or merchant account, use the following endpoints:

    You can filter the paginated response using the following query parameters:

    Parameter Description
    Returns the details of the specified purchase order number.
    status Returns orders with the specified status. Possible values (not case-sensitive): Placed, Confirmed, Cancelled, Shipped, Delivered.
    offset Returns the orders shown on the specified page.
    limit The number of orders to have on a page.
    Get a list of placed orders for a merchant account

    The response returns an array of orders sorted by order date in ascending order. For each order, all order details are included.

Individual order

  • To get the details of an individual order for your company or merchant account, use the following endpoints:

    Get the details of a specific order
    curl https://management-test.adyen.com/v1/merchants/{merchantId}/terminalOrders/{orderId} \
    -H "x-API-key: YOUR_X-API-KEY" \

    The response returns all order details.

Update an order

While an order has the status Placed, you can change the order items, the shipping location, and the billing entity. The request body only needs to contain what you want to change. However, to update the items array, you need to replace the entire array. For example, let's assume the array has three items. To remove one item, the array must include the remaining two items. Or to add one item, the array must include all four items.

  1. Get the ID of the order you want to update and check that the order has the status Placed.

  2. To update the order for your company or merchant account, use the following endpoints:

    Specify the following optional parameters in the request body as needed:

    Parameter Description
    billingEntityId ID of the billing entity for the company or merchant account.
    shippingLocationId ID of the shipping location where we need to send the order.
    items An array listing the id and quantity of each product you want to order. To remove an item, specify all remaining items. To add an item, specify all items already in the order plus the additional item.

    The next request removes the 20 receipt rolls from our example order 7219627091701347 by listing only the remaining order item, and changes the billing entity.

    Update order items and billing entity
    curl https://management-test.adyen.com/v1/merchants/{merchantId}/terminalOrders/7219627091701347 \
    -H "x-API-key: YOUR_X-API-KEY" \
    -X PATCH \
    -d '{
          "items": [
            {
              "id": "V400m_1",
              "quantity": 1
            }
          ],
          "billingEntityId": "MerchantAccount.ExampleCompanyFrance"
    }

    The response returns all order details.

    Order updated
    {
      "id": "7219627091701347",
      "status": "Placed",
      "customerOrderReference": "YOUR_REFERENCE_1",
      "shippingLocation": {
        "id": "S2-7145604F44356F424F4369432B3F486B6A6D",
        "name": "POS France depot",
        "address": {
          "companyName": "Example Company France",
          "streetAddress": "11 Rue de Ville",
          "postalCode": "12345",
          "city": "Paris",
          "country": "France"
        },
        "contact": {
          "firstName": "Jesse",
          "lastName": "Dupont",
          "phoneNumber": "+33 1 76 35 07 90",
          "email": "jdupont@test.com"
        }
      },
      "billingEntity": {
        "id": "MerchantAccount.ExampleCompanyFrance",
        "name": "ExampleCompanyFrance",
        "taxId": "222222222",
        "email": "jdupont@test.com",
        "address": {
          "companyName": "Example Company France",
          "streetAddress": "11 Rue de Ville",
          "postalCode": "12345",
          "city": "Paris",
          "country": "France"
        }
      },
      "orderDate": "2020-01-22T14:12:33Z",
      "items": [
        {
          "id": "V400m_1",
          "name": "V400m terminal package EU/GB",
          "quantity": 1
        }
      ]
    }

Cancel an order

While an order has the status Placed, you can revoke the order.

  1. Get the ID of the order you want to cancel and check that the order has the status Placed.

  2. To cancel an order for your company or merchant account, use the following endpoints:

    Do not specify a request body.

    The next request cancels our example order 7219627091701347.

    Cancel a placed terminal order
    curl https://management-test.adyen.com/v1/merchants/{merchantId}/terminalOrders/7219627091701347/cancel \
    -H "x-API-key: YOUR_X-API-KEY" \
    -X POST \
  3. The response returns all order details, but now the status is changed to Cancelled.
    Order cancelled
    {
      "id": "7219627091701347",
      "status": "Cancelled",
      "customerOrderReference": "YOUR_REFERENCE_1",
      "shippingLocation": {
        "id": "S2-7145604F44356F424F4369432B3F486B6A6D",
        "name": "POS France depot",
        "address": {
          "companyName": "Example Company France",
          "streetAddress": "11 Rue de Ville",
          "postalCode": "12345",
          "city": "Paris",
          "country": "France"
        },
        "contact": {
          "firstName": "Jesse",
          "lastName": "Dupont",
          "phoneNumber": "+33 1 76 35 07 90",
          "email": "jdupont@test.com"
        }
      },
      "billingEntity": {
        "id": "MerchantAccount.ExampleCompanyFrance",
        "name": "ExampleCompanyFrance",
        "taxId": "222222222",
        "email": "jdupont@test.com",
        "address": {
          "companyName": "Example Company France",
          "streetAddress": "11 Rue de Ville",
          "postalCode": "12345",
          "city": "Paris",
          "country": "France"
        }
      },
      "orderDate": "2020-01-22T14:12:33Z",
      "items": [
        {
          "id": "V400m_1",
          "name": "V400m terminal package EU/GB",
          "quantity": 1
        }
      ]
    }

See also