Odeslání dokladu e-mailem
/api/v2/docs/send-mailVytvoří z dodaných údajů dokladu PDF a odešle ho jako přílohu na adresu v sendByMailMail. Adresa nemá ID dokladu, takže e-mail lze odeslat i před uložením dokladu. Všechny údaje, které mají být v PDF, musíte poslat v těle požadavku. Samotné ID existujícího dokladu nestačí.
Tělo posílejte jako JSON objekt podle ukázky. Údaje mohou být také zabalené v objektu data. Povinné jsou jen type a sendByMailMail. Ostatní pole (vystavitel, kontakt, bankovní údaje, data vystavení, zdanitelného plnění a splatnosti, položky, ceny, záhlaví a zápatí) se vypíšou do PDF.
PDF a e-mail
Faktura (invoice) se vytvoří ve formátu A4, případně ve vlastní tiskové šabloně firmy. Hotovostní doklad (cash) se vytvoří ve formátu účtenky 58 mm. Příloha se jmenuje podle numberFormated, např. FV2026-1.pdf.
S sendByMailTemplate se předmět a text e-mailu vezmou z e-mailové šablony vaší firmy (viz E-mailové šablony). Proměnné v šabloně se doplní z company, numberFormated, variable, hash, issued, taxable, due a z bankovních údajů. Číslo účtu a název banky můžete poslat v objektu bank nebo jako accountNumber a bankName přímo v kořeni těla. Bez šablony se použije výchozí e-mail s předmětem ve tvaru „Ukázkový obchod Vám vystavil/a doklad č. FV2026-1“, kde se doplní company.name a numberFormated.
Odpovědi příjemce půjdou na adresu author.email.
Odpověď
Po zpracování vrací HTTP 200. Pole status je success, když byl e-mail přijat k odeslání, jinak error. Pole response obsahuje doplňující informace o odeslání, nebo null. Úspěch znamená předání e-mailu k odeslání, ne potvrzení doručení do schránky příjemce.
Chybějící type nebo sendByMailMail, jiný typ než invoice a cash nebo neplatný JSON vrací HTTP 400.
Autentizace a oprávnění
Vyžaduje API token: Bearer v hlavičce nebo URL token.
Parametry
Tělo požadavku
| Název | Typ | Povinný | Popis | Příklad |
|---|---|---|---|---|
type | enum | ano | Typ dokladu: invoice (faktura) nebo cash (hotovostní doklad). | invoice |
sendByMailMail | string | ano | E-mailová adresa příjemce. | prijemce@example.invalid |
sendByMailTemplate | integer | ne | ID e-mailové šablony vaší firmy. Bez hodnoty se použije výchozí text e-mailu. | null |
company | object | ne | Údaje vystavitele (název, IČ, DIČ, adresa, kontakty). Použijí se v PDF i v proměnných e-mailové šablony. | {
"id": 501,
"payer": 1,
"name": "Ukázkový obchod",
"ic": "00000000",
"dic": "",
"vat": 1,
"address": "Ukázková 1<br />Ukázkové město",
"web": "",
"email": "obchod@example.invalid",
"phone": "",
"registration": ""
}
|
author | object | ne | Údaje vystavitele dokladu. Na jeho email půjdou odpovědi příjemce. | {"email":"autor@example.invalid"} |
numberFormated | string | ne | Číslo dokladu pro předmět e-mailu a název přílohy PDF. | FV2026-1 |
items | array | ne | Položky dokladu, které se vypíšou v PDF. | [] |
prices | object | ne | Součty dokladu a rozpis podle sazeb DPH. | {
"priceExclVat": 100,
"priceInclVat": 121,
"priceInclVatBeforeRounding": 121,
"discount": 0,
"currency": "CZK",
"prices": [
{
"name": "21 %",
"code": "21",
"value": 1.21,
"priceExclVat": 100,
"priceInclVat": 121,
"priceInclVatBeforeRounding": 121
}
]
}
|
Příklad požadavku
curl
curl -X POST 'https://www.elpokladny.cz/api/v2/docs/send-mail' \
-H 'Authorization: Bearer elp_live_example.example_secret' \
-H 'Content-Type: application/json' \
--data-raw '{
"company": {
"id": 501,
"payer": 1,
"name": "Ukázkový obchod",
"ic": "00000000",
"dic": "",
"vat": 1,
"address": "Ukázková 1<br />Ukázkové město",
"web": "",
"email": "obchod@example.invalid",
"phone": "",
"registration": ""
},
"bank": {
"bankName": "",
"bank": "",
"accountNumber": "",
"iban": "",
"swift": ""
},
"periodic": null,
"print": true,
"customPrint": {
"cash": false,
"invoice": false,
"order": false,
"offer": false,
"reservation": false
},
"type": "invoice",
"logo": null,
"contact": null,
"id": 1,
"number": 1,
"numberFormated": "FV2026-1",
"variable": "2026001",
"barcode": 0,
"displayDic": 0,
"displayAd": 0,
"displayStock": 0,
"displayTable": 0,
"stock": {
"id": 1,
"code": "SKLAD",
"name": "Ukázkový sklad"
},
"closure": null,
"table": null,
"payment": "bank",
"transactionInfo": null,
"delivery": null,
"author": {
"id": 101,
"username": "ukazka",
"email": "autor@example.invalid",
"name": "Ukázkový uživatel"
},
"issued": "30.10.2026",
"dueDays": 14,
"due": "13.11.2026",
"taxable": "30.10.2026",
"items": [],
"prices": {
"priceExclVat": 100,
"priceInclVat": 121,
"priceInclVatBeforeRounding": 121,
"discount": 0,
"currency": "CZK",
"prices": [
{
"name": "21 %",
"code": "21",
"value": 1.21,
"priceExclVat": 100,
"priceInclVat": 121,
"priceInclVatBeforeRounding": 121
}
]
},
"remainPrices": 0,
"currencies": [],
"discount": 0,
"proforma": false,
"proformaId": null,
"storno": 0,
"stornoId": null,
"edit": 0,
"editId": null,
"commission": null,
"text": "",
"title": "",
"headerCash": "",
"footerCash": "",
"headerInvoice": "",
"footerInvoice": "",
"headerProforma": "",
"footerProforma": "",
"eet": {
"enabled": false,
"idJednotky": null,
"idProvoz": null,
"idPokl": null,
"type": null,
"code": ""
},
"hash": "ukazkovy-hash",
"internalConsumption": 0,
"sendByMail": 0,
"sendByMailMail": "prijemce@example.invalid",
"sendByMailTemplate": null
}'PHP
<?php
$ch = curl_init('https://www.elpokladny.cz/api/v2/docs/send-mail');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array (
0 => 'Authorization: Bearer elp_live_example.example_secret',
1 => 'Content-Type: application/json',
),
CURLOPT_POSTFIELDS => '{
"company": {
"id": 501,
"payer": 1,
"name": "Ukázkový obchod",
"ic": "00000000",
"dic": "",
"vat": 1,
"address": "Ukázková 1<br />Ukázkové město",
"web": "",
"email": "obchod@example.invalid",
"phone": "",
"registration": ""
},
"bank": {
"bankName": "",
"bank": "",
"accountNumber": "",
"iban": "",
"swift": ""
},
"periodic": null,
"print": true,
"customPrint": {
"cash": false,
"invoice": false,
"order": false,
"offer": false,
"reservation": false
},
"type": "invoice",
"logo": null,
"contact": null,
"id": 1,
"number": 1,
"numberFormated": "FV2026-1",
"variable": "2026001",
"barcode": 0,
"displayDic": 0,
"displayAd": 0,
"displayStock": 0,
"displayTable": 0,
"stock": {
"id": 1,
"code": "SKLAD",
"name": "Ukázkový sklad"
},
"closure": null,
"table": null,
"payment": "bank",
"transactionInfo": null,
"delivery": null,
"author": {
"id": 101,
"username": "ukazka",
"email": "autor@example.invalid",
"name": "Ukázkový uživatel"
},
"issued": "30.10.2026",
"dueDays": 14,
"due": "13.11.2026",
"taxable": "30.10.2026",
"items": [],
"prices": {
"priceExclVat": 100,
"priceInclVat": 121,
"priceInclVatBeforeRounding": 121,
"discount": 0,
"currency": "CZK",
"prices": [
{
"name": "21 %",
"code": "21",
"value": 1.21,
"priceExclVat": 100,
"priceInclVat": 121,
"priceInclVatBeforeRounding": 121
}
]
},
"remainPrices": 0,
"currencies": [],
"discount": 0,
"proforma": false,
"proformaId": null,
"storno": 0,
"stornoId": null,
"edit": 0,
"editId": null,
"commission": null,
"text": "",
"title": "",
"headerCash": "",
"footerCash": "",
"headerInvoice": "",
"footerInvoice": "",
"headerProforma": "",
"footerProforma": "",
"eet": {
"enabled": false,
"idJednotky": null,
"idProvoz": null,
"idPokl": null,
"type": null,
"code": ""
},
"hash": "ukazkovy-hash",
"internalConsumption": 0,
"sendByMail": 0,
"sendByMailMail": "prijemce@example.invalid",
"sendByMailTemplate": null
}',
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;javascript
const response = await fetch("https://www.elpokladny.cz/api/v2/docs/send-mail", {
"method": "POST",
"headers": {
"Authorization": "Bearer elp_live_example.example_secret",
"Content-Type": "application/json"
},
"body": "{\n \"company\": {\n \"id\": 501,\n \"payer\": 1,\n \"name\": \"Ukázkový obchod\",\n \"ic\": \"00000000\",\n \"dic\": \"\",\n \"vat\": 1,\n \"address\": \"Ukázková 1<br />Ukázkové město\",\n \"web\": \"\",\n \"email\": \"obchod@example.invalid\",\n \"phone\": \"\",\n \"registration\": \"\"\n },\n \"bank\": {\n \"bankName\": \"\",\n \"bank\": \"\",\n \"accountNumber\": \"\",\n \"iban\": \"\",\n \"swift\": \"\"\n },\n \"periodic\": null,\n \"print\": true,\n \"customPrint\": {\n \"cash\": false,\n \"invoice\": false,\n \"order\": false,\n \"offer\": false,\n \"reservation\": false\n },\n \"type\": \"invoice\",\n \"logo\": null,\n \"contact\": null,\n \"id\": 1,\n \"number\": 1,\n \"numberFormated\": \"FV2026-1\",\n \"variable\": \"2026001\",\n \"barcode\": 0,\n \"displayDic\": 0,\n \"displayAd\": 0,\n \"displayStock\": 0,\n \"displayTable\": 0,\n \"stock\": {\n \"id\": 1,\n \"code\": \"SKLAD\",\n \"name\": \"Ukázkový sklad\"\n },\n \"closure\": null,\n \"table\": null,\n \"payment\": \"bank\",\n \"transactionInfo\": null,\n \"delivery\": null,\n \"author\": {\n \"id\": 101,\n \"username\": \"ukazka\",\n \"email\": \"autor@example.invalid\",\n \"name\": \"Ukázkový uživatel\"\n },\n \"issued\": \"30.10.2026\",\n \"dueDays\": 14,\n \"due\": \"13.11.2026\",\n \"taxable\": \"30.10.2026\",\n \"items\": [],\n \"prices\": {\n \"priceExclVat\": 100,\n \"priceInclVat\": 121,\n \"priceInclVatBeforeRounding\": 121,\n \"discount\": 0,\n \"currency\": \"CZK\",\n \"prices\": [\n {\n \"name\": \"21 %\",\n \"code\": \"21\",\n \"value\": 1.21,\n \"priceExclVat\": 100,\n \"priceInclVat\": 121,\n \"priceInclVatBeforeRounding\": 121\n }\n ]\n },\n \"remainPrices\": 0,\n \"currencies\": [],\n \"discount\": 0,\n \"proforma\": false,\n \"proformaId\": null,\n \"storno\": 0,\n \"stornoId\": null,\n \"edit\": 0,\n \"editId\": null,\n \"commission\": null,\n \"text\": \"\",\n \"title\": \"\",\n \"headerCash\": \"\",\n \"footerCash\": \"\",\n \"headerInvoice\": \"\",\n \"footerInvoice\": \"\",\n \"headerProforma\": \"\",\n \"footerProforma\": \"\",\n \"eet\": {\n \"enabled\": false,\n \"idJednotky\": null,\n \"idProvoz\": null,\n \"idPokl\": null,\n \"type\": null,\n \"code\": \"\"\n },\n \"hash\": \"ukazkovy-hash\",\n \"internalConsumption\": 0,\n \"sendByMail\": 0,\n \"sendByMailMail\": \"prijemce@example.invalid\",\n \"sendByMailTemplate\": null\n}"
});
const data = await response.json();Ukázkové odpovědi
E-mail předán k odeslání (HTTP 200)
application/json
{
"status": "success",
"response": null
}
E-mail se nepodařilo předat k odeslání (HTTP 200)
application/json
{
"status": "error",
"response": null
}
Chybí adresa příjemce (HTTP 400)
application/json
{
"status": "error",
"message": "Chybí e-mail příjemce."
}
Možné chyby
| HTTP | Kdy | Podoba |
|---|---|---|
| 401 | Chybí nebo je neplatný API token. | status-message |
| 403 | API token se použil z IP adresy, která není u přístupu povolená, nebo je přístup odepřen. | status-message |
| 400 | Tělo není platný JSON, type není invoice ani cash, nebo chybí adresa příjemce. | status-message |
| 200 | E-mail se nepodařilo předat k odeslání; v těle je status error. | |
| 500 | PDF se z dodaných údajů nepodařilo vytvořit. |