Skip to content

Reference

Proforma and Training

The bounded workflow for Proforma and Training documents, with a refund that must repeat the whole source document.

2 operations

Issue a Proforma or Training document

post/v1/proforma-training-workflows

Scope proforma-training:writeRequires Idempotency-Key

A Proforma is an offer without tax effect; Training is practice. A Training Sale must not carry a reference; a refund must exactly repeat the source document and identify the buyer.

Contract notes (OpenAPI)

Accepts only Proforma or Training transactions through the dedicated workflow scope. Training Sale forbids a reference. Training Refund must reference an exact Boka-issued Training Sale. Proforma Sale may omit a reference or reference a Boka-issued Proforma Sale or Refund; Proforma Refund must reference a Boka-issued Proforma Sale. Refunds must exactly reproduce every source item and payment, identify the buyer, and only one unresolved or completed full refund may reserve a source. External and legacy references remain outside this bounded workflow. An unknown PFR outcome is terminal for automatic submission and an idempotent replay never creates a second fiscal request.

Request body application/json

createProformaTrainingWorkflow: Request body
FieldTypeDescription
taxpayerIdrequireduuid
businessPremiseIdrequireduuid
clientReferencerequiredstring

min 1max 200

invoiceTyperequiredstring

PROFORMATRAININGValues

transactionTyperequiredTransactionType

SALEREFUNDValues

cashierrequiredCashier
idrequiredstring
displayNameoptionalstring
buyeroptionalBuyer
idoptionalstringOfficial prefix and value, for example 10:123456789.
optionalFieldoptionalstringOfficial buyer-cost-center prefix and value where applicable.
originaloptionalBokaDocumentReference
sourcerequiredconst "BOKA"
fiscalDocumentIdrequireduuid
itemsrequiredarray<LineItem>

min 1 items

catalogProductIdoptionaluuidOptional; arbitrary inline items are permitted.
namerequiredstring

min 1max 2048

unitOfMeasureoptionalstringRequired on every item except the codebook advance literals (10: Аванс (Ђ) and siblings), which are prescribed verbatim without a unit. The API refuses any other item without one (422, Items.UnitOfMeasure) and composes it into the signed item name as name/unit.

min 1max 50

quantityrequirednumberV-PFR Decimal(14,3).

>= 0.001<= 99999999999.999step 0.001

unitPricerequirednumberFinal gross unit price sent to V-PFR as Decimal(28,4). Boka applies the mandated fiscal rounding rules.

>= 0step 0.01

unitPriceBeforeDiscountoptionalnumberOptional Boka-local immutable gross unit price before discount. When present it must be greater than unitPrice; it is displayed outside the exact PFR journal and is never sent as a supplier field.

>= 0step 0.0001

gtinoptionalstring

min 8max 14

taxLabelsrequiredarray<string>

min 1 itemsunique

paymentsrequiredarray<Payment>

min 1 items

typerequiredPaymentType

OTHERCASHCARDCHECKWIRE_TRANSFERVOUCHERINSTANT_PAYMENTValues

amountrequirednumberAt most two decimals (the V-PFR rejects more with validation code 2804); the field type on the wire is Decimal(28,4).

>= 0step 0.01

commercialFooteroptionalstring

max 2000

metadataoptionalobjectNon-fiscal caller metadata.

Example

POST /v1/proforma-training-workflows
curl -X POST "https://api.bokapos.rs/v1/proforma-training-workflows" \
  -H "Authorization: Bearer $BOKAPOS_TOKEN" \
  -H "Idempotency-Key: quote-2210-proforma-1" \
  -H "Content-Type: application/json" \
  -d '{
  "taxpayerId": "3f9c2a8e-6b1d-4e5a-9c47-1d2b8e6f0a11",
  "businessPremiseId": "b7d4e2c1-9a3f-4c8e-8f21-6e5a0c9d3b22",
  "clientReference": "QUOTE-2210",
  "invoiceType": "PROFORMA",
  "transactionType": "SALE",
  "cashier": {
    "id": "web-shop"
  },
  "buyer": {
    "id": "10:106952811"
  },
  "items": [
    {
      "name": "Bluetooth slušalice",
      "unitOfMeasure": "kom",
      "quantity": 1,
      "unitPrice": 8990,
      "gtin": "8606012345678",
      "taxLabels": [
        "F"
      ]
    }
  ],
  "payments": [
    {
      "type": "WIRE_TRANSFER",
      "amount": 8990
    }
  ],
  "commercialFooter": "Ponuda važi 7 dana."
}'

Responses

createProformaTrainingWorkflow: Responses
200 OKIdempotent replay of a completed workflowProformaTrainingWorkflow
201 CreatedFiscalized Proforma or Training documentProformaTrainingWorkflow
202 AcceptedThe request is durably reserved but has not been submittedProformaTrainingWorkflow
404 Not FoundResource does not exist within the authenticated tenant scopeErrorCode
409 ConflictIdempotency, source-reservation, or terminal workflow conflict
422 Unprocessable ContentThe command violates a Boka or fiscal rule, or PFR definitively rejected the reserved operation
503 Service UnavailableNo fiscal receipt is claimed; the workflow is unavailable or its outcome is unresolved
201 Created
{
  "id": "0a1b2c3d-4e5f-4a6b-8c7d-8e9f0a1b2c3d",
  "taxpayerId": "3f9c2a8e-6b1d-4e5a-9c47-1d2b8e6f0a11",
  "businessPremiseId": "b7d4e2c1-9a3f-4c8e-8f21-6e5a0c9d3b22",
  "clientReference": "QUOTE-2210",
  "invoiceType": "PROFORMA",
  "transactionType": "SALE",
  "state": "COMPLETED",
  "original": null,
  "document": {
    "id": "1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e",
    "taxpayerId": "3f9c2a8e-6b1d-4e5a-9c47-1d2b8e6f0a11",
    "businessPremiseId": "b7d4e2c1-9a3f-4c8e-8f21-6e5a0c9d3b22",
    "idempotencyKey": "quote-2210-proforma-1",
    "clientReference": "QUOTE-2210",
    "invoiceType": "PROFORMA",
    "transactionType": "SALE",
    "cashierId": "web-shop",
    "buyerId": "10:106952811",
    "buyerDetails": null,
    "status": "FISCALIZED",
    "fiscalized": true,
    "failureCode": null,
    "retryable": false,
    "pfr": {
      "invoiceNumber": "JWX4K9PL-JWX4K9PL-1047",
      "sdcTime": "2026-09-01T10:15:32.483+02:00",
      "requestedBy": "JWX4K9PL",
      "signedBy": "JWX4K9PL",
      "transactionTypeCounter": 902,
      "totalCounter": 1047,
      "invoiceCounterExtension": "ПрП",
      "totalAmount": 8990,
      "totalTax": 890.9009,
      "verificationUrl": "https://sandbox.suf.purs.gov.rs/v/?vl=A0pXWDRLOVBMSldYNEs5UEwSBAAAEAQAAKCLPAAAAAAAAAABnAqJa1EAAAA...",
      "journal": "============ ФИСКАЛНИ РАЧУН ============\n...\nПФР број рачуна:      JWX4K9PL-JWX4K9PL-1047\nБројач рачуна:                902/1047ПрП\n========================================\n======== КРАЈ ФИСКАЛНОГ РАЧУНА ========="
    },
    "receipt": {
      "textUrl": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/official-text",
      "jsonUrl": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/canonical-json",
      "pdfA4Url": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/pdf-a4",
      "pdf80mmUrl": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/pdf-80mm",
      "pdf58mmUrl": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/pdf-58mm",
      "previewImageUrl": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/preview-png",
      "qrImageUrl": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/qr-svg",
      "verificationUrl": "https://sandbox.suf.purs.gov.rs/v/?vl=A0pXWDRLOVBMSldYNEs5UEwSBAAAEAQAAKCLPAAAAAAAAAABnAqJa1EAAAA...",
      "preferredPaperFormat": "a4"
    },
    "createdAt": "2026-09-01T08:15:31.902Z",
    "updatedAt": "2026-09-01T08:15:32.611Z"
  },
  "failureCode": null,
  "createdAt": "2026-09-02T07:02:10.000Z",
  "updatedAt": "2026-09-02T07:02:11.204Z"
}

Examples

training

POST /v1/proforma-training-workflows
curl -X POST "https://api.bokapos.rs/v1/proforma-training-workflows" \
  -H "Authorization: Bearer $BOKAPOS_TOKEN" \
  -H "Idempotency-Key: training-2026-09-02-1" \
  -H "Content-Type: application/json" \
  -d '{
  "taxpayerId": "3f9c2a8e-6b1d-4e5a-9c47-1d2b8e6f0a11",
  "businessPremiseId": "b7d4e2c1-9a3f-4c8e-8f21-6e5a0c9d3b22",
  "clientReference": "TRAINING-1",
  "invoiceType": "TRAINING",
  "transactionType": "SALE",
  "cashier": {
    "id": "operater-1"
  },
  "items": [
    {
      "name": "Test artikal",
      "unitOfMeasure": "kom",
      "quantity": 1,
      "unitPrice": 100,
      "taxLabels": [
        "F"
      ]
    }
  ],
  "payments": [
    {
      "type": "CASH",
      "amount": 100
    }
  ]
}'
201 Created
{
  "id": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
  "taxpayerId": "3f9c2a8e-6b1d-4e5a-9c47-1d2b8e6f0a11",
  "businessPremiseId": "b7d4e2c1-9a3f-4c8e-8f21-6e5a0c9d3b22",
  "clientReference": "TRAINING-1",
  "invoiceType": "TRAINING",
  "transactionType": "SALE",
  "state": "COMPLETED",
  "original": null,
  "document": {
    "id": "3d4e5f6a-7b8c-4d9e-8f0a-1b2c3d4e5f6a",
    "taxpayerId": "3f9c2a8e-6b1d-4e5a-9c47-1d2b8e6f0a11",
    "businessPremiseId": "b7d4e2c1-9a3f-4c8e-8f21-6e5a0c9d3b22",
    "idempotencyKey": "training-2026-09-02-1",
    "clientReference": "TRAINING-1",
    "invoiceType": "TRAINING",
    "transactionType": "SALE",
    "cashierId": "web-shop",
    "buyerId": null,
    "buyerDetails": null,
    "status": "FISCALIZED",
    "fiscalized": true,
    "failureCode": null,
    "retryable": false,
    "pfr": {
      "invoiceNumber": "JWX4K9PL-JWX4K9PL-1048",
      "sdcTime": "2026-09-01T10:15:32.483+02:00",
      "requestedBy": "JWX4K9PL",
      "signedBy": "JWX4K9PL",
      "transactionTypeCounter": 903,
      "totalCounter": 1048,
      "invoiceCounterExtension": "ОП",
      "totalAmount": 100,
      "totalTax": 9.9099,
      "verificationUrl": "https://sandbox.suf.purs.gov.rs/v/?vl=A0pXWDRLOVBMSldYNEs5UEwSBAAAEAQAAKCLPAAAAAAAAAABnAqJa1EAAAA...",
      "journal": "============ ФИСКАЛНИ РАЧУН ============\n...\nПФР број рачуна:      JWX4K9PL-JWX4K9PL-1048\nБројач рачуна:                903/1048ОП\n========================================\n======== КРАЈ ФИСКАЛНОГ РАЧУНА ========="
    },
    "receipt": {
      "textUrl": "/v1/fiscal-documents/3d4e5f6a-7b8c-4d9e-8f0a-1b2c3d4e5f6a/representations/official-text",
      "jsonUrl": "/v1/fiscal-documents/3d4e5f6a-7b8c-4d9e-8f0a-1b2c3d4e5f6a/representations/canonical-json",
      "pdfA4Url": "/v1/fiscal-documents/3d4e5f6a-7b8c-4d9e-8f0a-1b2c3d4e5f6a/representations/pdf-a4",
      "pdf80mmUrl": "/v1/fiscal-documents/3d4e5f6a-7b8c-4d9e-8f0a-1b2c3d4e5f6a/representations/pdf-80mm",
      "pdf58mmUrl": "/v1/fiscal-documents/3d4e5f6a-7b8c-4d9e-8f0a-1b2c3d4e5f6a/representations/pdf-58mm",
      "previewImageUrl": "/v1/fiscal-documents/3d4e5f6a-7b8c-4d9e-8f0a-1b2c3d4e5f6a/representations/preview-png",
      "qrImageUrl": "/v1/fiscal-documents/3d4e5f6a-7b8c-4d9e-8f0a-1b2c3d4e5f6a/representations/qr-svg",
      "verificationUrl": "https://sandbox.suf.purs.gov.rs/v/?vl=A0pXWDRLOVBMSldYNEs5UEwSBAAAEAQAAKCLPAAAAAAAAAABnAqJa1EAAAA...",
      "preferredPaperFormat": "a4"
    },
    "createdAt": "2026-09-01T08:15:31.902Z",
    "updatedAt": "2026-09-01T08:15:32.611Z"
  },
  "failureCode": null,
  "createdAt": "2026-09-02T07:10:00.000Z",
  "updatedAt": "2026-09-02T07:10:01.100Z"
}
Response: ProformaTrainingWorkflow

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

createProformaTrainingWorkflow: Response
FieldTypeDescription
idrequireduuid
taxpayerIdrequireduuid
businessPremiseIdrequireduuid
clientReferencerequiredstring
invoiceTyperequiredstring

PROFORMATRAININGValues

transactionTyperequiredTransactionType

SALEREFUNDValues

staterequiredstring

PENDINGCOMPLETEDOUTCOME_UNKNOWNREJECTEDFAILEDValues

originaloptionalProformaTrainingWorkflowOriginal| null (nullable)
sourcerequiredconst "BOKA"
fiscalDocumentIdrequireduuid
pfrNumberrequiredstring
pfrTimerequireddate-time
invoiceTyperequiredstring

PROFORMATRAININGValues

transactionTyperequiredTransactionType

SALEREFUNDValues

documentrequiredFiscalDocument
idrequireduuid
taxpayerIdrequireduuid
businessPremiseIdrequireduuid
idempotencyKeyrequiredstring
clientReferencerequiredstring
invoiceTyperequiredInvoiceType

NORMALPROFORMACOPYTRAININGADVANCEValues

transactionTyperequiredTransactionType

SALEREFUNDValues

cashierIdrequiredstring
buyerIdoptionalstring| null (nullable)
buyerDetailsoptionalFiscalBuyerDetails| null (nullable)The buyer's company-registry facts stored with the document at reservation and printed under the buyer identification. Null when the buyer is not a domestic company (prefixes 10, 12, 14 with a valid PIB) or the register could not answer at issuance.
legalNamerequiredstring

max 350

taxIdentifierrequiredstring

pattern ^[0-9]{9}$

registrationNumberoptionalstring| null (nullable)

pattern ^[0-9]{8}$

addressoptionalstring| null (nullable)

max 300

cityoptionalstring| null (nullable)

max 100

sourcerequiredstring

nbs-jrrValues

resolvedAtrequireddate-time
statusrequiredFiscalDocumentStatus

RECEIVEDVALIDATEDSUBMITTINGFISCALIZEDREJECTEDNOT_FISCALIZEDOUTCOME_UNKNOWNRECONCILINGValues

fiscalizedrequiredboolean
failureCodeoptionalstring| null (nullable)
pfrRejectionoptionalobject| null (nullable)Present only on a single-document read of a REJECTED operation. The V-PFR's own validation result, bounded to the property path of the caller's request and the supplier's numeric codes (2310 invalid tax label; 2800 to 2808 required, length, range, value, format and list-size validation). Lists never carry it.
itemsrequiredarray<object>

max 10 items

propertyrequiredstring

max 120

codesrequiredarray<string>

max 5 items

retryablerequiredboolean
pfroptionalPfrResult| null (nullable)
invoiceNumberrequiredstring
sdcTimerequireddate-time
requestedByrequiredstring
signedByrequiredstring
transactionTypeCounteroptionalinteger| null (nullable)V-PFR transaction-type counter (the left half of the printed counter). Null when the stored receipt does not carry it; the printed counter is always in the journal text.
totalCounteroptionalinteger| null (nullable)V-PFR total counter (the right half of the printed counter and the last segment of invoiceNumber). Null under the same condition as transactionTypeCounter.
invoiceCounterExtensionoptionalstring| null (nullable)Official Cyrillic invoice/transaction type pair printed after the counter (ПП, ПР, АП, АР, КП, КР, ОП, ОР, РП, РР). Null under the same condition as transactionTypeCounter.
totalAmountrequirednumber
totalTaxoptionalnumber| null (nullable)Sum of the V-PFR signed tax amounts of the document (the printed "Укупан износ пореза" before its two-decimal display rounding). Null under the same condition as transactionTypeCounter.
verificationUrlrequireduri
journalrequiredstring
receiptoptionalReceiptRepresentations| null (nullable)
textUrlrequireduri-reference
jsonUrlrequireduri-reference
pdfA4Urlrequireduri-reference
pdf80mmUrlrequireduri-reference
pdf58mmUrlrequireduri-reference
previewImageUrlrequireduri-reference
qrImageUrlrequireduri-reference
verificationUrlrequireduri
preferredPaperFormatrequiredstringImmutable preferred print/PDF format captured when this fiscal operation was reserved.

80mm58mma4Values

referenceoptionalResolvedReference
fiscalDocumentIdoptionaluuid
pfrNumberrequiredstring
pfrTimerequireddate-time
createdAtrequireddate-time
updatedAtrequireddate-time
failureCodeoptionalstring| null (nullable)
createdAtrequireddate-time
updatedAtrequireddate-time

Read a Proforma or Training workflow

get/v1/proforma-training-workflows/{proformaTrainingWorkflowId}

Scope fiscal:read

The workflow state and its document, including OUTCOME_UNKNOWN which a system must resolve before another attempt.

Parameters

getProformaTrainingWorkflow: Parameters
FieldInTypeDescription
proformaTrainingWorkflowIdrequiredpathuuid

Example

GET /v1/proforma-training-workflows/{proformaTrainingWorkflowId}
curl -X GET "https://api.bokapos.rs/v1/proforma-training-workflows/0a1b2c3d-4e5f-4a6b-8c7d-8e9f0a1b2c3d" \
  -H "Authorization: Bearer $BOKAPOS_TOKEN"

Responses

getProformaTrainingWorkflow: Responses
200 OKPersisted workflow and fiscal-document stateProformaTrainingWorkflow
404 Not FoundResource does not exist within the authenticated tenant scopeErrorCode
200 OK
{
  "id": "0a1b2c3d-4e5f-4a6b-8c7d-8e9f0a1b2c3d",
  "taxpayerId": "3f9c2a8e-6b1d-4e5a-9c47-1d2b8e6f0a11",
  "businessPremiseId": "b7d4e2c1-9a3f-4c8e-8f21-6e5a0c9d3b22",
  "clientReference": "QUOTE-2210",
  "invoiceType": "PROFORMA",
  "transactionType": "SALE",
  "state": "COMPLETED",
  "original": null,
  "document": {
    "id": "1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e",
    "taxpayerId": "3f9c2a8e-6b1d-4e5a-9c47-1d2b8e6f0a11",
    "businessPremiseId": "b7d4e2c1-9a3f-4c8e-8f21-6e5a0c9d3b22",
    "idempotencyKey": "quote-2210-proforma-1",
    "clientReference": "QUOTE-2210",
    "invoiceType": "PROFORMA",
    "transactionType": "SALE",
    "cashierId": "web-shop",
    "buyerId": "10:106952811",
    "buyerDetails": null,
    "status": "FISCALIZED",
    "fiscalized": true,
    "failureCode": null,
    "retryable": false,
    "pfr": {
      "invoiceNumber": "JWX4K9PL-JWX4K9PL-1047",
      "sdcTime": "2026-09-01T10:15:32.483+02:00",
      "requestedBy": "JWX4K9PL",
      "signedBy": "JWX4K9PL",
      "transactionTypeCounter": 902,
      "totalCounter": 1047,
      "invoiceCounterExtension": "ПрП",
      "totalAmount": 8990,
      "totalTax": 890.9009,
      "verificationUrl": "https://sandbox.suf.purs.gov.rs/v/?vl=A0pXWDRLOVBMSldYNEs5UEwSBAAAEAQAAKCLPAAAAAAAAAABnAqJa1EAAAA...",
      "journal": "============ ФИСКАЛНИ РАЧУН ============\n...\nПФР број рачуна:      JWX4K9PL-JWX4K9PL-1047\nБројач рачуна:                902/1047ПрП\n========================================\n======== КРАЈ ФИСКАЛНОГ РАЧУНА ========="
    },
    "receipt": {
      "textUrl": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/official-text",
      "jsonUrl": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/canonical-json",
      "pdfA4Url": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/pdf-a4",
      "pdf80mmUrl": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/pdf-80mm",
      "pdf58mmUrl": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/pdf-58mm",
      "previewImageUrl": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/preview-png",
      "qrImageUrl": "/v1/fiscal-documents/1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e/representations/qr-svg",
      "verificationUrl": "https://sandbox.suf.purs.gov.rs/v/?vl=A0pXWDRLOVBMSldYNEs5UEwSBAAAEAQAAKCLPAAAAAAAAAABnAqJa1EAAAA...",
      "preferredPaperFormat": "a4"
    },
    "createdAt": "2026-09-01T08:15:31.902Z",
    "updatedAt": "2026-09-01T08:15:32.611Z"
  },
  "failureCode": null,
  "createdAt": "2026-09-02T07:02:10.000Z",
  "updatedAt": "2026-09-02T07:02:11.204Z"
}
Response: ProformaTrainingWorkflow

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

getProformaTrainingWorkflow: Response
FieldTypeDescription
idrequireduuid
taxpayerIdrequireduuid
businessPremiseIdrequireduuid
clientReferencerequiredstring
invoiceTyperequiredstring

PROFORMATRAININGValues

transactionTyperequiredTransactionType

SALEREFUNDValues

staterequiredstring

PENDINGCOMPLETEDOUTCOME_UNKNOWNREJECTEDFAILEDValues

originaloptionalProformaTrainingWorkflowOriginal| null (nullable)
sourcerequiredconst "BOKA"
fiscalDocumentIdrequireduuid
pfrNumberrequiredstring
pfrTimerequireddate-time
invoiceTyperequiredstring

PROFORMATRAININGValues

transactionTyperequiredTransactionType

SALEREFUNDValues

documentrequiredFiscalDocument
idrequireduuid
taxpayerIdrequireduuid
businessPremiseIdrequireduuid
idempotencyKeyrequiredstring
clientReferencerequiredstring
invoiceTyperequiredInvoiceType

NORMALPROFORMACOPYTRAININGADVANCEValues

transactionTyperequiredTransactionType

SALEREFUNDValues

cashierIdrequiredstring
buyerIdoptionalstring| null (nullable)
buyerDetailsoptionalFiscalBuyerDetails| null (nullable)The buyer's company-registry facts stored with the document at reservation and printed under the buyer identification. Null when the buyer is not a domestic company (prefixes 10, 12, 14 with a valid PIB) or the register could not answer at issuance.
legalNamerequiredstring

max 350

taxIdentifierrequiredstring

pattern ^[0-9]{9}$

registrationNumberoptionalstring| null (nullable)

pattern ^[0-9]{8}$

addressoptionalstring| null (nullable)

max 300

cityoptionalstring| null (nullable)

max 100

sourcerequiredstring

nbs-jrrValues

resolvedAtrequireddate-time
statusrequiredFiscalDocumentStatus

RECEIVEDVALIDATEDSUBMITTINGFISCALIZEDREJECTEDNOT_FISCALIZEDOUTCOME_UNKNOWNRECONCILINGValues

fiscalizedrequiredboolean
failureCodeoptionalstring| null (nullable)
pfrRejectionoptionalobject| null (nullable)Present only on a single-document read of a REJECTED operation. The V-PFR's own validation result, bounded to the property path of the caller's request and the supplier's numeric codes (2310 invalid tax label; 2800 to 2808 required, length, range, value, format and list-size validation). Lists never carry it.
itemsrequiredarray<object>

max 10 items

propertyrequiredstring

max 120

codesrequiredarray<string>

max 5 items

retryablerequiredboolean
pfroptionalPfrResult| null (nullable)
invoiceNumberrequiredstring
sdcTimerequireddate-time
requestedByrequiredstring
signedByrequiredstring
transactionTypeCounteroptionalinteger| null (nullable)V-PFR transaction-type counter (the left half of the printed counter). Null when the stored receipt does not carry it; the printed counter is always in the journal text.
totalCounteroptionalinteger| null (nullable)V-PFR total counter (the right half of the printed counter and the last segment of invoiceNumber). Null under the same condition as transactionTypeCounter.
invoiceCounterExtensionoptionalstring| null (nullable)Official Cyrillic invoice/transaction type pair printed after the counter (ПП, ПР, АП, АР, КП, КР, ОП, ОР, РП, РР). Null under the same condition as transactionTypeCounter.
totalAmountrequirednumber
totalTaxoptionalnumber| null (nullable)Sum of the V-PFR signed tax amounts of the document (the printed "Укупан износ пореза" before its two-decimal display rounding). Null under the same condition as transactionTypeCounter.
verificationUrlrequireduri
journalrequiredstring
receiptoptionalReceiptRepresentations| null (nullable)
textUrlrequireduri-reference
jsonUrlrequireduri-reference
pdfA4Urlrequireduri-reference
pdf80mmUrlrequireduri-reference
pdf58mmUrlrequireduri-reference
previewImageUrlrequireduri-reference
qrImageUrlrequireduri-reference
verificationUrlrequireduri
preferredPaperFormatrequiredstringImmutable preferred print/PDF format captured when this fiscal operation was reserved.

80mm58mma4Values

referenceoptionalResolvedReference
fiscalDocumentIdoptionaluuid
pfrNumberrequiredstring
pfrTimerequireddate-time
createdAtrequireddate-time
updatedAtrequireddate-time
failureCodeoptionalstring| null (nullable)
createdAtrequireddate-time
updatedAtrequireddate-time