API Dokumentácia
Kompletná dokumentácia pre Easy Square Pay by Square API — generujte QR kódy z vášho systému.
Rýchly štart
Vygenerujte QR kód jedným príkazom:
curl -X POST https://api.easy-square.sk/api/v1/pay-by-square/qr-code \
-H "Content-Type: application/json" \
-H "X-Api-Email: vas@email.sk" \
-H "X-Api-Key: esq_vas_api_kluc" \
-d '{
"beneficiaryName": "Firma s.r.o.",
"iban": "SK7700000000000000000000",
"amount": 100.00
}' \
--output qr-code.png
Výsledok: PNG obrázok s Pay by Square QR kódom pripravený na tlač alebo vloženie do faktúry.
Poznámka: Príklady v dokumentácii používajú testovacie údaje (fiktívny IBAN, názov firmy). Pred nasadením do produkcie nahraďte všetky hodnoty reálnymi údajmi.
Autentifikácia
Každý request vyžaduje dva hlavičky:
| Hlavička | Popis |
|---|---|
X-Api-Email |
Email použitý pri registrácii |
X-Api-Key |
API kľúč získaný po registrácii |
API kľúč sa zobrazí jednorazovo po úspešnej registrácii. Uložte si ho bezpečne — nedá sa zobraziť znova.
Generovanie QR kódu
POST /api/v1/pay-by-square/qr-code
Content-Type: application/json
Vráti PNG alebo JPEG obrázok s Pay by Square QR kódom.
Platobné údaje
| Parameter | Typ | Povinný | Popis |
|---|---|---|---|
beneficiaryName |
string | áno | Meno príjemcu (max 70 znakov) |
iban |
string | áno | IBAN účet príjemcu (15-34 znakov) |
amount |
number | áno | Suma v EUR (0.01 – 999 999 999.99) |
currency |
string | nie | Mena, ISO 4217 kód (3 znaky, napr. EUR, CZK). Predvolená EUR |
variableSymbol |
string | nie | Variabilný symbol (max 10 číslic) |
constantSymbol |
string | nie | Konštantný symbol (max 4 číslice) |
specificSymbol |
string | nie | Špecifický symbol (max 10 číslic) |
paymentNote |
string | nie | Poznámka k platbe (max 140 znakov) |
dueDate |
string | nie | Dátum splatnosti (YYYY-MM-DD) |
bic |
string | nie | BIC/SWIFT kód banky (max 11 znakov) |
beneficiaryAddressLine1 |
string | nie | Adresa príjemcu — ulica (max 70) |
beneficiaryAddressLine2 |
string | nie | Adresa príjemcu — mesto (max 70) |
Branding (voliteľné)
| Parameter | Typ | Predvolená | Popis |
|---|---|---|---|
type |
string | PAY |
PAY (modrý) alebo INVOICE (oranžový) |
position |
string | BOTTOM |
Pozícia loga: TOP, BOTTOM, LEFT, RIGHT |
colorScheme |
string | MEDIUM |
Farebná schéma: LIGHT, MEDIUM, GRAY, DARK |
withFrame |
boolean | true |
Dekoratívny rámik s logom Pay by Square |
size |
integer | 256 |
Veľkosť v pixeloch (64 – 960, krok 64) |
outputFormat |
string | PNG |
Formát: PNG, JPEG alebo JPG |
Odpoveď
Úspech (200): Binárny obrázok (image/png alebo image/jpeg)
Chyba: JSON s popisom problému:
{
"status": 429,
"error": "RATE_LIMIT_EXCEEDED",
"message": "Denný limit 100 QR kódov prekročený, skúste zajtra"
}
Príklady — generovanie QR kódu
Python
import requests
response = requests.post(
"https://api.easy-square.sk/api/v1/pay-by-square/qr-code",
headers={
"X-Api-Email": "vas@email.sk",
"X-Api-Key": "esq_vas_api_kluc",
},
json={
"beneficiaryName": "Firma s.r.o.",
"iban": "SK7700000000000000000000",
"amount": 100.00,
"variableSymbol": "2024001",
},
)
if response.status_code == 200:
with open("qr-code.png", "wb") as f:
f.write(response.content)
print("QR kód uložený do qr-code.png")
else:
print(f"Chyba: {response.json()}")
JavaScript (Node.js)
const fs = require("fs");
const response = await fetch(
"https://api.easy-square.sk/api/v1/pay-by-square/qr-code",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Api-Email": "vas@email.sk",
"X-Api-Key": "esq_vas_api_kluc",
},
body: JSON.stringify({
beneficiaryName: "Firma s.r.o.",
iban: "SK7700000000000000000000",
amount: 100.0,
variableSymbol: "2024001",
}),
}
);
if (response.ok) {
const buffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync("qr-code.png", buffer);
console.log("QR kód uložený do qr-code.png");
} else {
console.error("Chyba:", await response.json());
}
PHP
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://api.easy-square.sk/api/v1/pay-by-square/qr-code',
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-Api-Email: vas@email.sk',
'X-Api-Key: esq_vas_api_kluc',
],
CURLOPT_POSTFIELDS => json_encode([
'beneficiaryName' => 'Firma s.r.o.',
'iban' => 'SK7700000000000000000000',
'amount' => 100.00,
'variableSymbol' => '2024001',
]),
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
file_put_contents('qr-code.png', $response);
echo "QR kód uložený do qr-code.png";
} else {
echo "Chyba: " . $response;
}
C# (.NET)
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post,
"https://api.easy-square.sk/api/v1/pay-by-square/qr-code");
request.Headers.Add("X-Api-Email", "vas@email.sk");
request.Headers.Add("X-Api-Key", "esq_vas_api_kluc");
request.Content = JsonContent.Create(new
{
beneficiaryName = "Firma s.r.o.",
iban = "SK7700000000000000000000",
amount = 100.00,
variableSymbol = "2024001"
});
var response = await client.SendAsync(request);
if (response.IsSuccessStatusCode)
{
var bytes = await response.Content.ReadAsByteArrayAsync();
await File.WriteAllBytesAsync("qr-code.png", bytes);
Console.WriteLine("QR kód uložený do qr-code.png");
}
else
{
var error = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Chyba: {error}");
}
Java
HttpClient client = HttpClient.newHttpClient();
String json = """
{
"beneficiaryName": "Firma s.r.o.",
"iban": "SK7700000000000000000000",
"amount": 100.00,
"variableSymbol": "2024001"
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.easy-square.sk/api/v1/pay-by-square/qr-code"))
.header("Content-Type", "application/json")
.header("X-Api-Email", "vas@email.sk")
.header("X-Api-Key", "esq_vas_api_kluc")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<byte[]> response = client.send(request,
HttpResponse.BodyHandlers.ofByteArray());
if (response.statusCode() == 200) {
Files.write(Path.of("qr-code.png"), response.body());
System.out.println("QR kód uložený do qr-code.png");
} else {
System.out.println("Chyba: " + new String(response.body()));
}
Zostatok kvóty
GET /api/v1/pay-by-square/quota
Vráti informáciu o zostávajúcej dennej kvóte pre aktuálneho používateľa.
curl https://api.easy-square.sk/api/v1/pay-by-square/quota \
-H "X-Api-Email: vas@email.sk" \
-H "X-Api-Key: esq_vas_api_kluc"
Odpoveď:
{
"remaining": 87,
"limit": 100,
"used": 13
}
Príklady — zostatok kvóty
Python
response = requests.get(
"https://api.easy-square.sk/api/v1/pay-by-square/quota",
headers={
"X-Api-Email": "vas@email.sk",
"X-Api-Key": "esq_vas_api_kluc",
},
)
quota = response.json()
print(f"Zostáva: {quota['remaining']} / {quota['limit']}")
JavaScript (Node.js)
const response = await fetch(
"https://api.easy-square.sk/api/v1/pay-by-square/quota",
{
headers: {
"X-Api-Email": "vas@email.sk",
"X-Api-Key": "esq_vas_api_kluc",
},
}
);
const quota = await response.json();
console.log(`Zostáva: ${quota.remaining} / ${quota.limit}`);
PHP
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://api.easy-square.sk/api/v1/pay-by-square/quota',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Api-Email: vas@email.sk',
'X-Api-Key: esq_vas_api_kluc',
],
]);
$response = curl_exec($ch);
curl_close($ch);
$quota = json_decode($response, true);
echo "Zostáva: {$quota['remaining']} / {$quota['limit']}";
C# (.NET)
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get,
"https://api.easy-square.sk/api/v1/pay-by-square/quota");
request.Headers.Add("X-Api-Email", "vas@email.sk");
request.Headers.Add("X-Api-Key", "esq_vas_api_kluc");
var response = await client.SendAsync(request);
var json = await response.Content.ReadAsStringAsync();
Console.WriteLine(json);
Java
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.easy-square.sk/api/v1/pay-by-square/quota"))
.header("X-Api-Email", "vas@email.sk")
.header("X-Api-Key", "esq_vas_api_kluc")
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Rate limiting
| Plán | Limit | Popis |
|---|---|---|
| FREE | 100 QR / deň | Zdieľaný denný limit + 10 / IP adresa |
| KREDIT | Podľa zostatku | Bez denného limitu, platíte za každý QR kód |
Po prekročení limitu API vráti 429 Too Many Requests.
Chybové kódy
| HTTP kód | Popis | Kedy nastane |
|---|---|---|
| 400 | Neplatný request | Chýba povinný parameter, neplatný IBAN |
| 401 | Neautorizovaný | Chýba alebo neplatný API kľúč |
| 403 | Zakázaný | Neaktívny účet |
| 429 | Limit prekročený | Denná kvóta vyčerpaná alebo prázdny kredit |
| 500 | Interná chyba | Chyba na strane servera |