Skip to main content
POST
/
v2
/
terminals
/
{id}
/
payment
Create a terminal payment
curl --request POST \
  --url https://thirdparty.qonto.com/v2/terminals/{id}/payment \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'X-Qonto-Idempotency-Key: <x-qonto-idempotency-key>' \
  --data '
{
  "amount": {
    "value": "13.30",
    "currency": "EUR"
  },
  "metadata": {
    "order_id": "order-456",
    "table": "12"
  }
}
'
{
  "terminal_payment": {
    "id": "5f8a9b2c-1d3e-4f5a-8b9c-7d6e5f4a3b2c",
    "terminal_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "amount": {
      "value": "13.30",
      "currency": "EUR"
    },
    "created_at": "2026-04-01T14:30:00Z",
    "metadata": {
      "order_id": "order-456",
      "table": "12",
      "source": "pos_vendor_identifier"
    }
  }
}

Authorizations

Authorization
string
header
required

Bearer authorization header: Bearer <token>, where <token> is the access token received from the authorization server at the end of the OAuth 2.0 flow.

Headers

X-Qonto-Idempotency-Key
string
required

Learn more in Idempotent Requests.

Example:

"123e4567-e89b-12d3-a456-426614174000"

X-Qonto-Staging-Token
string

Required only for Sandbox API requests; to get one, please sign up to the Developer Portal.

Path Parameters

id
string<uuid>
required

Terminal UUID (from GET /v2/terminals).

Body

application/json
amount
object
required
metadata
object

Optional free-form JSON object. Must be a valid JSON object and must not exceed 1kB. Stored as-is and echoed back in the 202 response. Use it to cross-reference the payment with your own system — for example an order ID, table number, or any other POS-specific data. The content is not interpreted by Qonto.

Example:
{
"order_id": "order-456",
"table": "12",
"source": "pos_vendor_identifier"
}

Response

The payment has been accepted and is being processed asynchronously.

terminal_payment
object
required