Odeslání dokladu e-mailem

POST
/api/v2/docs/send-mail

Vytvoří 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ázevTypPovinnýPopisPříklad
typeenum anoTyp dokladu: invoice (faktura) nebo cash (hotovostní doklad). invoice
sendByMailMailstring anoE-mailová adresa příjemce. prijemce@example.invalid
sendByMailTemplateinteger neID e-mailové šablony vaší firmy. Bez hodnoty se použije výchozí text e-mailu. null
companyobject 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": "" }
authorobject neÚdaje vystavitele dokladu. Na jeho email půjdou odpovědi příjemce. {"email":"autor@example.invalid"}
numberFormatedstring neČíslo dokladu pro předmět e-mailu a název přílohy PDF. FV2026-1
itemsarray nePoložky dokladu, které se vypíšou v PDF. []
pricesobject neSouč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

Chybové stavy

HTTPKdyPodoba
401Chybí nebo je neplatný API token. status-message
403API token se použil z IP adresy, která není u přístupu povolená, nebo je přístup odepřen. status-message
400Tělo není platný JSON, type není invoice ani cash, nebo chybí adresa příjemce. status-message
200E-mail se nepodařilo předat k odeslání; v těle je status error.
500PDF se z dodaných údajů nepodařilo vytvořit.

Související návody