Skip to documentation

Copied

Cloud Fiscalization API

↑ ↓Navigate↵OpenEsc

Get credentials

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

01 · API overview

Fiscalization, sales and purchases in one API

Integrate Albania fiscalization and electronic invoicing with easyPos. Create invoices, manage cash balances, and access your business’s sales and purchases through one REST API.

  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; supplier data in buyer becomes the seller, and the business becomes the 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)
supplyPeriodSupplyPeriod? · start <= end · same calendar month
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?
supplyPeriodSupplyPeriod? (inherits from original when omitted)

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"
  }
]
POST/utilities/cis-invoices/salesCIS sales · Retrieve the business’s sales registered in CIS. Dates cover full days; ToDate must not precede FromDate. Omit dates for the current month, or use FIC for the full invoice with items.
Utilities#cis-sales
Required
none · body optional
Rules
current month by default · up to 1000/page · FIC returns Items · CIS scalar values are strings

Request fields

FieldType
FromDatestring(date)? · YYYY-MM-DD · default: first day of current month
ToDatestring(date)? · YYYY-MM-DD · default: last day of current month
Pageinteger? · minimum: 1 · default: 1
FICstring(uuid)? · ignores FromDate, ToDate and Page

Response fields

FieldType
[]CisInvoice[] · empty when no invoice is found
[].TypeOfInvCASH | NONCASH?
[].IsSimplifiedInv'true' | 'false'?
[].IsBadDeb'true' | 'false'?
[].TypeOfSelfIssstring?
[].IssueDateTimestring?
[].SendDateTimestring?
[].InvNumstring?
[].InvOrdNumstring?
[].TCRCodestring?
[].IsIssuerInVAT'true' | 'false'?
[].TaxFreeAmtstring?
[].MarkUpAmtstring?
[].GoodsExAmtstring?
[].TotPriceWoVATstring?
[].TotVATAmtstring?
[].TotPricestring?
[].OperatorCodestring?
[].BusinUnitCodestring?
[].SoftCodestring?
[].IICstring?
[].IICSignaturestring?
[].FICstring(uuid)?
[].IsReverseCharge'true' | 'false'?
[].PayDeadlinestring(date)?
[].PayMethods{ Type?: string; Amt?: string; CompCard?: string; Vouchers?: object[] }[]?
[].SellerCisParty?
[].BuyerCisParty?
[].Currency{ Code?: string; ExRate?: string; IsBuying?: string }?
[].SupplyDateOrPeriod{ Start?: string(date); End?: string(date) }?
[].CorrectiveInv{ IICRef?: string; IssueDateTime?: string; Type?: string }?
[].BadDebtInv{ IICRef?: string; IssueDateTime?: string }?
[].IsEinvoice'true' | 'false'?
[].EICstring(uuid)?
[].SameTaxesobject[]? · numeric values are strings
[].Fees{ Type?: string; Amt?: string }[]?
[].SumInvIICRefs{ IIC?: string; IssueDateTime?: string }[]?
[].ItemsCisInvoiceItem[]? · returned only for FIC lookup
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/utilities/cis-invoices/sales' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "FromDate": "2026-09-01",
  "ToDate": "2026-09-30",
  "Page": 1
}'
Example response
[
  {
    "TypeOfInv": "NONCASH",
    "IssueDateTime": "2026-09-15T12:41:32+02:00",
    "InvNum": "12/2026/xx123xx123",
    "InvOrdNum": "12",
    "TotPriceWoVAT": "100.00",
    "TotVATAmt": "20.00",
    "TotPrice": "120.00",
    "IIC": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
    "FIC": "2ed48eff-f3d0-4315-a2a5-16618c63ad0b",
    "IsIssuerInVAT": "true",
    "IsEinvoice": "false",
    "Seller": {
      "IDType": "NUIS",
      "IDNum": "BUSINESS_NIPT",
      "Name": "Business Demo SHPK"
    },
    "Buyer": {
      "IDType": "NUIS",
      "IDNum": "BUYER_NIPT",
      "Name": "Buyer Demo SHPK"
    },
    "PayMethods": [
      {
        "Type": "ACCOUNT",
        "Amt": "120.00"
      }
    ],
    "SameTaxes": [
      {
        "NumOfItems": "1",
        "PriceBefVAT": "100.00",
        "VATRate": "20.00",
        "VATAmt": "20.00"
      }
    ]
  }
]
POST/utilities/cis-invoices/purchasesCIS purchases · Retrieve supplier invoices registered in CIS where this business is the buyer. Up to 1,000 invoices per page; no match returns an empty array. FIC ignores dates and Page.
Required
none · body optional
Rules
current month by default · up to 1000/page · FIC returns Items · CIS scalar values are strings

Request fields

FieldType
FromDatestring(date)? · YYYY-MM-DD · default: first day of current month
ToDatestring(date)? · YYYY-MM-DD · default: last day of current month
Pageinteger? · minimum: 1 · default: 1
FICstring(uuid)? · ignores FromDate, ToDate and Page

Response fields

FieldType
[]CisInvoice[] · empty when no invoice is found
[].TypeOfInvCASH | NONCASH?
[].IsSimplifiedInv'true' | 'false'?
[].IsBadDeb'true' | 'false'?
[].TypeOfSelfIssstring?
[].IssueDateTimestring?
[].SendDateTimestring?
[].InvNumstring?
[].InvOrdNumstring?
[].TCRCodestring?
[].IsIssuerInVAT'true' | 'false'?
[].TaxFreeAmtstring?
[].MarkUpAmtstring?
[].GoodsExAmtstring?
[].TotPriceWoVATstring?
[].TotVATAmtstring?
[].TotPricestring?
[].OperatorCodestring?
[].BusinUnitCodestring?
[].SoftCodestring?
[].IICstring?
[].IICSignaturestring?
[].FICstring(uuid)?
[].IsReverseCharge'true' | 'false'?
[].PayDeadlinestring(date)?
[].PayMethods{ Type?: string; Amt?: string; CompCard?: string; Vouchers?: object[] }[]?
[].SellerCisParty?
[].BuyerCisParty?
[].Currency{ Code?: string; ExRate?: string; IsBuying?: string }?
[].SupplyDateOrPeriod{ Start?: string(date); End?: string(date) }?
[].CorrectiveInv{ IICRef?: string; IssueDateTime?: string; Type?: string }?
[].BadDebtInv{ IICRef?: string; IssueDateTime?: string }?
[].IsEinvoice'true' | 'false'?
[].EICstring(uuid)?
[].SameTaxesobject[]? · numeric values are strings
[].Fees{ Type?: string; Amt?: string }[]?
[].SumInvIICRefs{ IIC?: string; IssueDateTime?: string }[]?
[].ItemsCisInvoiceItem[]? · returned only for FIC lookup
Request body
curl --request POST \
  --url 'https://api.dev.easypos.al/fiscalisation-service/v1/utilities/cis-invoices/purchases' \
  --header 'Authorization: Bearer {{accessToken}}' \
  --header 'Content-Type: application/json' \
  --header 'integration-app: your-client-name' \
  --data '{
  "FromDate": "2026-09-01",
  "ToDate": "2026-09-30",
  "Page": 1
}'
Example response
[
  {
    "TypeOfInv": "NONCASH",
    "IssueDateTime": "2026-09-15T12:41:32+02:00",
    "InvNum": "12/2026/xx123xx123",
    "InvOrdNum": "12",
    "TotPriceWoVAT": "100.00",
    "TotVATAmt": "20.00",
    "TotPrice": "120.00",
    "IIC": "D21EBF3F7B7C502D6AAF2321A7CE2CE8",
    "FIC": "2ed48eff-f3d0-4315-a2a5-16618c63ad0b",
    "IsIssuerInVAT": "true",
    "IsEinvoice": "false",
    "Seller": {
      "IDType": "NUIS",
      "IDNum": "SUPPLIER_NIPT",
      "Name": "Supplier Demo SHPK"
    },
    "Buyer": {
      "IDType": "NUIS",
      "IDNum": "BUSINESS_NIPT",
      "Name": "Business Demo SHPK"
    },
    "PayMethods": [
      {
        "Type": "ACCOUNT",
        "Amt": "120.00"
      }
    ],
    "SameTaxes": [
      {
        "NumOfItems": "1",
        "PriceBefVAT": "100.00",
        "VATRate": "20.00",
        "VATAmt": "20.00"
      }
    ]
  }
]

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
supplyPeriodSupplyPeriodOptionalstart <= end; dates 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 for P4 · <= invoice total · 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
pricenumberRequirednon-negative unit price including VAT; credit notes use negative units
unitsnumberRequiredquantity; negative for corrective invoices
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
CancelInvoiceRequest10
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
supplyPeriodSupplyPeriodOptionalinherits from original invoice when omitted
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
SupplyPeriod2
FieldTypeRequirementRules
startstring(date)RequiredYYYY-MM-DD; must not follow end; both dates must be in the same calendar month
endstring(date)RequiredYYYY-MM-DD; must not precede start; both dates must be in the same calendar month
GetCisInvoicesRequest4
FieldTypeRequirementRules
FromDatestring(date)OptionalYYYY-MM-DD at 00:00:00; defaults to first day of current month; ignored with FIC
ToDatestring(date)OptionalYYYY-MM-DD through 23:59:59; defaults to last day of current month; must not precede FromDate; ignored with FIC
PageintegerOptionalminimum 1; default 1; up to 1000 invoices per page; ignored with FIC
FICstring(uuid)OptionalUUID; returns full invoice with Items; other fields are ignored and not validated
CisInvoice61
FieldTypeRequirementRules
TypeOfInvstring(enum)OptionalCASH | NONCASH
IsSimplifiedInvstring(enum)Optionaltrue | false
IsBadDebstring(enum)Optionaltrue | false
TypeOfSelfIssstringOptionalSelf-issue type
IssueDateTimestringOptionalInvoice issue date and time
SendDateTimestringOptionalCIS scalar value; numeric and boolean values remain strings
InvNumstringOptionalCIS scalar value; numeric and boolean values remain strings
InvOrdNumstringOptionalCIS scalar value; numeric and boolean values remain strings
TCRCodestringOptionalCIS scalar value; numeric and boolean values remain strings
IsIssuerInVATstring(enum)Optionaltrue | false
TaxFreeAmtstringOptionalCIS scalar value; numeric and boolean values remain strings
MarkUpAmtstringOptionalCIS scalar value; numeric and boolean values remain strings
GoodsExAmtstringOptionalCIS scalar value; numeric and boolean values remain strings
TotPriceWoVATstringOptionalCIS scalar value; numeric and boolean values remain strings
TotVATAmtstringOptionalCIS scalar value; numeric and boolean values remain strings
TotPricestringOptionalCIS scalar value; numeric and boolean values remain strings
OperatorCodestringOptionalCIS scalar value; numeric and boolean values remain strings
BusinUnitCodestringOptionalCIS scalar value; numeric and boolean values remain strings
SoftCodestringOptionalCIS scalar value; numeric and boolean values remain strings
IICstringOptionalCIS scalar value; numeric and boolean values remain strings
IICSignaturestringOptionalCIS scalar value; numeric and boolean values remain strings
FICstring(uuid)OptionalCIS scalar value; numeric and boolean values remain strings
IsReverseChargestring(enum)Optionaltrue | false
PayDeadlinestring(date)OptionalCIS scalar value; numeric and boolean values remain strings
IsEinvoicestring(enum)Optionaltrue | false
EICstring(uuid)OptionalCIS scalar value; numeric and boolean values remain strings
SellerCisPartyOptional
BuyerCisPartyOptional
CurrencyobjectOptional
Currency.CodestringOptionalCIS scalar value; numeric and boolean values remain strings
Currency.ExRatestringOptionalCIS scalar value; numeric and boolean values remain strings
Currency.IsBuyingstring(enum)Optionaltrue | false
SupplyDateOrPeriodobjectOptional
SupplyDateOrPeriod.Startstring(date)OptionalCIS scalar value; numeric and boolean values remain strings
SupplyDateOrPeriod.Endstring(date)OptionalCIS scalar value; numeric and boolean values remain strings
CorrectiveInvobjectOptional
CorrectiveInv.IICRefstringOptionalCIS scalar value; numeric and boolean values remain strings
CorrectiveInv.IssueDateTimestringOptionalCIS scalar value; numeric and boolean values remain strings
CorrectiveInv.Typestring(enum)OptionalCORRECTIVE | DEBIT | CREDIT
BadDebtInvobjectOptional
BadDebtInv.IICRefstringOptionalCIS scalar value; numeric and boolean values remain strings
BadDebtInv.IssueDateTimestringOptionalCIS scalar value; numeric and boolean values remain strings
PayMethodsobject[]Optional
PayMethods[].TypestringOptionalCIS scalar value; numeric and boolean values remain strings
PayMethods[].AmtstringOptionalCIS scalar value; numeric and boolean values remain strings
PayMethods[].CompCardstringOptionalCIS scalar value; numeric and boolean values remain strings
PayMethods[].Vouchersobject[]Optional
PayMethods[].Vouchers[].NumstringOptionalCIS scalar value; numeric and boolean values remain strings
Feesobject[]Optional
Fees[].TypestringOptionalCIS scalar value; numeric and boolean values remain strings
Fees[].AmtstringOptionalCIS scalar value; numeric and boolean values remain strings
SameTaxesobject[]Optional
SameTaxes[].NumOfItemsstringOptionalCIS scalar value; numeric and boolean values remain strings
SameTaxes[].PriceBefVATstringOptionalCIS scalar value; numeric and boolean values remain strings
SameTaxes[].VATRatestringOptionalCIS scalar value; numeric and boolean values remain strings
SameTaxes[].ExemptFromVATstringOptionalCIS scalar value; numeric and boolean values remain strings
SameTaxes[].VATAmtstringOptionalCIS scalar value; numeric and boolean values remain strings
SumInvIICRefsobject[]Optional
SumInvIICRefs[].IICstringOptionalCIS scalar value; numeric and boolean values remain strings
SumInvIICRefs[].IssueDateTimestringOptionalCIS scalar value; numeric and boolean values remain strings
ItemsCisInvoiceItem[]OptionalReturned only for FIC lookup; omitted from date-range lists
CisParty6
FieldTypeRequirementRules
IDTypestringOptionalParty identifier type
IDNumstringOptionalParty identifier
NamestringOptionalParty name
AddressstringOptionalParty address
TownstringOptionalParty town
CountrystringOptionalCountry code as returned by CIS
CisInvoiceItem15
FieldTypeRequirementRules
NstringOptionalItem name
CstringOptionalItem code
UstringOptionalUnit of measure as returned by CIS
QstringOptionalQuantity as a string
UPBstringOptionalUnit price excluding VAT as a string
UPAstringOptionalUnit price including VAT as a string
RstringOptionalDiscount percentage as a string
RRstring(enum)OptionalWhether the discount reduces the base price; true | false
PBstringOptionalLine total excluding VAT as a string
VRstringOptionalVAT rate (%) as a string
VAstringOptionalLine VAT amount as a string
PAstringOptionalLine total including VAT as a string
EXstringOptionalVAT exemption reason
INstring(enum)OptionalInvestment item flag; true | false
VSobjectOptionalSold vouchers; CIS may return additional fields

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": "ALXXXXXXXXXXXXXXXXXXXXXXXXXX",
          "name": "Shitësi SHPK",
          "bankName": "Banka XYZ",
          "swift_code": "ABCDEFGH",
          "country": "Shqipëri",
          "countryCode": "AL",
          "currency": "ALL"
        }
      ]
    }
  ]
}

Operational clarifications

FieldRules
Credit notesKeep price non-negative and use negative units with correctiveInvoice. Negative unit prices are rejected by fiscal validation.
Noncash buyersUse the identifier type belonging to the buyer. A business NIPT cannot be sent as ID. Noncash sales to NUIS buyers require electronic invoicing.
Currency totalsRequest prices and payments use the invoice currency. Response totalPrice and tax totals are returned in ALL after applying exRate.
Demo self-issuanceOn 2026-10-10, SELF was rejected by the fiscal schema. AGREEMENT requires eInvoice upstream, while this API disallows isEinvoice with SELFISSUE. DOMESTIC requires an eligible domestic supplier.
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.

easyPos Cloud API