> Source: https://fiscal.link/integrators/docs/reference/cloud-commands/receipts
> Trimite un bon fiscal sau nefiscal către o casă.

API Cloud: comenzi

# Bonuri

Trimite un bon fiscal sau nefiscal către o casă.

## Resursa PrintFiscalReceiptRequest

`openFiscalReceipt` [object](https://fiscal.link/integrators/docs/reference/objects/cloud-open-fiscal-receipt-request) poate fi null

Antetul bonului. Dacă lipsește: operatorul 1, parola 0001, punctul de vânzare 1, fără CIF client.

`receiptItems` [array](https://fiscal.link/integrators/docs/reference/objects/cloud-receipt-item) obligatoriu

Liniile bonului, tipărite în ordine.

Lipsă: 400 `RECEIPT_ITEMS_MISSING`. Listă goală: 400 `RECEIPT_ITEMS_EMPTY`.

`subtotal` [object](https://fiscal.link/integrators/docs/reference/objects/cloud-subtotal-request) poate fi null

Pasul de subtotal. Se face mereu; aici alegi dacă se tipărește, se afișează și dacă are adaos sau reducere.

`payments` [array](https://fiscal.link/integrators/docs/reference/objects/cloud-payment-request) poate 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

-   [PrintTextRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-print-text-request)
-   [OpenFiscalReceiptRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-open-fiscal-receipt-request)
-   [RegisterFreeSaleRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-free-sale-request)
-   [RegisterPluSaleRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-plu-sale-request)
-   [SubtotalRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-subtotal-request)
-   [RegisterPaymentRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-payment-request)
-   [BarCodeRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-bar-code-request)
-   [ReceiptItemRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-receipt-item)
-   [IdempotencyHeaders](https://fiscal.link/integrators/docs/reference/objects/cloud-idempotency-headers)
-   [EnqueueCommandResponse](https://fiscal.link/integrators/docs/reference/objects/cloud-enqueue-response)
-   [OpenNonFiscalReceiptRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-open-non-fiscal-receipt-request)
-   [PrintNonFiscalReceiptRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-print-non-fiscal-receipt-request)
-   [NonFiscalReceiptItemRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-non-fiscal-receipt-item)

## 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[].freeSale`, `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[].amount` 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](https://fiscal.link/integrators/docs/reference/objects/cloud-print-text-request)
-   Cerere [OpenFiscalReceiptRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-open-fiscal-receipt-request)
-   Cerere [RegisterFreeSaleRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-free-sale-request)
-   Cerere [RegisterPluSaleRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-plu-sale-request)
-   Cerere [SubtotalRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-subtotal-request)
-   Cerere [RegisterPaymentRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-payment-request)
-   Cerere [BarCodeRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-bar-code-request)
-   Cerere [PrintFiscalReceiptRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-print-fiscal-receipt-request)
-   Cerere [ReceiptItemRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-receipt-item)
-   Cerere [IdempotencyHeaders](https://fiscal.link/integrators/docs/reference/objects/cloud-idempotency-headers)
-   Răspuns [EnqueueCommandResponse](https://fiscal.link/integrators/docs/reference/objects/cloud-enqueue-response)

POSTCerere

```bash
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
    }
  ]
}'
```

202Răspuns

```json
{ "commandId": "c3a9f1e7-5d2b-4c8a-9e61-0f1a2b3c4d5e" }
```

200Rezultatul bonului fiscal (în body)

```json
{
  "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](https://fiscal.link/integrators/docs/reference/objects/cloud-open-non-fiscal-receipt-request)
-   Cerere [PrintTextRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-print-text-request)
-   Cerere [BarCodeRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-bar-code-request)
-   Cerere [PrintNonFiscalReceiptRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-print-non-fiscal-receipt-request)
-   Cerere [NonFiscalReceiptItemRequest](https://fiscal.link/integrators/docs/reference/objects/cloud-non-fiscal-receipt-item)
-   Cerere [IdempotencyHeaders](https://fiscal.link/integrators/docs/reference/objects/cloud-idempotency-headers)
-   Răspuns [EnqueueCommandResponse](https://fiscal.link/integrators/docs/reference/objects/cloud-enqueue-response)

POSTCerere

```bash
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"
      }
    }
  ]
}'
```

202Răspuns

```json
{ "commandId": "c3a9f1e7-5d2b-4c8a-9e61-0f1a2b3c4d5e" }
```
