The QR REST API connects a cash register or other business system to Comgate over the Internet and lets you initiate a QR / account payment on a payment terminal and subsequently determine its result. We only support the JSON data format. The process of processing one transaction usually consists of the following steps:
Authentication (mandatory first step)
Call the POST /pos/auth-api/authenticate method with HTTP Basic credentials (header Authorization: Basic [base64_encode(user:password)]). The API returns a JWT token and its expiry. Use this token in the Authorization: Bearer [token] header for all QR API calls until it expires; after that, authenticate again.
Creating a payment (mandatory step)
Call the POST /pos/qr-api/payment method and pass the mandatory data: merchantId, terminalId, amount (in minor units), currency and method; optionally refId and created. If the request is correct, the API returns a unique transaction identifier transId and paymentData for rendering the QR code. Save the transId, it is key for all further operations with this payment.
Determining the payment status (optional step)
Repeatedly call the GET /pos/qr-api/payment/{transId} method until the status changes from 'PENDING' to a final value. Possible final states are:
POST /pos/qr-api/payment/{transId}/cancel method. The response contains the resulting status ('CANCELLED').Authorization: Bearer [token] with a valid JWT token obtained from the Auth API. The token has a limited validity (expiry); after it expires, obtain a new one via POST /pos/auth-api/authenticate.
Verifies HTTP Basic credentials and returns a JWT Bearer token used to authorize the QR API. Pass credentials in the Authorization: Basic [base64_encode(user:password)] header.
| token | string JWT Bearer token. |
| expiry | string Token expiration (ISO 8601). |
| errorMessage | string Error message. |
| errorMessage | string Error message. |
# You can also use wget curl -X POST https://payments.comgate.cz/pos/auth-api/authenticate \ -H 'Authorization: Basic MTIzNDU2Omd4NHE4T1YzVEp0Nm5vSm5maGpxSkt5WDNaNlljaDB5' \ -H 'Content-Type: application/json'
{- "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJNT05FVCJ9.dummy-signature",
- "expiry": "2026-06-18T10:15:00+00:00"
}Creates a new QR payment. On success it returns the transaction identifier transId and the payment data needed to render the QR code.
| merchantId required | string Merchant identifier. |
| terminalId required | string Terminal identifier. |
| refId | string Optional merchant payment reference. |
| amount required | integer Amount in minor units (e.g. hellers/cents). |
| currency required | string ISO 4217 currency code. |
| method required | string Payment method, e.g. |
| created | string Optional payment creation timestamp (ISO 8601). |
| transId | string Transaction identifier. |
| refId | string Merchant payment reference (echo of the request). |
| status | string Payment status; right after creation it is PENDING. |
| paymentData | string Payment QR code in SPAYD format. Not present for a CANCELLED payment. |
| paymentRejectedReason | string Reason for rejection; present only for a CANCELLED payment. |
| errorMessage | string Error message. |
| errorMessage | string Error message. |
{- "merchantId": "MERCH001",
- "terminalId": "TERM001",
- "refId": "ORDER-2026-001",
- "amount": 12500,
- "currency": "CZK",
- "method": "QR_T_CZ_OTHER",
- "created": "2026-05-27T10:00:00Z"
}{- "transId": "AAAA-BBBB-CCCC",
- "refId": "ORDER-2026-001",
- "status": "PENDING",
- "paymentData": "SPD*1.0*ACC:CZ6508000000192000145399*AM:125.00*CC:CZK*MSG:Platba ORDER-2026-001",
- "paymentRejectedReason": "string"
}Returns the current state of the payment. Poll until status reaches a final value (PAID / CANCELLED).
| transId required | string Example: AAAA-BBBB-CCCC Transaction identifier. |
| transId | string Transaction identifier. |
| refId | string Merchant payment reference. |
| status | string Payment status: PENDING, PAID or CANCELLED. |
| paymentRejectedReason | string Reason for rejection; present only for a CANCELLED payment. |
| errorMessage | string Error message. |
| errorMessage | string Error message. |
# You can also use wget curl -X GET https://payments.comgate.cz/pos/qr-api/payment/{transId} \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJNT05FVCJ9.dummy-signature'
{- "transId": "AAAA-BBBB-CCCC",
- "refId": "ORDER-2026-001",
- "status": "PAID",
- "paymentRejectedReason": "string"
}Cancels the payment. The response contains the resulting state (CANCELLED).
| transId required | string Example: AAAA-BBBB-CCCC Transaction identifier. |
| transId | string Transaction identifier. |
| status | string Payment status. |
| paymentRejectedReason | string Reason for rejection; present only if the payment was rejected. |
| errorMessage | string Error message. |
| errorMessage | string Error message. |
# You can also use wget curl -X POST https://payments.comgate.cz/pos/qr-api/payment/{transId}/cancel \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJNT05FVCJ9.dummy-signature' \ -H 'Content-Type: application/json'
{- "transId": "AAAA-BBBB-CCCC",
- "status": "CANCELLED",
- "paymentRejectedReason": "string"
}