Skip to documentation

Copied

Cloud Fiscalization API

01 · First request

From token to fiscal invoice

Use development first. The business and fiscal device are resolved from the access token, so your request body contains only document data.

  1. 01

    Get credentials

    Request an access token registered for the environment, business and device you will use.

  2. 02

    Create a docId

    Generate and persist one stable identifier before the first request.

  3. 03

    Register and verify

    Send the invoice, then evaluate completion identifiers—not HTTP 200 alone.

Minimal normal invoice
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/register' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "SHOP-2026-000123",
  "articles": [
    {
      "articleId": "ART-1",
      "name": "Kafe",
      "vatCode": "B",
      "price": 120,
      "units": 2,
      "soldIn": "XPP"
    }
  ],
  "payment": [
    {
      "type": "CASH",
      "amount": 240
    }
  ]
}'
Completed response
{
  "orderId": "SHOP-2026-000123",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "12/2026/xx123xx123",
  "invoiceType": "CASH",
  "totalPrice": 240
}

02 · Access

Authentication and request headers

Every endpoint requires a bearer token. Replace the example integration-app value with the stable identifier assigned to your integration, then keep that value unchanged across requests.

HeaderRequirementPurpose
AuthorizationRequiredBearer access token for the selected environment.
Content-TypeRequiredUse application/json for every request.
integration-appRecommendedReplace your-client-name or erp-x with the stable identifier assigned to your integration.

03 · Recovery protocol

docId is your duplicate-prevention key

Choose docId in your system before sending a document. Reusing it continues the same fiscal operation and returns the same result; it must not create a second invoice.

Generate once
5–200 characters, unique for each business document.
Persist before POST
Store docId, the immutable request body and your local document ID atomically.
Reuse on recovery
Timeouts, connection loss, 502/503 and incomplete electronic responses keep the same docId.
Single flight
Never run register and status concurrently for one docId.

Safe recovery sequence

same docId · same body
  1. 01

    POST register

  2. 02

    Ambiguous or incomplete

  3. 03

    Wait + jitter

  4. 04

    POST status

  5. 05

    Complete?

  6. 06

    Replay same body

  1. 1Check completion: normal invoices require fic; electronic invoices require both fic and eic.
  2. 2For a timeout, network error, 502/503 or incomplete result, wait with exponential backoff and jitter, capped at 30 seconds.
  3. 3Call /invoice/status with the same docId. If the API says it does not exist, replay /invoice/register with the exact same body and docId.
  4. 4Do not retry validation errors or cisError.faultEnv=env:CLIENT until the request is corrected.

Cancellation is a new fiscal document: create a new cancellation docId. Every retry of that cancellation reuses its cancellation docId.

Client-side decision outline
const docId = await persistOperation(payload)

const result = await register({ ...payload, docId })
if (result.fic && (!payload.isEinvoice || result.eic)) return complete(result)

await backoffWithJitter()
const recovered = await status({ docId })

if (recovered.notFound) {
  return register({ ...payload, docId }) // exact same body
}

return evaluate(recovered)

04 · Document model

Invoice request explorer

Open any document type to inspect a complete request, response and the exact completion identifiers your client must check.

POST NORMALArticles, split payments and optional buyer. documentType may be omitted.
/invoice/registerCompletion: fic #invoice-type-normal
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/register' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "SHOP-2026-000123",
  "articles": [
    {
      "articleId": "ART-COFFEE",
      "name": "Kafe ekspres",
      "vatCode": "B",
      "price": 120,
      "units": 2,
      "soldIn": "XPP"
    },
    {
      "articleId": "ART-WATER",
      "name": "Ujë natyral",
      "vatCode": "B",
      "price": 100,
      "units": 1,
      "soldIn": "XPP"
    }
  ],
  "payment": [
    {
      "type": "CASH",
      "amount": 200
    },
    {
      "type": "CARD",
      "amount": 140
    }
  ]
}'
Example response
{
  "orderId": "SHOP-2026-000123",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "12/2026/xx123xx123",
  "invoiceType": "CASH",
  "totalPrice": 340
}

Request fields

FieldType
docIdstring
articlesobject[]
articles[].articleIdstring
articles[].namestring
articles[].vatCodestring
articles[].pricenumber
articles[].unitsnumber
articles[].soldInstring
paymentobject[]
payment[].typestring
payment[].amountnumber

Response fields

FieldType
orderIdstring
ficstring
iicstring
invoiceNumberstring
invoiceTypestring
totalPricenumber
POST ORDERArticles only; payment is omitted and generated as ORDER.
/invoice/registerCompletion: fic #invoice-type-order
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/register' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "ORDER-2026-000124",
  "documentType": "ORDER",
  "articles": [
    {
      "articleId": "ORD-1",
      "name": "Drekë biznesi",
      "vatCode": "B",
      "price": 1200,
      "units": 1,
      "soldIn": "XPP"
    }
  ]
}'
Example response
{
  "orderId": "ORDER-2026-000124",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "13/2026/xx123xx123",
  "invoiceType": "CASH",
  "totalPrice": 1200
}

Request fields

FieldType
docIdstring
documentTypestring
articlesobject[]
articles[].articleIdstring
articles[].namestring
articles[].vatCodestring
articles[].pricenumber
articles[].unitsnumber
articles[].soldInstring

Response fields

FieldType
orderIdstring
ficstring
iicstring
invoiceNumberstring
invoiceTypestring
totalPricenumber
POST SUMMARYConsumes unused ORDER iic values; articles are omitted.
/invoice/registerCompletion: fic #invoice-type-summary
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/register' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "SUMMARY-2026-000125",
  "documentType": "SUMMARY",
  "summaryInvoices": [
    "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
    "A11EBF3F7B7C502D6AAF2321A7CE2CE9"
  ],
  "total": 1800,
  "payment": [
    {
      "type": "CASH",
      "amount": 1800
    }
  ]
}'
Example response
{
  "orderId": "SUMMARY-2026-000125",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "14/2026/xx123xx123",
  "invoiceType": "CASH",
  "totalPrice": 1800
}

Request fields

FieldType
docIdstring
documentTypestring
summaryInvoicesstring[]
totalnumber
paymentobject[]
payment[].typestring
payment[].amountnumber

Response fields

FieldType
orderIdstring
ficstring
iicstring
invoiceNumberstring
invoiceTypestring
totalPricenumber
POST SELFISSUERequires selfIssueType and supplier data in buyer.
/invoice/registerCompletion: fic #invoice-type-selfissue
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/register' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "SELFISSUE-2026-000126",
  "documentType": "SELFISSUE",
  "selfIssueType": "DOMESTIC",
  "reverseCharge": true,
  "buyer": {
    "buyerIDType": "NUIS",
    "buyerIDNum": "{{supplierNipt}}",
    "buyerName": "Furnitor SHPK",
    "buyerAddress": "Tiranë",
    "buyerTown": "Tiranë",
    "buyerCountry": "ALB"
  },
  "articles": [
    {
      "articleId": "SVC-1",
      "name": "Shërbim profesional",
      "vatCode": "B",
      "price": 10000,
      "units": 1,
      "soldIn": "HUR"
    }
  ],
  "payment": [
    {
      "type": "CASH",
      "amount": 10000
    }
  ]
}'
Example response
{
  "orderId": "SELFISSUE-2026-000126",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "15/2026/xx123xx123",
  "invoiceType": "CASH",
  "totalPrice": 10000
}

Request fields

FieldType
docIdstring
documentTypestring
selfIssueTypestring
reverseChargeboolean
buyerobject
buyer.buyerIDTypestring
buyer.buyerIDNumstring
buyer.buyerNamestring
buyer.buyerAddressstring
buyer.buyerTownstring
buyer.buyerCountrystring
articlesobject[]
articles[].articleIdstring
articles[].namestring
articles[].vatCodestring
articles[].pricenumber
articles[].unitsnumber
articles[].soldInstring
paymentobject[]
payment[].typestring
payment[].amountnumber

Response fields

FieldType
orderIdstring
ficstring
iicstring
invoiceNumberstring
invoiceTypestring
totalPricenumber
POST EXPORTForeign buyer required; use the export VAT code configured for the business.
/invoice/registerCompletion: fic #invoice-type-export
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/register' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "EXPORT-2026-000127",
  "documentType": "EXPORT",
  "supplyPeriod": {
    "start": "2026-08-01",
    "end": "2026-08-28"
  },
  "buyer": {
    "buyerIDType": "VAT",
    "buyerIDNum": "IT12345678901",
    "buyerName": "Acquirente Demo SRL",
    "buyerAddress": "Via Roma 1",
    "buyerTown": "Bari",
    "buyerCountry": "ITA",
    "buyerCountryCode": "IT"
  },
  "articles": [
    {
      "articleId": "EXP-1",
      "name": "Mall për eksport",
      "vatCode": "J",
      "price": 25000,
      "units": 4,
      "soldIn": "XPP"
    }
  ],
  "payment": [
    {
      "type": "TRANSFER",
      "amount": 100000
    }
  ]
}'
Example response
{
  "orderId": "EXPORT-2026-000127",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "16/2026/xx123xx123",
  "invoiceType": "CASH",
  "totalPrice": 100000
}

Request fields

FieldType
docIdstring
documentTypestring
supplyPeriodobject
supplyPeriod.startstring
supplyPeriod.endstring
buyerobject
buyer.buyerIDTypestring
buyer.buyerIDNumstring
buyer.buyerNamestring
buyer.buyerAddressstring
buyer.buyerTownstring
buyer.buyerCountrystring
buyer.buyerCountryCodestring
articlesobject[]
articles[].articleIdstring
articles[].namestring
articles[].vatCodestring
articles[].pricenumber
articles[].unitsnumber
articles[].soldInstring
paymentobject[]
payment[].typestring
payment[].amountnumber

Response fields

FieldType
orderIdstring
ficstring
iicstring
invoiceNumberstring
invoiceTypestring
totalPricenumber
POST ELECTRONIC · P1Standard electronic invoice with NUIS buyer and non-cash payment.
/invoice/registerCompletion: fic + eic #invoice-type-electronic-p1
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/register' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "EINVOICE-P1-2026-000128",
  "isEinvoice": true,
  "selectedProcess": "P1",
  "payDeadline": "2026-09-30",
  "buyer": {
    "buyerIDType": "NUIS",
    "buyerIDNum": "{{buyerNipt}}",
    "buyerName": "Blerës SHPK",
    "buyerAddress": "Tiranë",
    "buyerTown": "Tiranë",
    "buyerCountry": "ALB",
    "buyerCountryCode": "AL"
  },
  "articles": [
    {
      "articleId": "SVC-CLOUD",
      "name": "Shërbim cloud",
      "vatCode": "B",
      "price": 10000,
      "units": 1,
      "soldIn": "HUR"
    }
  ],
  "payment": [
    {
      "type": "ACCOUNT",
      "amount": 10000,
      "details": [
        {
          "idNumber": "{{sellerIban}}",
          "name": "Shitësi SHPK",
          "bankName": "Banka",
          "swift_code": "ABCDEFGH",
          "country": "Shqipëri",
          "countryCode": "AL",
          "currency": "ALL"
        }
      ]
    }
  ]
}'
Example response
{
  "orderId": "EINVOICE-P1-2026-000128",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "17/2026/xx123xx123",
  "invoiceType": "NONCASH",
  "totalPrice": 10000,
  "eic": "2a8d91cf-8fea-4d86-b79d-4bcb0b153e78"
}

Request fields

FieldType
docIdstring
isEinvoiceboolean
selectedProcessstring
payDeadlinestring
buyerobject
buyer.buyerIDTypestring
buyer.buyerIDNumstring
buyer.buyerNamestring
buyer.buyerAddressstring
buyer.buyerTownstring
buyer.buyerCountrystring
buyer.buyerCountryCodestring
articlesobject[]
articles[].articleIdstring
articles[].namestring
articles[].vatCodestring
articles[].pricenumber
articles[].unitsnumber
articles[].soldInstring
paymentobject[]
payment[].typestring
payment[].amountnumber
payment[].detailsobject[]
payment[].details[].idNumberstring
payment[].details[].namestring
payment[].details[].bankNamestring
payment[].details[].swift_codestring
payment[].details[].countrystring
payment[].details[].countryCodestring
payment[].details[].currencystring

Response fields

FieldType
orderIdstring
ficstring
iicstring
invoiceNumberstring
invoiceTypestring
totalPricenumber
eicstring
POST ELECTRONIC · P4Prepayment invoice; prepaidAmount must be within the total.
/invoice/registerCompletion: fic + eic #invoice-type-electronic-p4
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/register' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "EINVOICE-P4-2026-000129",
  "isEinvoice": true,
  "selectedProcess": "P4",
  "prepaidAmount": 5000,
  "buyer": {
    "buyerIDType": "NUIS",
    "buyerIDNum": "{{buyerNipt}}",
    "buyerName": "Blerës SHPK",
    "buyerAddress": "Tiranë",
    "buyerTown": "Tiranë",
    "buyerCountry": "ALB"
  },
  "articles": [
    {
      "articleId": "ADV-1",
      "name": "Parapagim shërbimi",
      "vatCode": "B",
      "price": 10000,
      "units": 1,
      "soldIn": "XPP"
    }
  ],
  "payment": [
    {
      "type": "TRANSFER",
      "amount": 10000
    }
  ]
}'
Example response
{
  "orderId": "EINVOICE-P4-2026-000129",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "18/2026/xx123xx123",
  "invoiceType": "NONCASH",
  "totalPrice": 10000,
  "eic": "0543e84b-6108-48b2-a2af-5db66bb80616"
}

Request fields

FieldType
docIdstring
isEinvoiceboolean
selectedProcessstring
prepaidAmountnumber
buyerobject
buyer.buyerIDTypestring
buyer.buyerIDNumstring
buyer.buyerNamestring
buyer.buyerAddressstring
buyer.buyerTownstring
buyer.buyerCountrystring
articlesobject[]
articles[].articleIdstring
articles[].namestring
articles[].vatCodestring
articles[].pricenumber
articles[].unitsnumber
articles[].soldInstring
paymentobject[]
payment[].typestring
payment[].amountnumber

Response fields

FieldType
orderIdstring
ficstring
iicstring
invoiceNumberstring
invoiceTypestring
totalPricenumber
eicstring
POST ELECTRONIC · P9/P10Credit or corrective invoice referencing an electronic iic.
/invoice/registerCompletion: fic + eic #invoice-type-electronic-p9-p10
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/register' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "EINVOICE-P9-2026-000130",
  "isEinvoice": true,
  "selectedProcess": "P9",
  "correctiveInvoice": {
    "iicRef": "{{electronicIic}}"
  },
  "buyer": {
    "buyerIDType": "NUIS",
    "buyerIDNum": "{{buyerNipt}}",
    "buyerName": "Blerës SHPK",
    "buyerAddress": "Tiranë",
    "buyerTown": "Tiranë",
    "buyerCountry": "ALB"
  },
  "articles": [
    {
      "articleId": "CORR-1",
      "name": "Korrigjim shërbimi",
      "vatCode": "B",
      "price": -1000,
      "units": 1,
      "soldIn": "XPP"
    }
  ],
  "payment": [
    {
      "type": "TRANSFER",
      "amount": -1000
    }
  ]
}'
Example response
{
  "orderId": "EINVOICE-P9-2026-000130",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "19/2026/xx123xx123",
  "invoiceType": "NONCASH",
  "totalPrice": -1000,
  "eic": "6df80aec-f690-43ce-a2f2-45ee0cb948ce"
}

Request fields

FieldType
docIdstring
isEinvoiceboolean
selectedProcessstring
correctiveInvoiceobject
correctiveInvoice.iicRefstring
buyerobject
buyer.buyerIDTypestring
buyer.buyerIDNumstring
buyer.buyerNamestring
buyer.buyerAddressstring
buyer.buyerTownstring
buyer.buyerCountrystring
articlesobject[]
articles[].articleIdstring
articles[].namestring
articles[].vatCodestring
articles[].pricenumber
articles[].unitsnumber
articles[].soldInstring
paymentobject[]
payment[].typestring
payment[].amountnumber

Response fields

FieldType
orderIdstring
ficstring
iicstring
invoiceNumberstring
invoiceTypestring
totalPricenumber
eicstring
POST ELECTRONIC · P11Partial electronic invoicing flow.
/invoice/registerCompletion: fic + eic #invoice-type-electronic-p11
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/register' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "EINVOICE-P11-2026-000131",
  "isEinvoice": true,
  "selectedProcess": "P11",
  "buyer": {
    "buyerIDType": "NUIS",
    "buyerIDNum": "{{buyerNipt}}",
    "buyerName": "Blerës SHPK",
    "buyerAddress": "Tiranë",
    "buyerTown": "Tiranë",
    "buyerCountry": "ALB"
  },
  "articles": [
    {
      "articleId": "PART-1",
      "name": "Faturim i pjesshëm",
      "vatCode": "B",
      "price": 25000,
      "units": 1,
      "soldIn": "XPP"
    }
  ],
  "payment": [
    {
      "type": "TRANSFER",
      "amount": 25000
    }
  ]
}'
Example response
{
  "orderId": "EINVOICE-P11-2026-000131",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "20/2026/xx123xx123",
  "invoiceType": "NONCASH",
  "totalPrice": 25000,
  "eic": "55df7eaf-126f-41b7-8270-6fa57080703e"
}

Request fields

FieldType
docIdstring
isEinvoiceboolean
selectedProcessstring
buyerobject
buyer.buyerIDTypestring
buyer.buyerIDNumstring
buyer.buyerNamestring
buyer.buyerAddressstring
buyer.buyerTownstring
buyer.buyerCountrystring
articlesobject[]
articles[].articleIdstring
articles[].namestring
articles[].vatCodestring
articles[].pricenumber
articles[].unitsnumber
articles[].soldInstring
paymentobject[]
payment[].typestring
payment[].amountnumber

Response fields

FieldType
orderIdstring
ficstring
iicstring
invoiceNumberstring
invoiceTypestring
totalPricenumber
eicstring
POST CANCELLATION · NORMALNew cancellation docId referencing the original invoice iic.
/invoice/cancelCompletion: fic #invoice-type-cancellation
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/cancel' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "CANCEL-2026-000132",
  "correctiveInvoice": {
    "iicRef": "D21EBF3F7B7C502D6AAF2321A7CE2CE8"
  },
  "invoiceNotes": "Anulim me kërkesë të klientit"
}'
Example response
{
  "orderId": "CANCEL-2026-000132",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "21/2026/xx123xx123",
  "invoiceType": "CASH",
  "totalPrice": -340
}

Request fields

FieldType
docIdstring
correctiveInvoiceobject
correctiveInvoice.iicRefstring
invoiceNotesstring

Response fields

FieldType
orderIdstring
ficstring
iicstring
invoiceNumberstring
invoiceTypestring
totalPricenumber
POST CANCELLATION · ELECTRONICP10 corrective cancellation of an invoice that already has eic.
/invoice/cancelCompletion: fic + eic #invoice-type-electronic-cancellation
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/cancel' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "CANCEL-EINVOICE-2026-000133",
  "isEinvoice": true,
  "selectedProcess": "P10",
  "correctiveInvoice": {
    "iicRef": "{{electronicIic}}"
  },
  "invoiceNotes": "Anulim i faturës elektronike"
}'
Example response
{
  "orderId": "CANCEL-EINVOICE-2026-000133",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "22/2026",
  "invoiceType": "NONCASH",
  "totalPrice": -10000,
  "eic": "d59ef857-47df-4a80-a7d8-22ce70577df3"
}

Request fields

FieldType
docIdstring
isEinvoiceboolean
selectedProcessstring
correctiveInvoiceobject
correctiveInvoice.iicRefstring
invoiceNotesstring

Response fields

FieldType
orderIdstring
ficstring
iicstring
invoiceNumberstring
invoiceTypestring
totalPricenumber
eicstring

Electronic invoice process map

Electronic invoices may take longer because fiscalization and eInvoice delivery are separate stages. Treat them as complete only when both identifiers are present.

ProcessDefault invoice typeExtra rule
P1380Deliveries against purchase orders under a contract.
P2380Deliveries of goods or services under a contract.
P3380Delivery against an occasional purchase order.
P4386Prepayment; prepaidAmount must be greater than 0 and no greater than total.
P5380Payment on the spot.
P6380Payment before delivery.
P7380Invoice referencing a despatch advice.
P8380Invoice referencing both despatch and receipt advice.
P9384Credit note or negative invoice; correctiveInvoice.iicRef must reference an invoice with eic.
P10384Corrective invoice or cancellation; correctiveInvoice.iicRef must reference an invoice with eic.
P11326Partial and final invoicing.
Direct UNTDID invoice type codes

Use selectedInvoiceType only when you need a specific document classification. If omitted, selectedProcess chooses the default shown above.

CodeMeaning
82Metered-services invoice
84Debit note for financial adjustments
325Pro forma invoice
326Partial invoice
380Commercial invoice
383Debit note
386Prepayment invoice
393Factored invoice
394Lease invoice
395Consignment invoice
575Insurer invoice
623Forwarder invoice
780Freight invoice

Codes 80, 381, 384, 385 and 389 are reserved for process-assigned document types and cannot be selected directly.

05 · HTTP reference

Endpoints

All endpoints use POST with JSON and the same authentication headers.

POST/invoice/registerRegister invoice · Create a new fiscal document or continue the document identified by docId.
Required
docId · articles[]* · payment[]*
Rules
NORMAL | ORDER | SUMMARY | SELFISSUE | EXPORT | eInvoice

Request fields

FieldType
docIdstring
operatorCodestring?
currencyCurrency?
articlesArticle[] (conditional)
paymentPayment[] (conditional)
invoiceRebateRebate?
buyerBuyer (conditional)
correctiveInvoiceCorrectiveInvoiceRef (conditional)
invoiceNotesstring?
documentTypeNORMAL | ORDER | SUMMARY | SELFISSUE | EXPORT?
selfIssueTypeAGREEMENT | DOMESTIC | ABROAD | SELF | OTHER (conditional)
reverseChargeboolean?
summaryInvoicesstring[] (conditional)
totalnumber (conditional)
supplyPeriod{ start: date; end: date }?
isEinvoiceboolean?
selectedProcessP1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11?
selectedInvoiceTypeUNTDID code?
payDeadlinestring(date)?
prepaidAmountnumber (conditional)

Response fields

FieldType
orderIdstring
ficstring?
eicstring?
iicstring?
linkstring(uri)?
errorFiscalError?
invoiceNumberstring?
invoiceOrderNumberinteger?
invoiceTypeCASH | NONCASH?
totalPricenumber?
totalPriceWithoutVatnumber?
totalVatAmountnumber?
taxFreeAmountnumber?
goodsExportnumber?
markUpAmountnumber?
operatorCodestring?
businessUnitCodestring?
tcrCodestring?
sellerNamestring?
sellerNuisstring?
sellerAddressstring?
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/register' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "SHOP-2026-000123",
  "articles": [
    {
      "articleId": "ART-1",
      "name": "Kafe",
      "vatCode": "B",
      "price": 120,
      "units": 2,
      "soldIn": "XPP"
    }
  ],
  "payment": [
    {
      "type": "CASH",
      "amount": 240
    }
  ]
}'
Example response
{
  "orderId": "SHOP-2026-000123",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "12/2026/xx123xx123",
  "invoiceType": "CASH",
  "totalPrice": 240
}
POST/invoice/cancelCancel invoice · Create a corrective cancellation for an existing invoice iic.
Required
new docId · correctiveInvoice.iicRef
Rules
no articles · no payment

Request fields

FieldType
docIdstring
operatorCodestring?
correctiveInvoiceCorrectiveInvoiceRef
invoiceNotesstring?
isEinvoiceboolean?
selectedProcessP1–P11?
selectedInvoiceTypeUNTDID code?
payDeadlinestring(date)?
prepaidAmountnumber?

Response fields

FieldType
orderIdstring
ficstring?
eicstring?
iicstring?
linkstring(uri)?
errorFiscalError?
invoiceNumberstring?
invoiceOrderNumberinteger?
invoiceTypeCASH | NONCASH?
totalPricenumber?
totalPriceWithoutVatnumber?
totalVatAmountnumber?
taxFreeAmountnumber?
goodsExportnumber?
markUpAmountnumber?
operatorCodestring?
businessUnitCodestring?
tcrCodestring?
sellerNamestring?
sellerNuisstring?
sellerAddressstring?
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/cancel' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "SHOP-2026-000123-CANCEL",
  "correctiveInvoice": {
    "iicRef": "D21EBF3F7B7C502D6AAF2321A7CE2CE8"
  },
  "invoiceNotes": "Customer cancellation"
}'
Example response
{
  "orderId": "SHOP-2026-000123-CANCEL",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "13/2026/xx123xx123",
  "invoiceType": "CASH",
  "totalPrice": -240
}
POST/invoice/statusInvoice status · Read status by docId and continue an incomplete operation.
Required
docId
Rules
same docId · may continue processing

Request fields

FieldType
docIdstring

Response fields

FieldType
orderIdstring
ficstring?
eicstring?
iicstring?
linkstring(uri)?
errorFiscalError?
invoiceNumberstring?
invoiceOrderNumberinteger?
invoiceTypeCASH | NONCASH?
totalPricenumber?
totalPriceWithoutVatnumber?
totalVatAmountnumber?
taxFreeAmountnumber?
goodsExportnumber?
markUpAmountnumber?
operatorCodestring?
businessUnitCodestring?
tcrCodestring?
sellerNamestring?
sellerNuisstring?
sellerAddressstring?
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/status' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "SHOP-2026-000123"
}'
Example response
{
  "orderId": "SHOP-2026-000123",
  "fic": "52ca073b-536e-48e9-8678-cc0bf2202046",
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "invoiceNumber": "12/2026/xx123xx123",
  "invoiceType": "CASH",
  "totalPrice": 240
}
POST/invoice/pdfInvoice PDF · Generate an A4 PDF, receipt PNG or official electronic invoice PDF as base64.
Invoices#invoice-pdf
Required
iic
Rules
A4 | receipt | eInvoice

Request fields

FieldType
iicstring
pdfType'A4' | 'receipt' | 'eInvoice'
paperWidth58 | 80 | 110?
lang'sq' | 'en'?

Response fields

FieldType
base64string
langstring?
eicstring?
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/invoice/pdf' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "iic": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
  "pdfType": "A4",
  "lang": "sq"
}'
Example response
{
  "base64": "JVBERi0xLjQKJcfsj6IK...",
  "lang": "sq"
}
POST/balance/initiateInitiate balance · Report the opening cash balance in ALL.
Cash balance#initiate-balance
Required
docId · amount
Rules
once per business day and fiscal device · before the first cash invoice · amount in ALL

Request fields

FieldType
docIdstring
amountnumber
notesstring?
operatorCodestring?

Response fields

FieldType
orderIdstring
fcdcstring?
errorFiscalError?
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/balance/initiate' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "SHIFT-2026-08-28-OPEN",
  "amount": 10000
}'
Example response
{
  "orderId": "SHIFT-2026-08-28-OPEN",
  "fcdc": "b5c3e1a2-9f44-4c3a-9c1e-2f0d7a5b8e10"
}
POST/balance/depositDeposit cash · Report cash added to the till in ALL.
Cash balance#deposit-balance
Required
docId · amount
Rules
amount in ALL

Request fields

FieldType
docIdstring
amountnumber
notesstring?
operatorCodestring?

Response fields

FieldType
orderIdstring
fcdcstring?
errorFiscalError?
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/balance/deposit' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "SHIFT-2026-08-28-IN-1",
  "amount": 5000,
  "notes": "Cash added to till"
}'
Example response
{
  "orderId": "SHIFT-2026-08-28-IN-1",
  "fcdc": "d6a4e2b3-8e55-4d2b-8b2f-3a1e6b4c9f21"
}
POST/balance/withdrawWithdraw cash · Report cash removed from the till in ALL.
Cash balance#withdraw-balance
Required
docId · amount
Rules
amount in ALL

Request fields

FieldType
docIdstring
amountnumber
notesstring?
operatorCodestring?

Response fields

FieldType
orderIdstring
fcdcstring?
errorFiscalError?
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/balance/withdraw' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "docId": "SHIFT-2026-08-28-OUT-1",
  "amount": 2500,
  "notes": "Bank deposit"
}'
Example response
{
  "orderId": "SHIFT-2026-08-28-OUT-1",
  "fcdc": "e7b5f3c4-7d66-5e3c-9a3e-4b2f7c5d0a32"
}
POST/utilities/get-taxpayersSearch taxpayers · Search Albanian taxpayers by NIPT or business name.
Required
searchTerm (3–200)
Rules
NIPT or business name · searchTerm minimum 3 characters · no activity-status field

Request fields

FieldType
searchTermstring (3–200)

Response fields

FieldType
[]Taxpayer[]
[].Tinstring
[].Namestring
[].Addressstring
[].Townstring
[].Countrystring (ISO 3166-1 alpha-3)
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/utilities/get-taxpayers' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "searchTerm": "Vodafone"
}'
Example response
[
  {
    "Address": "Rruga Pavaresia, kodi postal 1050, Kashar 61",
    "Country": "ALB",
    "Name": "FONDACIONI VODAFONE ALBANIA",
    "Tin": "K72118452F",
    "Town": "Tirane"
  },
  {
    "Address": "Autostrada Tirane-Durres, Rruga Pavaresia, Nr.61, Kashar",
    "Country": "ALB",
    "Name": "VODAFONE ALBANIA",
    "Tin": "K11715005L",
    "Town": "Kashar"
  }
]
POST/utilities/get-operatorsList operators · Return operators available to the authenticated business and device.
Required
none
Rules
authenticated business + device

Request fields

FieldType
body{}

Response fields

FieldType
[]Operator[]
[].namestring
[].opCodestring
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/utilities/get-operators' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{}'
Example response
[
  {
    "name": "test3",
    "opCode": "gh537ez280"
  },
  {
    "name": "User A",
    "opCode": "aa111aa222"
  }
]

06 · Field reference

API schema catalog

Expand a schema to inspect every field, exact data type, requirement level and validation constraint.

RegisterInvoiceRequest22
FieldTypeRequirementRules
docIdstringRequired5–200 chars · unique per business document
operatorCodestringOptional^[a-z]{2}\d{3}[a-z]{2}\d{3}$
currencyCurrencyOptionaldefault: ALL / 1
articlesArticle[]Conditionalrequired except SUMMARY · minItems: 1
paymentPayment[]Conditionalrequired except ORDER · minItems: 1
invoiceRebateRebateOptionalpercentage or value, never both
buyerBuyerConditionalrequired for eInvoice and EXPORT
correctiveInvoiceCorrectiveInvoiceRefConditionalrequired for P9 / P10
invoiceNotesstringOptionalmaxLength: 500
documentTypeenumOptionalNORMAL | ORDER | SUMMARY | SELFISSUE | EXPORT
selfIssueTypeenumConditionalAGREEMENT | DOMESTIC | ABROAD | SELF | OTHER
reverseChargebooleanOptionaltrue only for SELFISSUE
summaryInvoicesstring[]ConditionalSUMMARY only · minItems: 1 · each iic is 32 hex chars
totalnumberConditionalSUMMARY only · exact referenced ORDER total
supplyPeriodobjectOptionalstart/end in one calendar month
supplyPeriod.startstring(date)ConditionalYYYY-MM-DD
supplyPeriod.endstring(date)ConditionalYYYY-MM-DD
isEinvoicebooleanOptionaldefault: false
selectedProcessenumOptionalP1–P11 · default: P1
selectedInvoiceTypestring(enum)Optional82 | 84 | 325 | 326 | 380 | 383 | 386 | 393 | 394 | 395 | 575 | 623 | 780
payDeadlinestring(date)OptionalYYYY-MM-DD · current year · not in the past
prepaidAmountnumberConditionalrequired for P4 · >= 0 · max 2 decimals
Article8
FieldTypeRequirementRules
articleIdstringRequiredmaxLength: 100
namestringRequiredmaxLength: 100
vatCodestring(enum)RequiredA | B | C | D | E | F | G | H | I | J | K | L · must match the business fiscal configuration
pricenumberRequiredunit price including VAT
unitsnumberRequiredquantity
soldInstringRequiredUN/CEFACT unit code, e.g. XPP | KGM | LTR | HUR
totalPricenumberOptionaldefault: price × units
rebateRebateOptionalline-level discount
Rebate2
FieldTypeRequirementRules
inPercentagenumberConditionalmutually exclusive with inValue
inValuenumberConditionalmutually exclusive with inPercentage
Payment3
FieldTypeRequirementRules
typestring(enum)RequiredCASH | BANKNOTE | CARD | CHECK | SVOUCHER | COMPANY | ORDER | ACCOUNT | FACTORING | COMPENSATION | TRANSFER | WAIVER | KIND | OTHER
amountnumberRequiredpayment sum must equal calculated invoice total
detailsPaymentDetail[]Conditionalrequired and non-empty for ACCOUNT
PaymentDetail7
FieldTypeRequirementRules
idNumberstringRequiredIBAN or account number
namestringRequiredaccount holder
bankNamestringRequiredbank name
swift_codestringRequiredSWIFT / BIC
countrystringRequiredcountry name
countryCodestringRequiredISO 3166-1 alpha-2 · exactly 2 chars
currencystringRequiredISO 4217 · exactly 3 chars
Buyer7
FieldTypeRequirementRules
buyerIDTypestring(enum)RequiredNUIS | ID | PASS | VAT | TAX | SOC | POINTS
buyerIDNumstringRequiredwhen buyerIDType=NUIS: ^[A-Za-z][0-9]{8}[A-Za-z]$ · normalize to uppercase
buyerNamestringRequiredbuyer legal/display name
buyerAddressstringRequiredbuyer address
buyerTownstringRequiredbuyer town
buyerCountrystringRequiredISO 3166-1 alpha-3, e.g. ALB
buyerCountryCodestringOptionalISO 3166-1 alpha-2 · default: AL
Currency2
FieldTypeRequirementRules
codestringOptionalISO 4217 · default: ALL
exRatenumberConditionalrequired when code != ALL · rate against ALL
CorrectiveInvoiceRef2
FieldTypeRequirementRules
iicRefstringRequiredexisting invoice iic · 32 hex chars
issueDateTimestring(date)Optionaldefaults to original invoice date
CancelInvoiceRequest9
FieldTypeRequirementRules
docIdstringRequirednew cancellation id · 5–200 chars
operatorCodestringOptional^[a-z]{2}\d{3}[a-z]{2}\d{3}$
correctiveInvoiceCorrectiveInvoiceRefRequirediicRef points to original invoice
invoiceNotesstringOptionalmaxLength: 500
isEinvoicebooleanOptionalinherits from original when omitted
selectedProcessenumOptionalP1–P11 · electronic default: P10
selectedInvoiceTypestring(enum)Optionalsame values as RegisterInvoiceRequest
payDeadlinestring(date)OptionalYYYY-MM-DD
prepaidAmountnumberOptional>= 0 · max 2 decimals
StatusInvoiceRequest1
FieldTypeRequirementRules
docIdstringRequiredsame invoice docId · 5–200 chars
InvoicePdfRequest4
FieldTypeRequirementRules
iicstringRequiredexactly 32 hexadecimal chars
pdfTypestring(enum)OptionalA4 | receipt | eInvoice · default: A4
paperWidthinteger(enum)Optional58 | 80 | 110 · receipt only · default: 80
langstring(enum)Optionalsq | en
BalanceRequest4
FieldTypeRequirementRules
docIdstringRequired5–200 chars · unique per balance operation · no prescribed naming convention
amountnumberRequiredamount in ALL
notesstringOptionaloperation note
operatorCodestringOptional^[a-z]{2}\d{3}[a-z]{2}\d{3}$
GetTaxpayersRequest1
FieldTypeRequirementRules
searchTermstringRequiredNIPT or business name · 3–200 chars
InvoiceResponse21
FieldTypeRequirementRules
orderIdstringRequiredechoes request docId
ficstringConditionalnormal completion identifier
eicstringConditionalrequired with fic for electronic completion
iicstringConditionalinvoice identifier · 32 hex chars
linkstring(uri)Optionalpublic verification URL
errorFiscalErrorOptionalpresent when incomplete or failed
invoiceNumberstringOptionalfiscal invoice number
invoiceOrderNumberintegerOptionalfiscal sequence number
invoiceTypestring(enum)OptionalCASH | NONCASH
totalPricenumberOptionalgross total
totalPriceWithoutVatnumberOptionalnet total
totalVatAmountnumberOptionalVAT total
taxFreeAmountnumberOptionaltax-free total
goodsExportnumberOptionalexport amount
markUpAmountnumberOptionalmarkup amount
operatorCodestringOptionalfiscal operator code
businessUnitCodestringOptionalfiscal business-unit code
tcrCodestringOptionalempty for electronic invoices
sellerNamestringOptionalseller name
sellerNuisstringOptionalseller NIPT
sellerAddressstringOptionalseller address
InvoiceIncompleteResponse2
FieldTypeRequirementRules
orderIdstringRequiredechoes request docId
errorFiscalErrorRequiredfiscalization or eInvoice delivery has not completed
Error2
FieldTypeRequirementRules
messagestringRequiredvalidation, authorization or domain error message
fieldstringOptionalfield that failed validation
CisError3
FieldTypeRequirementRules
faultEnvstring(enum)Optionalenv:CLIENT | env:SERVER
faultStringstringOptionalmessage returned by the tax platform
faultCodestringOptionaltax-platform error code
FiscalError2
FieldTypeRequirementRules
cisErrorCisErrorOptionaltax platform error
otherErrorstringOptionaltemporary processing error
PdfResponse2
FieldTypeRequirementRules
base64stringRequiredbase64 PDF or PNG
langstringOptionaldocument language
EinvoicePdfResponse2
FieldTypeRequirementRules
base64stringRequiredofficial eInvoice PDF encoded as base64
eicstringRequiredelectronic invoice identifier
BalanceResponse3
FieldTypeRequirementRules
orderIdstringRequiredechoes request docId
fcdcstringConditionalbalance-operation completion identifier
errorFiscalErrorOptionalprocessing error
Taxpayer5
FieldTypeRequirementRules
TinstringRequiredtaxpayer NIPT
NamestringRequiredregistered name
AddressstringRequiredregistered address
TownstringRequiredregistered town
CountrystringRequiredISO 3166-1 alpha-3
Operator2
FieldTypeRequirementRules
namestringRequiredoperator display name
opCodestringRequireduse as operatorCode in fiscal requests

VAT code map

vatCode depends on the business VAT status and fiscal configuration, not only on the article. For a VAT-registered business, the standard 20% category is B; A is the 0% category for a business that is not subject to VAT.

CodeRateFiscal treatment
A0%Business not subject to VAT
B20%Standard rate
C0%Exempt supply
D10%Reduced rate
E6%Reduced rate
J0%Export of goods

The API does not currently return this mapping. Store it in your integration configuration. Do not use other A–L codes without a confirmed fiscal configuration.

Complete ACCOUNT payment

details must be a non-empty array. Every entry describes one seller bank account and requires all seven fields shown here.

Payment fragment
{
  "payment": [
    {
      "type": "ACCOUNT",
      "amount": 10000,
      "details": [
        {
          "idNumber": "AL47212110090000000235698741",
          "name": "Shitësi SHPK",
          "bankName": "Banka XYZ",
          "swift_code": "ABCDEFGH",
          "country": "Shqipëri",
          "countryCode": "AL",
          "currency": "ALL"
        }
      ]
    }
  ]
}

Operational clarifications

FieldRules
buyerIDNum · NUISAccepted shape: one letter, eight digits, one letter (^[A-Za-z][0-9]{8}[A-Za-z]$). Normalize to uppercase. No alternative legacy NIPT shape is part of this contract.
get-taxpayersCountry uses ISO 3166-1 alpha-3 (ALB for Albania). The response has no active, inactive or deregistered status field; use this endpoint to search and populate buyer data, not as final verification of tax status.
Rate limitingNo numeric quota is currently published. Debounce searches and do not send a request for every keystroke.
balance/initiateSend one successful opening balance per business day and authenticated fiscal device/TCR, before its first cash invoice. An application shift is not the fiscal boundary, and there is no balance-close endpoint.
balance docIdThe SHIFT-… values are examples only. Use any stable unique identifier of 5–200 characters and reuse it only to recover the same balance operation.
Measurement unit codesDownload the supported measurement-unit list and use its code value as soldIn, for example XPP, KGM, LTR or HUR.Download unit-code list (.xlsx)
Canonical enums
soldIn
XPP · KGM · LTR · HUR · other UN/CEFACT unit codes
vatCode
A · B · C · D · E · F · G · H · I · J · K · L
payment.type
CASH · BANKNOTE · CARD · CHECK · SVOUCHER · COMPANY · ORDER · ACCOUNT · FACTORING · COMPENSATION · TRANSFER · WAIVER · KIND · OTHER
buyerIDType
NUIS · ID · PASS · VAT · TAX · SOC · POINTS
selectedProcess
P1 · P2 · P3 · P4 · P5 · P6 · P7 · P8 · P9 · P10 · P11
selectedInvoiceType
82 · 84 · 325 · 326 · 380 · 383 · 386 · 393 · 394 · 395 · 575 · 623 · 780
selfIssueType
AGREEMENT · DOMESTIC · ABROAD · SELF · OTHER
pdfType
A4 · receipt · eInvoice

07 · Completion contract

Read identifiers before declaring success

A successful HTTP response can still describe an unfinished external fiscalization operation. Persist the body and decide from the identifiers.

OperationComplete whenIf incomplete
Normal invoice / cancellationfic is presentRecover with the same docId.
Electronic invoice / cancellationfic and eic are both presentPoll status with the same docId.
Balance transactionfcdc is presentRetry the same operation and docId.
PDFbase64 is presentRetry after the source invoice is complete.

Error decision table

ErrorRetryableAction
400 validation / fieldNoFix the request; unknown top-level fields are rejected.
401 UnauthorizedAfter credentialsRenew the correct environment token, then preserve docId.
cisError env:CLIENTNoCorrect the fiscal or request data first.
cisError env:SERVER / otherErrorYesBack off and recover with the same docId.
Timeout / connection / 502 / 503YesStatus first; replay the immutable request only if not found.
Another request is processingYes, laterStop parallel work, wait, then query status.

08 · Source files

Use the same contract in your tools

The page is the readable reference. These files are direct downloads for generators, API clients and coding agents.

Need an integration credential or contract clarification?

easyPos Cloud API