QR REST API slouží k internetovému propojení pokladního nebo jiného obchodního systému s Comgate a umožňuje zahájit QR / účtovou platbu na platebním terminálu a následně zjistit její výsledek. Podporujeme pouze datový formát JSON. Proces zpracování jedné transakce se obvykle skládá z následujících kroků:
Autentizace (povinný první krok)
Zavolejte metodu POST /pos/auth-api/authenticate s HTTP Basic přihlašovacími údaji (hlavička Authorization: Basic [base64_encode(user:password)]). API vrátí JWT token a jeho expiraci (expiry). Tento token použijte v hlavičce Authorization: Bearer [token] u všech volání QR API, dokud nevyprší; poté se autentizujte znovu.
Založení platby (povinný krok)
Zavolejte metodu POST /pos/qr-api/payment a předejte povinné údaje: merchantId, terminalId, amount (v minoritních jednotkách), currency a method; volitelně refId a created. Pokud je požadavek v pořádku, API vrátí unikátní identifikátor transakce transId a paymentData pro vykreslení QR kódu. Identifikátor transId uložte, je klíčový pro všechny další operace s touto platbou.
Zjištění stavu platby (volitelný krok)
Opakovaně volejte metodu GET /pos/qr-api/payment/{transId}, dokud se stav (status) nezmění z 'PENDING' na finální hodnotu. Možné finální stavy jsou:
POST /pos/qr-api/payment/{transId}/cancel. Odpověď obsahuje výsledný stav (status 'CANCELLED').Authorization: Bearer [token] s platným JWT tokenem získaným z Auth API. Token má omezenou platnost (expiry); po jejím vypršení získejte nový přes POST /pos/auth-api/authenticate.
Ověří HTTP Basic přihlašovací údaje a vrátí JWT Bearer token sloužící k autorizaci QR API. Přihlašovací údaje předejte v hlavičce Authorization: Basic [base64_encode(user:password)]. V JSON body je POVINNÝ identifikátor obchodníka mid (bez něj 400) — zapeče se do tokenu a všechny navazující operace QR API jsou omezeny na tohoto obchodníka (requesty na jiného obchodníka či platby jiného obchodníka vrací 403).
| mid required | string Identifikátor obchodníka zapečený do tokenu (MID scoping). |
| token | string JWT Bearer token. |
| expiry | string Expirace tokenu (ISO 8601). |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
{- "mid": "MERCH001"
}{- "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJNT05FVCJ9.dummy-signature",
- "expiry": "2026-06-18T10:15:00+00:00"
}Vrátí QR platební metody dostupné pro daný terminál a měnu (QR metody jednotlivých bank a generický QR převod) včetně názvů a log bank. U EUR se nabídka řídí zemí provozovny (SK → SK QR metoda, jinak EU QR metoda); s parametrem bothEurQr se vrátí SK i EU QR metody. Metody se filtrují i podle podporované částky a limitů okamžitých plateb dle povinného amount.
| merchantId required | string Identifikátor obchodníka. |
| terminalId required | string Identifikátor terminálu. |
| currency required | string Kód měny dle ISO 4217 (CZK nebo EUR). |
| amount required | integer >= 1 Částka v minoritních jednotkách (haléře/centy) — filtruje metody dle podporované částky a limitů okamžitých plateb. |
| bothEurQr | boolean Nepovinné; u EUR vrátí SK i EU QR metody bez ohledu na zemi provozovny. |
| lang | string Nepovinný jazyk názvů metod (cs/sk/en, výchozí cs). |
Array of objects | |||||||||
Array
| |||||||||
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
{- "merchantId": "MERCH001",
- "terminalId": "TERM001",
- "currency": "CZK",
- "amount": 12500,
- "bothEurQr": false,
- "lang": "cs"
}{- "methods": [
- {
- "id": "BANK_CZ_T_OTHER",
- "name": "České banky",
}
]
}Vytvoří novou QR platbu. Při úspěchu vrátí identifikátor transakce transId a data platby potřebná k vykreslení QR kódu.
| merchantId required | string Identifikátor obchodníka. |
| terminalId required | string Identifikátor terminálu. |
| refId | string Nepovinná reference platby na straně obchodníka. Jde na výpis obchodníka (sloupec „ID od klienta“), pokud není vyplněný |
| amount required | integer >= 1 Částka v minoritních jednotkách (haléře/centy). |
| currency required | string Kód měny dle ISO 4217. |
| method required | string Platební metoda, např. |
| created | string Nepovinný čas vytvoření platby (ISO 8601). |
| variableSymbol | string <= 128 characters Nepovinný variabilní symbol zadaný obsluhou, tedy vlastní reference obchodníka uložená k platbě. Libovolný text do 128 bajtů; delší hodnota nebo NUL vrací 400. Když je vyplněný, je to on, co se objeví na výpisu obchodníka (sloupec „ID od klienta“) a |
| transId | string Identifikátor transakce. |
| refId | string Reference platby (echo z requestu). |
| status | string Stav platby; ihned po založení je PENDING. |
| paymentData | string Data platebního QR kódu; formát dle metody: SPAYD pro CZ metody, PAY by square pro BANK_SK_T_OTHER, EPC QR (SEPA) pro BANK_EUR_T_OTHER. U platby ve stavu CANCELLED chybí. |
| paymentRejectedReason | string Důvod zamítnutí; pouze u platby ve stavu CANCELLED. |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
{- "merchantId": "MERCH001",
- "terminalId": "TERM001",
- "refId": "ORDER-2026-001",
- "amount": 12500,
- "currency": "CZK",
- "method": "BANK_CZ_T_OTHER",
- "created": "2026-05-27T10:00:00Z",
- "variableSymbol": "FAKTURA-2026/01"
}{- "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"
}Vrátí aktuální stav platby. Dotazujte se opakovaně, dokud status nedosáhne finální hodnoty (PAID / CANCELLED).
| transId required | string Example: AAAA-BBBB-CCCC Identifikátor transakce. |
| transId | string Identifikátor transakce. |
| refId | string Reference platby na straně obchodníka. |
| status | string Stav platby: PENDING, PAID nebo CANCELLED. |
| paymentRejectedReason | string Důvod zrušení platby; jen u platby ve stavu CANCELLED. Hodnoty jsou stabilní a dají se použít jako klíče: |
Array of objects Refundace této platby v chronologickém pořadí; bez refundací prázdné pole. Slouží k dohledání |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
# 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": "Customer timeout",
- "refunds": [
- {
- "transRefundId": "123456",
- "refId": "REFUND-001",
- "amount": 2000
}
]
}<span class='cg-lang cg-lang-en'>Rewrites the payment method on an EXISTING pending payment and restarts its expiry, so that going back to the bank list does not create a second payment for one purchase. The response has the same shape as creating a payment, plus the new expiry. Nothing is written until every check passes, so a rejected request leaves the payment usable with its ORIGINAL method - pick another bank and call again. The number of changes is not limited and the expiry is never shortened. Amount limits are not re-checked here: the amount does not change, so the list from /methods still applies.<span class='cg-lang cg-lang-cs'>Přepíše metodu na EXISTUJÍCÍ rozdělané platbě a spustí její expiraci znovu, aby návrat k seznamu bank nevyrobil na jednu útratu druhou platbu. Odpověď má stejný tvar jako založení platby plus novou expiraci. Dokud neprojdou všechny kontroly, nezapisuje se nic, takže po odmítnutí platba dál platí s PŮVODNÍ metodou - stačí vybrat jinou banku a zavolat znovu. Počet změn omezený není a expirace se nikdy nezkrátí. Limity částky se tu znovu nekontrolují: částka se nemění, takže platí seznam ze /methods.<span class='cg-lang cg-lang-sk'>Prepíše metódu na EXISTUJÚCEJ rozrobenej platbe a spustí jej expiráciu znova. Po odmietnutí platba ďalej platí s PÔVODNOU metódou.
| transId required | string Example: AA25-FD8D-9GF5 |
| method required | string <span class='cg-lang cg-lang-en'>Method identifier from /methods.<span class='cg-lang cg-lang-cs'>Identifikátor metody ze /methods.<span class='cg-lang cg-lang-sk'>Identifikátor metódy zo /methods. |
| transId | string |
| refId | string or null |
| status | string |
| paymentData | string <span class='cg-lang cg-lang-en'>QR payload to redraw. Today it does not depend on the chosen bank, but it is returned so that a future change does not need both sides to be updated.<span class='cg-lang cg-lang-cs'>Data QR kódu k překreslení. Dnes na zvolené bance nezávisí, vrací se proto, aby budoucí změna neznamenala úpravu na obou stranách.<span class='cg-lang cg-lang-sk'>Dáta QR kódu na prekreslenie. |
| expiration | string <date-time> |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
{- "method": "BANK_CZ_T_KB"
}{- "transId": "AA25-FD8D-9GF5",
- "refId": "string",
- "status": "PENDING",
- "paymentData": "string",
- "expiration": "2026-09-22T15:10:00+02:00"
}Prodlouží expiraci nepotvrzené platby na 7 dní pro případ, že obchodník vydal zboží, přestože platbu nepotvrdil. Platba zůstává očekávaná a párovatelná, takže po příchodu peněz se standardní cestou překlopí na zaplacenou. Délku určuje server, volající ji nevolí. Volání je idempotentní a expiraci nikdy nezkrátí. Zaplacená platba vrátí 200 beze změny (peníze mezitím dorazily), zrušená 400 — nevzkřísí se a pozdní peníze jdou dnešním procesem do vratky.
| transId required | string Example: AAAA-BBBB-CCCC Identifikátor transakce. |
| note | string <= 1000 characters Nepovinná poznámka obchodníka uložená k platbě, např. kontakt na zákazníka pro pozdější dohledání. |
| transId | string Identifikátor transakce. |
| refId | string Reference platby. |
| status | string Stav platby. |
| expiration | string Nová expirace platby (ISO 8601). |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
{- "note": "Zákazník: 777123456"
}{- "transId": "AAAA-BBBB-CCCC",
- "refId": "ORDER-2026-001",
- "status": "PENDING",
- "expiration": "2026-09-08T10:00:00+02:00"
}Zruší platbu. Odpověď obsahuje výsledný stav (CANCELLED).
| transId required | string Example: AAAA-BBBB-CCCC Identifikátor transakce. |
| transId | string Identifikátor transakce. |
| status | string Stav platby. |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
| errorMessage | string Chybová zpráva. |
# 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"
}Založí požadavek na refundaci platby. Refundovat lze jen zaplacenou (PAID) platbu. Lze provést částečnou i plnou refundaci; součet refundací nesmí přesáhnout částku platby. Požadavek se zpracovává asynchronně — výsledek sledujte přes GET /pos/qr-api/payment/{transId}/refund/{transRefundId}.
| transId required | string Example: AAAA-BBBB-CCCC Identifikátor transakce. |
| amount required | integer >= 1 Částka refundace v minoritních jednotkách. |
| created required | string Čas vytvoření refundace (ISO 8601). |
| refId | string Nepovinná reference refundace na straně obchodníka — refundaci s platbou páruje transId v URL. |