API local
Programul tău vorbește cu casa de marcat, prin aplicația FiscalLink.
Aplicația FiscalLink servește un API REST pe calculatorul sau telefonul de lângă casă. Trimiți JSON, aplicația comandă casa și îți întoarce rezultatul. Aceleași rute pentru Datecs, Tremol și Daisy; diferențele dintre mărci le tratează aplicația.
Adresa API-ului
Aplicația ascultă pe două porturi fixe. Toate rutele încep cu /api.
| Mod | Adresă | Note |
|---|---|---|
| Securizat (HTTPS) | https://localhost. | Adresa recomandată. Numele se rezolvă la 127.0.0.1, adică același calculator. |
| Local (HTTP) | http://{ip-local}:65400/api | În rețeaua locală, fără TLS. |
Porturile nu se configurează. Ca să afli adresa exactă când rulezi, întreabă aplicația: cele două rute de mai jos merg mereu, chiar și fără licență.
GET /get-secure-api-address
Adresa API-ului securizat
Întoarce adresa HTTPS completă a API-ului, cu /api.
{
"StatusCode": 200,
"Data": "https://localhost.fiscallink.ro:65401/api"
}GET /get-local-api-address
Adresa API-ului din rețeaua locală
Întoarce adresa HTTP completă a API-ului în rețeaua locală, cu /api.
{
"StatusCode": 200,
"Data": "http://192.168.1.100:65400/api"
}Acces și securitate
- Fără cheie, fără token. Nu trimiți nicio credențială pe cerere. O cerere e refuzată doar dacă:
- casa conectată nu are licență:
401(rutele Shopify cer licența Commerce:403); - nu e nicio casă conectată sau casa nu răspunde:
424.
- casa conectată nu are licență:
- Licența. Orice licență (Essential sau Commerce) deschide API-ul local. Fără internet, aplicația folosește licența salvată pe dispozitiv cât timp e valabilă; fără ea, casa e tratată ca nelicențiată.
- CORS. Doar serverul HTTPS trimite antete CORS și permite orice origine (
*). Serverul HTTP nu trimite niciunul, deci o pagină web din browser poate apela doar adresa HTTPS. Niciunul nu verifică anteteleOriginsauHost. - O comandă pe rând. O casă execută o singură comandă odată, indiferent dacă vine din API-ul local, din Cloud sau din Shopify POS. Trimite apelurile unui bon în ordine și așteaptă fiecare răspuns.
- Tot ce tipărești se vede în Cloud. Bonurile, rapoartele X și Z, citirile de cote TVA și lucrul cu articole făcute prin API-ul local sunt raportate organizației FiscalLink Cloud a casei, cât timp casa e asociată.
Formatul răspunsului
Toate rutele, în afară de /api/Receipt, răspund în același plic. La succes primești StatusCode și Data. La eroare primești statusCode și message, niciodată o pagină HTML. Unde un singur cod de stare acoperă două refuzuri, corpul are și un câmp code, un identificator stabil. Textul din message e în limba aplicației: ramifică după cod, nu după text.
Data e textul de răspuns al casei la majoritatea rutelor; la rapoarte, cote TVA, articole, starea tranzacției, copia ultimului bon și raportul Z arhivat e un obiect.
{
"StatusCode": 200,
"Data": "Receipt printed successfully."
}{
"statusCode": 424,
"message": "Serial communication service not started. Please connect to a device."
}Fluxul recomandat
- Afli adresa:
GET /get-secure-api-address. - Trimiți bonul întreg dintr-un singur apel:
POST /print-fiscal-receipt. - Citești răspunsul.
200: bonul e tipărit.400: cererea sau casa a refuzat bonul și niciun bon nu a rămas deschis.424sau500: citește „Înainte să retrimiți” din „Erori și coduri” înainte să trimiți din nou. - La sfârșitul zilei:
POST /report-z.
Aplicația verifică bonul înainte să-l deschidă pe casă. Dacă ceva eșuează după deschidere, aplicația anulează bonul, iar mesajul se termină cu | Receipt cancelled successfully.
Bonuri
POST /print-fiscal-receipt
Tipărește un bon fiscal
Primește tot bonul și face singur deschiderea, liniile, subtotalul, plățile și închiderea, într-un singur apel.
Fără OpenFiscalReceipt, bonul se deschide cu operatorul 1, parola 0001, punctul de vânzare 1, fără factură. Fără Payments, tot totalul se achită automat în numerar.
Câmpuri
| Câmp | Tip | Obligatoriu | Descriere |
|---|---|---|---|
OpenFiscalReceipt | object | Nu | Antetul bonului: operator, parolă, punct de vânzare, factură. Dacă îl trimiți, PointOfSaleNumber devine obligatoriu și, pe Datecs și Daisy, la fel OperatorCode și OperatorPassword. |
OpenFiscalReceipt. | int | Condiționat | Operatorul, 1–30. Pe Tremol, dacă lipsește, aplicația îl citește de pe casă (operatorul 1). |
OpenFiscalReceipt. | string | Condiționat | Parola operatorului, 1–8 cifre (pe Datecs 4–8). O parolă greșită e un refuz al casei (400). Pe Tremol se completează cu 0 sau se taie la exact 4 caractere. |
OpenFiscalReceipt. | int | Condiționat | Punctul de vânzare, 1–99999 (pe Datecs 1–9999). |
OpenFiscalReceipt. | bool | Nu | true deschide pe Datecs un bon „CIF Client”. Daisy și Tremol îl ignoră. |
ReceiptItems | array | Da | Liniile bonului, tipărite în ordine. |
ReceiptItems[]. | int | Da | 0 vânzare liberă (FreeSale), 1 vânzare de articol PLU (PluSale), 2 text (Text), 3 cod de bare (BarCode), 4 linie de separare (SeparatingLineType). Textul, codul de bare și linia nu intră în total. |
ReceiptItems[]. | object | Condiționat: Type = 0 | Un produs descris complet în cerere. Modelul FreeSale e mai jos. |
ReceiptItems[]. | object | Condiționat: Type = 1 | Un articol programat în casă; casa îi dă numele, prețul și grupa TVA. Modelul PluSale e mai jos. |
ReceiptItems[]. | object | Condiționat: Type = 2 | O linie de text. Modelul Text e mai jos. |
ReceiptItems[]. | object | Condiționat: Type = 3 | Un cod de bare. Modelul BarCode e la „Coduri de bare și linii”. |
ReceiptItems[]. | int | Condiționat: Type = 4 | Stilul liniei, 1–4 (1–3 pe Datecs). |
Subtotal | object | Nu | Pasul de subtotal: tipărire, afișare și o reducere sau majorare pe tot bonul. Modelul Subtotal e mai jos. |
Payments | array | Nu | Plățile, aplicate în ordine după subtotal. Modelul RegisterPayment e mai jos. |
Modele
| Model · câmp | Tip | Obligatoriu | Descriere |
|---|---|---|---|
FreeSale. | string | Da | Numele tipărit. Diacriticele devin litere latine. Maximum 72 de caractere pe Datecs și 30 pe Tremol; pe Daisy numele se taie la lungimea pe care o raportează casa. |
FreeSale. | int | Da | Grupa TVA: 1 = A, 2 = B și așa mai departe. Cota fiecărei grupe e programată în casă. Datecs acceptă 1–7; un Datecs al unei firme neplătitoare de TVA vinde doar pe 5 și 6. Tremol acceptă 1–6 (A–E și F, „Alte taxe”); orice altă valoare, inclusiv 7 și 8, e refuzată cu 400 înainte să se deschidă bonul. |
FreeSale. | decimal | Da | Prețul unitar, cu TVA, de la 0, cel mult 2 zecimale. Maximum 9.999.999,99 pe Datecs și Tremol; pe Daisy cel mult 8 cifre. Nu folosi preț negativ: anulezi o linie cu Void. |
FreeSale. | decimal | Nu | Cantitatea, implicit 1, de la 0,01, cel mult 3 zecimale. Maximum 99.999,999 pe Datecs și 999.999,999 pe Tremol; pe Daisy cel mult 9 cifre, din care cel mult 3 zecimale. |
FreeSale. | int | Da | Departamentul: 0–99 pe Datecs (0 înseamnă fără departament), de la 1 până la numărul de departamente al casei pe Daisy, 1–19 pe Tremol. Tremol nu îl trimite. |
FreeSale. | string | Da | Unitatea de măsură, 1–6 caractere (de exemplu buc); pe Tremol cel mult 3. |
FreeSale. | bool | Nu | true înregistrează linia ca anulată: se scade din bon. |
FreeSale. | int | Nu | Reducere sau majorare pe linie: 0 niciuna, 1 majorare %, 2 reducere %, 3 majorare sumă, 4 reducere sumă. Tremol nu trimite reducerile pe linie. |
FreeSale. | decimal | Condiționat: DiscountType = 1–4 | Procent 0,01–100 (tipurile 1 și 2) sau sumă 0,01–9.999.999,99 (tipurile 3 și 4), cel mult 2 zecimale. |
PluSale. | int | Da | Numărul articolului în casă, mai mare ca 0. Un articol neprogramat e un refuz al casei (400, bonul se anulează). |
PluSale. | decimal | Nu | Cantitatea, implicit 1, de la 0,01, cel mult 3 zecimale. |
PluSale., DiscountType, DiscountValue | — | Nu | Ca la FreeSale. |
Text. | string | Da | Textul de tipărit. Gol: 400. Pe Tremol se taie la 33 de caractere. |
Text., Italic, Underline | bool | Nu | Îngroșat, cursiv, subliniat. Doar Datecs. |
Text. | int | Nu | 0 normal, 1 dublă. Doar Datecs. |
Text. | int | Nu | 0 stânga, 1 centru, 2 dreapta. Doar Datecs. |
Subtotal. / Display | bool | Nu | Tipărește subtotalul pe bon / îl arată pe afișajul clientului. Pasul de subtotal rulează oricum. |
Subtotal. / DiscountValue | int / decimal | Nu | Reducere sau majorare pe tot bonul, cu aceleași valori ca pe linie. |
RegisterPayment. | int | Da | Codul de plată al casei, 0–99. Codurile diferă între mărci: vezi „Diferențe între mărci”. |
RegisterPayment. | decimal | Da | Suma, 0,01–9.999.999,99, cel mult 2 zecimale. Doar numerarul poate depăși ce mai e de plată (casa dă rest); orice altă metodă se oprește la suma rămasă. |
Reguli
- Aplicația verifică bonul înainte să-l deschidă. Un bon care eșuează după deschidere e anulat, iar mesajul se termină cu
| Receipt cancelled successfully. Niciun bon nu rămâne deschis. - Cu verificarea cotelor TVA pornită în aplicație, o grupă care nu poartă o cotă încă în vigoare (21%, 11% sau 0%) e refuzată cu
400, înainte de deschidere. - Plățile care nu acoperă totalul sunt un refuz al casei, iar bonul se anulează. Pe Datecs, o plată automată la un total de 0 sau mai mic e refuzată și bonul se anulează.
- Daisy nu vinde linii libere direct. Cu „Vânzare liberă pe Daisy” pornită în aplicație (sau de organizația de integrator care a activat casa), fiecare linie liberă se vinde ca articol programat: aplicația caută articolul după nume, preț și departamentul grupei TVA și, dacă lipsește, îl programează întâi. Articolele folosite vin înapoi în rezultatul bonului. Cu setarea oprită, bonul cu linii libere e refuzat cu
400, înainte de deschidere. - Pe API-ul local,
Datae mesajul de succes, în limba aplicației. Numărul bonului, totalurile și articolele folosite vin doar prin API-ul Cloud, în rezultatul comenzii.
Cerere minimă (tot totalul în numerar)
{
"ReceiptItems": [
{
"Type": 0,
"FreeSale": {
"ProductName": "Espresso",
"TaxCode": 1,
"Price": 8.50,
"Quantity": 2,
"Department": 1,
"Unit": "buc"
}
}
]
}Cerere completă
{
"OpenFiscalReceipt": {
"OperatorCode": 1,
"OperatorPassword": "0001",
"PointOfSaleNumber": 1,
"Invoice": false
},
"ReceiptItems": [
{ "Type": 2, "Text": { "Message": "Ref. 128", "Alignment": 1 } },
{ "Type": 0, "FreeSale": { "ProductName": "Espresso", "TaxCode": 1, "Price": 8.50, "Quantity": 2, "Department": 1, "Unit": "buc" } },
{ "Type": 1, "PluSale": { "PluNumber": 101, "Quantity": 1 } },
{ "Type": 4, "SeparatingLineType": 2 }
],
"Subtotal": { "Print": true },
"Payments": [
{ "PaymentMode": 0, "Amount": 50.00 }
]
}PaymentMode 0 e numerar pe Datecs și Tremol; pe Daisy numerarul are codul 3.
curl -X POST https://localhost.fiscallink.ro:65401/api/print-fiscal-receipt \
-H "Content-Type: application/json" \
-d @receipt.jsonRăspuns
{
"StatusCode": 200,
"Data": "Receipt printed successfully."
}{
"statusCode": 400,
"message": "Receipt printing error: <text> (<code>) | Receipt cancelled successfully"
}Coduri de răspuns
| Status | Descriere |
|---|---|
| 200 | Bonul s-a tipărit. |
| 400 | Cererea încalcă o regulă (interval, lungime, obiect lipsă) sau casa a refuzat un pas. Un bon deschis e anulat. |
| 401 | Casa conectată nu are licență. |
| 424 | Nicio casă conectată, sau legătura cu casa a căzut. |
| 500 | Casa n-a răspuns la timp, sau o eroare neașteptată în aplicație. |
POST /print-non-fiscal-receipt
Tipărește un bon nefiscal
Tipărește tot bonul nefiscal dintr-un singur apel: linii de text, coduri de bare și linii de separare. Fără vânzări, fără plăți, fără verificare TVA.
| Câmp | Tip | Obligatoriu | Descriere |
|---|---|---|---|
ReceiptItems | array | Da | Liniile, tipărite în ordine. |
ReceiptItems[]. | int | Da | 0 text (Text), 1 cod de bare (BarCode), 2 linie de separare (SeparatingLineType). Numerele diferă de cele de la bonul fiscal. |
{
"ReceiptItems": [
{ "Type": 0, "Text": { "Message": "Ref. 128", "Bold": true, "Alignment": 1 } },
{ "Type": 2, "SeparatingLineType": 1 },
{ "Type": 1, "BarCode": { "Type": 2, "Data": "5940000000820" } }
]
}{
"StatusCode": 200,
"Data": "Non-fiscal receipt printed successfully."
}Rapoarte
POST /report-z
Tipărește raportul Z
Închide ziua fiscală și îi aduce totalurile la zero. E ireversibil. Fără corp.
POST /report-x
Tipărește raportul X
Tipărește totalurile zilei de până acum, fără să închidă ziua. Fără corp.
Răspuns (Z; la X, Zeroing e false)
{
"StatusCode": 200,
"Data": {
"Zeroing": true,
"ReportNumber": "0142",
"TaxGroups": { "A": "1250.00", "B": "310.50", "C": "0.00", "D": "0.00", "E": "0.00", "F": "0.00" },
"Payments": { "payment_method1": "980.50", "payment_method2": "580.00", "payment_method3": "0.00" },
"Message": "Report Z printed successfully."
}
}| Câmp | Descriere |
|---|---|
Zeroing | true la Z (ziua se închide), false la X. |
ReportNumber | Numărul raportului. Pe Tremol e calculat din ultimul Z și poate fi null. |
TaxGroups | Vânzările pe grupe TVA, text cu 2 zecimale: A–F pe Datecs și Tremol, A–D pe Daisy. |
Payments | Totalurile pe metode de plată, payment_method1 … payment_method10 (1 e numerarul), text cu 2 zecimale. |
Message | Mesajul de succes, în limba aplicației. |
GET /ask-for-z-report-structured-information/{number} Doar Tremol
Raport Z arhivat, după număr
Întoarce datele unui raport Z arhivat, ca obiect, după numărul lui. Doar pe Tremol; Datecs și Daisy refuză cererea.
| Parametru în cale | Descriere |
|---|---|
number | Numărul raportului Z cerut. |
Cote TVA
POST /read-vat-rates
Citește cotele TVA
Citește grupele TVA programate în casă. Nu schimbă nimic pe casă. Fără corp.
Programarea cotelor TVA nu există în API-ul local.
{
"StatusCode": 200,
"Data": {
"Groups": { "A": "21.00", "B": "11.00", "C": "0.00" },
"DisabledGroups": ["D", "E", "F", "G", "H"],
"ZReportNumber": "0042",
"EndDate": "01-08-25",
"Brand": "Datecs",
"ReadAtUtc": "2026-09-25T10:15:30.1234567Z",
"Message": "VAT rates read successfully."
}
}| Câmp | Descriere |
|---|---|
Groups | Cota activă pe fiecare literă de grupă, text cu 2 zecimale. A–H; A–F pe Tremol; A–D pe Daisy. |
DisabledGroups | Grupele oprite pe casă. |
ZReportNumber | Doar Datecs: primul raport Z de la care se aplică cotele. |
EndDate | Doar Datecs: când au fost introduse cotele. |
Brand | Datecs, Daisy sau Tremol. |
ReadAtUtc | Când a citit aplicația cotele. |
Articole (PLU)
Articolele (PLU) sunt produsele salvate în memoria casei. Regulile diferă între mărci:
| Datecs | Daisy | Tremol | |
|---|---|---|---|
| Grupe TVA pe articol | A–G (H e refuzat) | TVA-ul vine din departament | A–F |
| Departament | — | obligatoriu, de la 1 | 1–19 |
| Nume | 72 de caractere | 32 de caractere | 34 de caractere |
| Coduri de bare | 4 | 1 | 1 |
| Ștergere | da, într-un interval | da | nu |
POST /read-plu-items
Citește articolele
Citește baza de articole a casei. E lentă: aplicația face câte un drum la casă pentru fiecare articol programat. Fără corp, citește toată baza. Pe Tremol, aplicația caută în pozițiile 1–500; prima poziție goală e următorul număr liber, iar rezultatul e marcat ca trunchiat.
POST /program-plu-item
Programează un articol
Creează sau actualizează un articol cu aceeași comandă. Un număr existent e suprascris complet, deci trimiți tot articolul. Fără număr de PLU, aplicația folosește următorul număr liber al casei. Răspunsul e articolul citit înapoi de pe casă.
POST /delete-plu-item
Șterge articole
Șterge articole și citește înapoi intervalul. Un articol cu vânzări rămâne pe casă, pentru că nicio casă nu șterge vânzările. Răspunsul spune ce s-a șters și ce a rămas blocat. Pe Tremol, ștergerea unui singur articol e refuzată: protocolul lui șterge doar toată baza.
Notă
Câmpurile cererii și ale răspunsului pentru articole nu sunt încă publicate aici.
Afișaj client
POST /display-line-one
Afișează pe linia 1
Scrie un text pe prima linie a afișajului pentru client. Pe Tremol, textul are exact 20 de caractere: se completează sau se taie.
| Câmp | Descriere |
|---|---|
Text | Textul afișat. |
{
"Text": "Total 27.00"
}POST /display-line-two
Afișează pe linia 2
Scrie un text pe a doua linie a afișajului pentru client, cu aceleași reguli.
POST /clear-display
Golește afișajul
Șterge ce e pe afișajul pentru client. Fără corp.
Coduri de bare și linii
În fluxul recomandat, codurile de bare și liniile de separare sunt linii ale bonului dintr-un singur apel: Type 3 și 4 la bonul fiscal, Type 1 și 2 la cel nefiscal. Rutele de mai jos le tipăresc pe un bon deja deschis.
Modelul BarCode
| Câmp | Tip | Obligatoriu | Descriere |
|---|---|---|---|
Type | int | Da | Simbologia, 1–16, din tabelul de mai jos. Un tip pe care marca nu îl tipărește e refuzat cu 400. |
Data | string | Da | Conținutul codului. Fiecare tip are regulile lui, de exemplu EAN-13 exact 13 cifre, QR 3–279 de caractere. Date greșite: 400. |
QrSize | int | Nu | Mărimea modulului pentru QR, 3–10. Doar Datecs. |
Position | int | Nu | 1 centru, 2 stânga, 3 dreapta. Doar Daisy. |
Scale | int | Nu | Lățimea barelor, de la 0. Doar Daisy. |
Height | int | Nu | Înălțimea barelor, de la 0. Doar Daisy. |
PrintText | bool | Nu | Tipărește conținutul sub cod. Doar Daisy. |
Tipuri de coduri de bare
Type | Simbologie | Datecs | Daisy |
|---|---|---|---|
| 1 | EAN-8 | Da | Da |
| 2 | EAN-13 | Da | Da |
| 3 | Code 128 | Da | Da |
| 4 | QR Code | Da | Nu |
| 5 | Standard 2 of 5 | Nu | Da |
| 6 | Interleaved 2 of 5 | Da | Da |
| 7 | Interleaved 2 of 5 mod 10 | Nu | Da |
| 10 | UPC-E | Nu | Da |
| 11 | UPC-A | Nu | Da |
| 12 | Code 39 | Nu | Da |
| 13 | Code 39 mod 43 | Nu | Da |
| 14 | Code 93 | Nu | Da |
| 15 | Codabar | Nu | Da |
| 16 | POSTNET | Nu | Da |
Notă
Pe Daisy, comanda de cod de bare (54h) nu e descrisă în protocolul românesc; tipurile din coloana Daisy vin din altă ediție a protocolului.
POST /print-bar-code
Tipărește un cod de bare
Tipărește un cod de bare pe bonul deschis. Corpul e modelul BarCode.
{
"Type": 2,
"Data": "5940000000820"
}POST /print-separating-line/{type}
Tipărește o linie de separare
Tipărește o linie de separare pe bonul deschis. Stilul vine în cale: 1 -, 2 =, 3 *, 4 - -. Orice altă valoare răspunde 400, iar pe Datecs și 4. Fără corp.
Pe Daisy, 4 tipărește textul NU SE DATOREAZA NICIO PLATA. Pe Tremol linia are mereu 33 de caractere.
Alte rute
POST /copy-of-last-fiscal-receipt
Copia ultimului bon fiscal
Tipărește o copie a ultimului bon fiscal. Data e un obiect. Daisy nu are această comandă. Fără corp.
POST /status-of-the-fiscal-transaction
Starea tranzacției fiscale
Întoarce starea tranzacției fiscale de pe casă (de exemplu, dacă e un bon deschis și suma strânsă), ca obiect. Fără corp.
Diferențe între mărci
| Comportament | Datecs | Daisy | Tremol |
|---|---|---|---|
Vânzare liberă (FreeSale) | Da | Doar cu „Vânzare liberă pe Daisy”, ca articol programat | Da; nume de cel mult 30 de caractere |
Grupe TVA pe vânzare (TaxCode) | 1–7 | Grupa alege departamentul | 1–6 |
| Operator la bonul fiscal | Obligatoriu dacă trimiți antetul | Obligatoriu dacă trimiți antetul | Opțional; lipsă, e citit de pe casă |
| Parola operatorului | — | — | Exact 4 caractere |
Factură (Invoice) | Bon „CIF Client” | Ignorat | Ignorat |
| Formatarea textului | Da | Doar textul | Doar textul, maximum 33 de caractere |
| Plăți | — | — | Se pot face mai multe plăți; bonul se închide când ultima plată acoperă suma de plată |
| Subtotal fără tipărire, cu reducere | Da | Da | Doar fără reducere sau majorare |
| Copia ultimului bon | Da | Nu | Da |
| Raport Z arhivat după număr | Nu | Nu | Da |
| Afișaj client | — | — | Exact 20 de caractere pe linie |
| Conexiune în rețea | Da | Nu | Da |
Coduri de plată (PaymentMode)
| Metodă | Daisy | Tremol | Datecs |
|---|---|---|---|
| Numerar | 3 | 0 | 0 |
| Card | 1 | 1 | 1 |
| Tichet de masă | 4 | 3 | 2 |
| Tichet valoric | 5 | 4 | 3 |
| Voucher | 6 | 5 | 4 |
| Credit | 7 | 6 | 5 |
| Plată modernă | 8 | 7 | 6 |
| Avans în numerar | — | 2 | 7 |
| Altă metodă | 9 | 8 | 8 |
| Valută | — | — | 9 |
Bon pas cu pas: se elimină
Aceste rute trimit un bon comandă cu comandă. Ele se elimină, iar anularea bonului deschis pleacă odată cu ele. Folosește /print-fiscal-receipt și /print-non-fiscal-receipt.
Corpurile folosesc aceleași modele ca bonul dintr-un singur apel.
| Id | Metodă · rută | Corpul cererii | Descriere |
|---|---|---|---|
open-non-fiscal | POST /open-non-fiscal-receipt | — (Tremol: OperatorCode, OperatorPassword) | Deschide un bon nefiscal. |
print-non-fiscal | POST /print-non-fiscal-text | Text | Tipărește o linie pe bonul nefiscal deschis. |
close-non-fiscal | POST /close-non-fiscal-receipt | — | Închide bonul nefiscal. |
cancel-non-fiscal | POST /cancel-non-fiscal-receipt | — | Anulează bonul nefiscal deschis. |
open-fiscal | POST /open-fiscal-receipt | OpenFiscalReceipt | Deschide un bon fiscal. |
print-fiscal-text | POST /print-fiscal-text | Text | Tipărește o linie de text pe bonul fiscal deschis. |
register-free-sale | POST /register-free-sale | FreeSale | Adaugă o vânzare liberă. |
register-plu-sale | POST /register-plu-sale | PluSale | Adaugă o vânzare de articol PLU. |
subtotal | POST /subtotal | Subtotal | Trimite subtotalul. |
payment | POST /payment | RegisterPayment | Înregistrează o plată. |
close-fiscal | POST /close-fiscal-receipt | — | Închide bonul fiscal. |
cancel-fiscal | POST /cancel-fiscal-receipt | — | Anulează bonul fiscal deschis. |
Rutele Shopify
GET /get-shopify-order/{orderId} și POST /print-shopify-order/{orderId} aparțin integrării FiscalLink pentru Shopify POS. Cer licența Commerce și tokenul de sesiune Shopify în Authorization: Bearer. Integrarea Shopify POS e descrisă în documentația ei (/shopify-pos/docs).