Skip to content

Reference

Receipt delivery by e-mail

Sending a fiscalized receipt to the customer from the platform, with the verification link and PDF attachments (E-mail module).

3 operations

List the deliveries of a receipt

get/v1/receipt-deliveries

Scope fiscal:read

Every e-mail delivery of one fiscal document with status and attempt count.

Parameters

listReceiptDeliveries: Parameters
FieldInTypeDescription
fiscalDocumentIdrequiredqueryuuid

Example

GET /v1/receipt-deliveries
curl -X GET "https://api.bokapos.rs/v1/receipt-deliveries?fiscalDocumentId=9f8e7d6c-5b4a-4321-8765-0fedcba98761" \
  -H "Authorization: Bearer $BOKAPOS_TOKEN"

Responses

listReceiptDeliveries: Responses
200 OKDeliveries in creation order (at most 100)
422 Unprocessable ContentThe command violates a Boka or fiscal ruleErrorCode
200 OK
{
  "items": [
    {
      "id": "f6a7b8c9-d0e1-4f2a-9b3c-4d5e6f7a8b90",
      "fiscalDocumentId": "9f8e7d6c-5b4a-4321-8765-0fedcba98761",
      "channel": "EMAIL",
      "recipient": "kupac@example.com",
      "language": "sr-Latn",
      "attachments": [
        "a4"
      ],
      "status": "DELIVERED",
      "attempts": 1,
      "failureCode": null,
      "createdAt": "2026-09-01T08:15:40.000Z",
      "deliveredAt": "2026-09-01T08:15:52.418Z",
      "updatedAt": "2026-09-01T08:15:52.418Z"
    }
  ]
}
Response:

Field descriptions come from the OpenAPI contract; field names and values are identical in both languages.

listReceiptDeliveries: Response
FieldTypeDescription
itemsrequiredarray<ReceiptDelivery>
idrequireduuid
fiscalDocumentIdrequireduuid
channelrequiredconst "EMAIL"
recipientrequiredstring
languagerequiredReceiptDeliveryLanguageLanguage of the message; the receipt itself is the official journal rendered into the attached PDFs.

sr-Cyrlsr-LatnenValues

attachmentsrequiredReceiptDeliveryAttachmentsReturned in canonical order (a4, 80mm, 58mm, png). An empty list sends the link only.

a480mm58mmpngmax 4 itemsuniqueValues

statusrequiredstring

QUEUEDSENDINGDELIVEREDFAILEDValues

attemptsrequiredinteger

>= 0

failureCoderequiredstring| null (nullable)
createdAtrequireddate-time
deliveredAtrequireddate-time| null (nullable)
updatedAtrequireddate-time

E-mail a receipt

post/v1/receipt-deliveries

Scope fiscal:writeRequires Idempotency-Key

Queues one message with the verification link and the chosen PDF attachments, in the taxpayer's language. Works only for a fiscalized document and only when the taxpayer enabled delivery in settings; production requires the E-mail module. A delivery status is never proof of fiscalization.

Contract notes (OpenAPI)

Queues one email delivery of one fiscalized document from the platform mailbox, in the taxpayer's chosen language, with the official verification URL as an active link and the A4 PDF attached. Delivery is queued only after the signed result is durably stored, only when the taxpayer enabled email delivery in its settings (422 RECEIPT_DELIVERY_DISABLED otherwise; the taxpayer then delivers through its own system), and only while the platform transport is configured (503 RECEIPT_DELIVERY_UNAVAILABLE otherwise). A delivery outcome is never evidence of fiscalization. Tenant branding stays outside the fiscal receipt boundary.

Request body application/json

createReceiptDelivery: Request body
FieldTypeDescription
fiscalDocumentIdrequireduuid
channelrequiredconst "EMAIL"
recipientrequiredemail

max 320

languageoptionalReceiptDeliveryLanguage| null (nullable)Defaults to the taxpayer's setting.

sr-Cyrlsr-LatnenValues

attachmentsoptionalReceiptDeliveryAttachments| null (nullable)Defaults to the taxpayer's setting.

a480mm58mmpngValues

Example

POST /v1/receipt-deliveries
curl -X POST "https://api.bokapos.rs/v1/receipt-deliveries" \
  -H "Authorization: Bearer $BOKAPOS_TOKEN" \
  -H "Idempotency-Key: order-4127-email-1" \
  -H "Content-Type: application/json" \
  -d '{
  "fiscalDocumentId": "9f8e7d6c-5b4a-4321-8765-0fedcba98761",
  "channel": "EMAIL",
  "recipient": "kupac@example.com",
  "language": "sr-Latn",
  "attachments": [
    "a4"
  ]
}'

Responses

createReceiptDelivery: Responses
200 OKIdempotent replayReceiptDelivery
202 AcceptedDelivery queuedReceiptDelivery

Response headers: Location

404 Not FoundResource does not exist within the authenticated tenant scopeErrorCode
409 ConflictThe key was already used with different canonical contentIdempotencyConflict
422 Unprocessable ContentThe command violates a Boka or fiscal ruleErrorCode
503 Service UnavailableThe platform mail transport is not configured
202 Accepted
{
  "id": "f6a7b8c9-d0e1-4f2a-9b3c-4d5e6f7a8b90",
  "fiscalDocumentId": "9f8e7d6c-5b4a-4321-8765-0fedcba98761",
  "channel": "EMAIL",
  "recipient": "kupac@example.com",
  "language": "sr-Latn",
  "attachments": [
    "a4"
  ],
  "status": "QUEUED",
  "attempts": 0,
  "failureCode": null,
  "createdAt": "2026-09-01T08:15:40.000Z",
  "deliveredAt": null,
  "updatedAt": "2026-09-01T08:15:40.000Z"
}
Response: ReceiptDelivery

Field descriptions come from the OpenAPI contract; field names and values are identical in both languages.

createReceiptDelivery: Response
FieldTypeDescription
idrequireduuid
fiscalDocumentIdrequireduuid
channelrequiredconst "EMAIL"
recipientrequiredstring
languagerequiredReceiptDeliveryLanguageLanguage of the message; the receipt itself is the official journal rendered into the attached PDFs.

sr-Cyrlsr-LatnenValues

attachmentsrequiredReceiptDeliveryAttachmentsReturned in canonical order (a4, 80mm, 58mm, png). An empty list sends the link only.

a480mm58mmpngmax 4 itemsuniqueValues

statusrequiredstring

QUEUEDSENDINGDELIVEREDFAILEDValues

attemptsrequiredinteger

>= 0

failureCoderequiredstring| null (nullable)
createdAtrequireddate-time
deliveredAtrequireddate-time| null (nullable)
updatedAtrequireddate-time

Read a delivery

get/v1/receipt-deliveries/{receiptDeliveryId}

Scope fiscal:read

The state of one delivery: QUEUED, SENDING, DELIVERED or FAILED with a code.

Parameters

getReceiptDelivery: Parameters
FieldInTypeDescription
receiptDeliveryIdrequiredpathuuid

Example

GET /v1/receipt-deliveries/{receiptDeliveryId}
curl -X GET "https://api.bokapos.rs/v1/receipt-deliveries/f6a7b8c9-d0e1-4f2a-9b3c-4d5e6f7a8b90" \
  -H "Authorization: Bearer $BOKAPOS_TOKEN"

Responses

getReceiptDelivery: Responses
200 OKDeliveryReceiptDelivery
404 Not FoundResource does not exist within the authenticated tenant scopeErrorCode
200 OK
{
  "id": "f6a7b8c9-d0e1-4f2a-9b3c-4d5e6f7a8b90",
  "fiscalDocumentId": "9f8e7d6c-5b4a-4321-8765-0fedcba98761",
  "channel": "EMAIL",
  "recipient": "kupac@example.com",
  "language": "sr-Latn",
  "attachments": [
    "a4"
  ],
  "status": "DELIVERED",
  "attempts": 1,
  "failureCode": null,
  "createdAt": "2026-09-01T08:15:40.000Z",
  "deliveredAt": "2026-09-01T08:15:52.418Z",
  "updatedAt": "2026-09-01T08:15:52.418Z"
}
Response: ReceiptDelivery

Field descriptions come from the OpenAPI contract; field names and values are identical in both languages.

getReceiptDelivery: Response
FieldTypeDescription
idrequireduuid
fiscalDocumentIdrequireduuid
channelrequiredconst "EMAIL"
recipientrequiredstring
languagerequiredReceiptDeliveryLanguageLanguage of the message; the receipt itself is the official journal rendered into the attached PDFs.

sr-Cyrlsr-LatnenValues

attachmentsrequiredReceiptDeliveryAttachmentsReturned in canonical order (a4, 80mm, 58mm, png). An empty list sends the link only.

a480mm58mmpngmax 4 itemsuniqueValues

statusrequiredstring

QUEUEDSENDINGDELIVEREDFAILEDValues

attemptsrequiredinteger

>= 0

failureCoderequiredstring| null (nullable)
createdAtrequireddate-time
deliveredAtrequireddate-time| null (nullable)
updatedAtrequireddate-time