Nyugták
A nyugta végpontok kezelik a NAV felé jelentendő nyugtaadatokat. A beküldött nyugták a háttérben napi jelentésekbe (Report) aggregálódnak, amelyeket a Fiscon küld be a NAV-nak.
Nyugta létrehozása
curl -X POST https://api.fiscon.hu/v1/receipts \
-H "Authorization: Bearer fis_live_xxxxxxxxxxxxxxxx" \
-H "Idempotency-Key: 6f1e2c2a-2a3b-4d3e-9c1a-8b2f6e6c2b21" \
-H "Content-Type: application/json" \
-d '{
"external_id": "pos-2026-000123",
"taxpayer_id": "txp_01hz3k9c8v0000000000000000",
"receipt_number": "A/2026/00042",
"series": "A",
"document_type": "sale_document",
"issued_at": "2026-09-02T14:30:00+02:00",
"currency": "HUF",
"totals": [
{ "vat_category": "27%", "gross": "1270.00" },
{ "vat_category": "AAM", "gross": "500.00" }
]
}'$payload = [
'external_id' => 'pos-2026-000123',
'taxpayer_id' => 'txp_01hz3k9c8v0000000000000000',
'receipt_number' => 'A/2026/00042',
'series' => 'A',
'document_type' => 'sale_document',
'issued_at' => '2026-09-02T14:30:00+02:00',
'currency' => 'HUF',
'totals' => [
['vat_category' => '27%', 'gross' => '1270.00'],
['vat_category' => 'AAM', 'gross' => '500.00'],
],
];
$curl = curl_init('https://api.fiscon.hu/v1/receipts');
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer fis_live_xxxxxxxxxxxxxxxx',
'Idempotency-Key: 6f1e2c2a-2a3b-4d3e-9c1a-8b2f6e6c2b21',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);use Illuminate\Support\Facades\Http;
use Illuminate\Support\Str;
$response = Http::withToken(config('services.fiscon.key'))
->withHeader('Idempotency-Key', (string) Str::uuid())
->post('https://api.fiscon.hu/v1/receipts', [
'external_id' => 'pos-2026-000123',
'taxpayer_id' => 'txp_01hz3k9c8v0000000000000000',
'receipt_number' => 'A/2026/00042',
'series' => 'A',
'document_type' => 'sale_document',
'issued_at' => '2026-09-02T14:30:00+02:00',
'currency' => 'HUF',
'totals' => [
['vat_category' => '27%', 'gross' => '1270.00'],
['vat_category' => 'AAM', 'gross' => '500.00'],
],
]);
$receipt = $response->json();const response = await fetch('https://api.fiscon.hu/v1/receipts', {
method: 'POST',
headers: {
Authorization: 'Bearer fis_live_xxxxxxxxxxxxxxxx',
'Idempotency-Key': crypto.randomUUID(),
'Content-Type': 'application/json',
},
body: JSON.stringify({
external_id: 'pos-2026-000123',
taxpayer_id: 'txp_01hz3k9c8v0000000000000000',
receipt_number: 'A/2026/00042',
series: 'A',
document_type: 'sale_document',
issued_at: '2026-09-02T14:30:00+02:00',
currency: 'HUF',
totals: [
{ vat_category: '27%', gross: '1270.00' },
{ vat_category: 'AAM', gross: '500.00' },
],
}),
});
const receipt = await response.json();Mezők
| Mező | Kötelező | Leírás |
|---|---|---|
external_id | igen | A te rendszered szerinti egyedi azonosító, max. 255 karakter. |
taxpayer_id | igen | A nyugtát kibocsátó adóalany nyilvános azonosítója (txp_...), a szervezetedhez kell tartoznia. |
receipt_number | igen | A nyugta sorszáma, max. 255 karakter. |
series | nem | Nyugtasorozat kódja, max. 255 karakter. |
document_type | nem | sale_document vagy modifying_document. Alapértelmezett: sale_document. |
issued_at | igen | A nyugta kiállításának időpontja, ISO 8601 formátumban. |
currency | igen | Pénznem-kód: HUF, EUR vagy USD. |
totals | igen | ÁFA-kategóriánkénti bruttó összesítők listája, legalább 1 elemmel. Nincs felső korlát az elemszámra. |
totals[].vat_category | igen | Max. 50 karakter, az adóalanyhoz szinkronizált NAV ÁFA-kategóriák egyike — lásd Adóalanyok. |
totals[].gross | igen | Bruttó összeg számként (stringként is elfogadva). |
A végpont az Idempotency-Key fejlécet kötelezően megköveteli.
A havonta beküldhető nyugták száma a szervezeted csomagjától függően korlátozott (Starter: 10 000, Business: 100 000, Platform: korlátlan). A keret betelte esetén a kérés 403 státusszal és PLAN_LIMIT_EXCEEDED hibakóddal tér vissza — lásd Hibakezelés.
Válasz
{
"id": "rcp_01hz3k9c8v0000000000000000",
"external_id": "pos-2026-000123",
"status": "received",
"created_at": "2026-09-02T14:30:05+02:00"
}Állapotok (status)
| Érték | Jelentés |
|---|---|
received | A nyugta beérkezett, feldolgozásra vár. |
validated | A nyugta adatai ellenőrizve lettek. |
ready | A nyugta készen áll rá, hogy bekerüljön egy napi jelentésbe. |
aggregated | A nyugta bekerült egy jelentésbe — ettől kezdve a nyugta már nem módosítható. |
invalid | A nyugta adatai érvénytelenek, nem kerül bele jelentésbe. |
Nyugták listázása
A lista taxpayer_id és status szerint szűrhető, és oldalankénti (offset alapú) lapozást használ a page és limit paraméterekkel — lásd a Lapozás szakaszt a meta/links mezők leírásáért.
GET /v1/receipts?taxpayer_id=txp_01hz3k9c8v0000000000000000&status=aggregated&limit=50&page=2
curl https://api.fiscon.hu/v1/receipts \
-H "Authorization: Bearer fis_live_xxxxxxxxxxxxxxxx"$curl = curl_init('https://api.fiscon.hu/v1/receipts');
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer fis_live_xxxxxxxxxxxxxxxx',
],
]);
$response = curl_exec($curl);
curl_close($curl);use Illuminate\Support\Facades\Http;
$receipts = Http::withToken(config('services.fiscon.key'))
->get('https://api.fiscon.hu/v1/receipts')
->json();const response = await fetch('https://api.fiscon.hu/v1/receipts', {
headers: {
Authorization: 'Bearer fis_live_xxxxxxxxxxxxxxxx',
},
});
const receipts = await response.json();