How it works
- OAuth connection β The merchant authorizes the POS vendorβs app using Qontoβs OAuth flow, granting
terminal.readand/orterminal.writescopes. - List terminals β The POS system fetches the merchantβs available terminals via
GET /v2/terminals. - Initiate payment β When a customer is ready to pay, the POS system pushes the exact amount to the selected terminal via
POST /v2/terminals/{id}/payment.
Terminal availability
The terminal must be powered on and connected to the internet to receive payment requests. If the terminal is offline when a payment is initiated, the request is accepted (202 Accepted) but no response will be delivered. Implement a client-side timeout (~120 seconds) to handle this case.
Idempotency
TheX-Qonto-Idempotency-Key header is required on POST /v2/terminals/{id}/payment. Use it to safely retry requests without creating duplicate payments.
Metadata
The optionalmetadata field lets you attach free-form context to a payment. It must be a valid JSON object. It is 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.