API Cloud: comenzi
Bonuri
Trimite un bon fiscal sau nefiscal către o casă.
Rute
- POST
…/cash-registers/{serialNumber}/commands/print-fiscal-receiptprint-fiscal-receipt - POST
…/cash-registers/{serialNumber}/commands/print-non-fiscal-receiptprint-non-fiscal-receipt
Resursa PrintFiscalReceiptRequest
openFiscalReceiptobjectpoate fi null- Antetul bonului. Dacă lipsește: operatorul 1, parola 0001, punctul de vânzare 1, fără CIF client.
receiptItemsarrayobligatoriu- Liniile bonului, tipărite în ordine.
- Lipsă: 400
RECEIPT_ITEMS_MISSING. Listă goală: 400RECEIPT_ITEMS_EMPTY. subtotalobjectpoate fi null- Pasul de subtotal. Se face mereu; aici alegi dacă se tipărește, se afișează și dacă are adaos sau reducere.
paymentsarraypoate fi null- Plățile bonului. Dacă lipsesc, tot bonul se plătește în numerar; o listă goală nu trimite nicio plată.
Obiecte folosite aici
{
"openFiscalReceipt": {
"operatorCode": 1,
"operatorPassword": "0001",
"pointOfSaleNumber": 1,
"invoice": false
},
"receiptItems": [
{
"type": 0,
"freeSale": {
"productName": "Espresso",
"taxCode": 1,
"void": false,
"price": 8.5,
"quantity": 2,
"discountType": 0,
"discountValue": 0,
"department": 1,
"unit": "buc"
},
"pluSale": {
"pluNumber": 101,
"void": false,
"quantity": 2,
"discountType": 0,
"discountValue": 0
},
"text": {
"message": "Ref. 128",
"bold": true,
"italic": false,
"height": 0,
"underline": false,
"alignment": 0
},
"barCode": {
"type": 1,
"data": "5940000000820",
"qrSize": 0,
"position": 1,
"scale": 0,
"height": 0,
"printText": false
},
"separatingLineType": 1
}
],
"subtotal": {
"print": true,
"display": false,
"discountType": 0,
"discountValue": 5
},
"payments": [
{
"paymentMode": 0,
"amount": 0
}
]
}Rute
POST …/cash-registers/{serialNumber}/commands/print-fiscal-receipt Asincron
print-fiscal-receipt
Pune în coadă un bon fiscal: linii de vânzare, texte, coduri de bare, linii de separare, subtotal și plăți.
Corpul bonului fiscal
Corpul are aceleași câmpuri și reguli ca print-fiscal-receipt din API-ul local, în camelCase: openFiscalReceipt, receiptItems[]., subtotal, payments.
Cloud-ul verifică doar că bonul e un obiect JSON. Restul îl verifică aplicația FiscalLink de pe casă, iar rezultatul vine în rezultatul comenzii.
payments[]. poate lipsi: metoda achită ce mai e de plată. Pe Daisy, o plată într-o anumită metodă poartă mereu suma: trimite amount. Un payments gol nu trimite nicio plată.
Dacă proprietarul casei a fixat o metodă de plată în FiscalLink Cloud, fiecare plată pleacă cu acea metodă.
Rezultatul bonului fiscal (în body)
Fiecare marcă completează aceste câmpuri din răspunsurile casei, cât poate, deci oricare poate fi null. pluItems vine pe Tremol când bonul are linii PLU și când liniile libere s-au vândut ca articole pe Daisy.
Rezultatul rapoartelor Z și X și al citirii cotelor TVA are aceeași formă ca în API-ul local (vezi „Rapoarte” și „Cote TVA”), cu chei camelCase în data.
- Cerere PrintTextRequest
- Cerere OpenFiscalReceiptRequest
- Cerere RegisterFreeSaleRequest
- Cerere RegisterPluSaleRequest
- Cerere SubtotalRequest
- Cerere RegisterPaymentRequest
- Cerere BarCodeRequest
- Cerere PrintFiscalReceiptRequest
- Cerere ReceiptItemRequest
- Cerere IdempotencyHeaders
- Răspuns EnqueueCommandResponse
curl -X POST 'https://cloud-api.fiscallink.ro/api/v2/tenants/YOUR_TENANT_ID/integrator/cash-registers/DT000001/commands/print-fiscal-receipt' \
-H 'X-Api-Key: fsk_YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"openFiscalReceipt": {
"operatorCode": 1,
"operatorPassword": "0001",
"pointOfSaleNumber": 1,
"invoice": false
},
"receiptItems": [
{
"type": 0,
"freeSale": {
"productName": "Espresso",
"taxCode": 1,
"price": 8.5,
"quantity": 2,
"department": 1,
"unit": "buc"
}
},
{
"type": 1,
"pluSale": {
"pluNumber": 101,
"quantity": 1
}
},
{
"type": 2,
"text": {
"message": "Ref. 128",
"alignment": 1
}
},
{
"type": 4,
"separatingLineType": 1
}
],
"subtotal": {
"print": true,
"discountType": 2,
"discountValue": 5
},
"payments": [
{
"paymentMode": 1
}
]
}'{ "commandId": "c3a9f1e7-5d2b-4c8a-9e61-0f1a2b3c4d5e" }{
"statusCode": 200,
"data": {
"message": "Receipt printed successfully.",
"receiptNumber": "0000123",
"subtotal": 42.5,
"total": 42.5,
"paymentFinalized": true,
"vatBreakdown": { "vat0": { "total": 42.5, "vat": 7.38, "rate": 21 } },
"pluItems": null,
"nZrep": 142,
"nFNum": 123,
"brand": "Datecs",
"printedAt": "2026-09-25T10:15:30.1234567Z",
"debugCloseFields": null
}
}POST …/cash-registers/{serialNumber}/commands/print-non-fiscal-receipt Asincron
print-non-fiscal-receipt
Pune în coadă un bon nefiscal: texte, coduri de bare și linii de separare.
Bonul nefiscal acceptă și openNonFiscalReceipt (operatorCode, operatorPassword): Datecs și Daisy îl ignoră; pe Tremol, dacă îl trimiți, ambele câmpuri sunt obligatorii, iar fără el aplicația citește operatorul 1 de pe casă.
- Cerere OpenNonFiscalReceiptRequest
- Cerere PrintTextRequest
- Cerere BarCodeRequest
- Cerere PrintNonFiscalReceiptRequest
- Cerere NonFiscalReceiptItemRequest
- Cerere IdempotencyHeaders
- Răspuns EnqueueCommandResponse
curl -X POST 'https://cloud-api.fiscallink.ro/api/v2/tenants/YOUR_TENANT_ID/integrator/cash-registers/DT000001/commands/print-non-fiscal-receipt' \
-H 'X-Api-Key: fsk_YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"openNonFiscalReceipt": {
"operatorCode": 1,
"operatorPassword": "0001"
},
"receiptItems": [
{
"type": 0,
"text": {
"message": "Ref. 128",
"bold": true,
"alignment": 1
}
},
{
"type": 2,
"separatingLineType": 1
},
{
"type": 1,
"barCode": {
"type": 2,
"data": "5940000000820"
}
}
]
}'{ "commandId": "c3a9f1e7-5d2b-4c8a-9e61-0f1a2b3c4d5e" }