Request for QR Code
API URL = https://api.qrstart.eu
Method = POST
Method = POST
{
"type": "bank",
"apikey": "ApiKey",
"amount": 1000,
"currency": "CZK",
"date": "20210101",
"account": "123456789/6666",
"note": "QR Platba",
"variable": "20210001"
}
Response for QR Code
{
"success": true,
"url": "https://api.qrstart.eu/files/abcdefghijklmn.png"
}
Request for PDF upload
API URL = https://upload.qrstart.eu
Method = POST multipart/form-data
Method = POST multipart/form-data
curl -F "apiKey=ApiKey" -F "file=@/var/www/your-site/file.pdf" https://upload.qrstart.eu
Response for PDF upload
{
"success": true,
"fingerprint": "315add676b4eeb3f606cfe8903448ed8c2ac468d"
}
Input parameters
-
type- type of code-
possible values are bank, ean13, code128, text (default bank)
-
type bank:
amount- the amount (int or float)- required
currency- CZK or EUR- required for CZ/SK bank
- for SEPA bank, the currency is automatically EUR
bank- CZ or SK or SEPA- CZ for czech QR code, SK for slovak QR code (it means CZ for czech bank app, SK for slovak bank app)
- SEPA means EPC SEPA format
- if empty, CZ for CZK currency and SK for EUR currency will be used
account- whole account number include bank code (123-456789123/4567)- for CZK currency
iban- IBAN- required for EUR currency (or for CZK, if you don't want to fill account)
swift- SWIFT code (BIC)variable- variable symbolconstant- constant symbolspecific- specific symbolnote- note for the payerdate- due date (format YYYYMMDD)size- size of generated png image in pixels (min. 50, max. 600, default 150)- for pdf the size is the width in points (min. 50, max. 600, default 150)
margin- image margin in pixels (default 2)tag- internal note (visible in the dashboard, max. 50 chars)reference- payer reference- for SK bank EUR currency (variable and constant and specific must be empty)
- for SEPA bank
beneficiary- beneficiary name (max. 70 chars)- required for SEPA bank
- recommended for SK bank (required by PAY by square specification 1.2.0), longer text is cut to 70 chars
remittance- remittance text- for SEPA bank only (reference must be empty)
instant0-1 (int) (default 0)- use 1 for instant payment
- for CZ bank only
-
type ean13:
code- EAN-13 code- required
size- 1-5 (int) (default 2)- for pdf the size is the width in points (min. 50, max. 600, default 150)
tag- internal note (visible in the dashboard, max. 50 chars)
-
type code128:
code- some text- required
size- 1-5 (int) (default 2)- for pdf the size is the width in points (min. 50, max. 600, default 150)
tag- internal note (visible in the dashboard, max. 50 chars)
-
type text:
code- some text- required
size- size of generated png image in pixels (min. 50, max. 600, default 150)- for pdf the size is the width in points (min. 50, max. 600, default 150)
margin- image margin in pixels (default 2)tag- internal note (visible in the dashboard, max. 50 chars)
-
-
if you want put QR Code to you pdf file (max. size 2 MB), add following parameters
file- location of pdf file on servertop- position from top in pointsbottom- position from bottom in points- in one request use top or bottom
left- position from left in pointsright- position from right in points- in one request use left or right
page- the page on which the image is saved (default 1)- for last page use value -1
- all sizes and positions in the PDF are in points (1 pt = 1/72 inch ≈ 0.35 mm, 10 mm ≈ 28 pt)
-
by default the QR code image is generated as PNG, but you can also generate it as JPG/WEBP
output- jpg or webp- jpg value creates an image in JPG format
- webp value creates an image in WEBP format
You can also generate a QR code with a GET request
Request for QR Code
API URL = https://api.qrstart.eu
Method = GET
Method = GET
https://api.qrstart.eu/?type=bank&apikey=XXXXXX&amount=10¤cy=EUR&iban=SK3112000000198742637541
The result, if the input is valid, is the URL of the qr code image. Otherwise, error text and http code 400.If you put &image=1 as another parameter in the URL, the image itself will be sent instead of the URL of the image.
image- output as image with header Content-Type image/png (or image/jpeg or image/webp)- the only possible value is 1
Signed request – without exposing the API key
If you want to put the QR code directly into a public page or an e-mail (<img src="...">), do not put the apikey parameter into the URL. Send your KID (Key ID) and a signature of the parameters instead. The API key is not visible in the URL and nobody can change any parameter or create a new request.
API URL = https://api.qrstart.eu
Method = GET
Method = GET
https://api.qrstart.eu/?type=bank&amount=10¤cy=EUR&iban=SK3112000000198742637541&image=1&kid=a1b2c3d4&signature=3f8a...e91c
kid- KID (Key ID) of your API key- you can find it next to your API key in the dashboard my.qrstart.eu
signature- HMAC-SHA256 signature (lowercase hex)- all request parameters except
kidandsignatureare signed, sorted by name and encoded like the PHP functionhttp_build_query()(space as+) - the signing key is your API key
- all request parameters except
- if any parameter is changed, the API returns the error
wrong signature - for e-mails and web pages (
<img src="...">or a clickable link) always useimage=1, the URL then returns the image itself- without
image=1it returns only the text address of a temporary file that is deleted after one hour image=1must be signed together with the other parameters, it cannot be added to the URL afterwards
- without
expires- optional, Unix timestamp until which the URL works- after that the API returns the error
link expired, without it the URL never expires - it is part of the signature, so it cannot be changed
- for e-mails leave enough time, the recipient may open the e-mail weeks later
- after that the API returns the error
- with
image=1the image is generated and counted as a request on the first load, repeated loads of the same URL within 24 hours are served from cache and are not counted, after 24 hours the next load is counted again - without
image=1every load is counted - instead of the
apikeyparameter, the signature can also be used for POST requests and for upload.qrstart.eu - in the PHP SDK use the method
signedUrl()
$params = [
'type' => 'bank',
'amount' => 10,
'currency' => 'EUR',
'iban' => 'SK3112000000198742637541',
'image' => 1
];
ksort($params);
$params['signature'] = hash_hmac('sha256', http_build_query($params), 'ApiKey');
$params['kid'] = 'KID';
$url = 'https://api.qrstart.eu/?' . http_build_query($params);