fature.al është platforma e faturimit dhe fiskalizimit për bizneset në Shqipëri. Hap një llogari
Skip to content
fature.al API Menu

Regjistro dalje parash

POST /api/v2/cash-register/withdraw Requires authentication Rate limited by the `api-global` limiter v2

Send a bearer token, plus the X-Client-Id and X-Client-Secret headers in the Authorization header.

Regjistron para që dalin nga arka, si një pagesë furnitori ose një tërheqje gjatë ditës, si veprim MONEY_OUT në pajisjen fiskale (TCR) të përdoruesit të token-it.

Për tërheqjen e gjithë gjendjes në fund të turnit përdorni POST /cash-register/close-balance. Nëse dita nuk është hapur ende, hapet vetë me 0.

  • internalId është i detyrueshëm.
  • amount është në ALL dhe duhet të jetë më e madhe se 0; shenja vjen nga endpoint-i, jo nga numri.
  • Arka duhet të ketë të paktën amount; kur nuk ka, dalja refuzohet.
  • id_client, kur dërgohet, duhet të jetë id-ja e një klienti të kompanisë suaj.
  • Përdoruesi duhet të ketë një TCR.

internalId#

Ky është ndryshimi i vetëm nga POST /api/v1/cash-register/withdraw. Mbajeni unik brenda kompanisë për vitin: një kërkesë e dytë me të njëjtin internalId nuk nxjerr para për herë të dytë, kthen veprimin e parë me 200. Një internalId i përdorur më parë për një hyrje refuzohet me 409.

Përgjigja ka të njëjtin format si hyrja. Kur CIS-i nuk arrihet, veprimi ruhet dhe fiskalizohet vetë më vonë: përgjigja vjen e plotë, me fiscal_status: UNFISCALIZED.

URL-ja e plotë: https://fature.al/api/v2/cash-register/withdraw

Ndryshuar që nga v1:

What changed v1 v2
body internalId — string, maxLength 255, required
200 data.internalId — string
409 not documented documented

Body parameters

Name Tipi E detyrueshme Përshkrimi
internalId string, maxLength 255 yes Identifikuesi i veprimit në sistemin tuaj, unik brenda kompanisë për vitin; shërben edhe si çelës idempotence. I detyrueshëm.
amount number yes Shuma, gjithmonë pozitive, në ALL. Hyrje apo dalje e vendos endpoint-i që thirrni, jo shenja e numrit.
description string, maxLength 255, nullable no Përshkrimi i veprimit.
third_party string, maxLength 255, nullable no Pala e tretë e veprimit: kush i solli ose kush i mori paratë.
id_client integer, nullable no Klienti: id-ja e një klienti tuajin në fature.al, për ta lidhur veprimin me të. Kthehet më pas në listën e veprimeve. Një id që nuk i përket kompanisë suaj refuzohet.

Përgjigjet

200 Kur përdoruesi nuk ka pajisje fiskale, kur arka nuk ka aq para sa `amount`, kur `id_client` nuk i përket kompanisë suaj, ose kur ruajtja dështon, përgjigja kthehet me HTTP 200 dhe `status: false`; arsyeja është te `message`.

Field Tipi Përshkrimi
status boolean
data object
data.id integer Id-ja e veprimit në fature.al
data.internalId string Identifikuesi i veprimit në sistemin tuaj, ai që dërguat te `internalId`
data.action_type string Lloji i veprimit: `MONEY_IN` hyrje parash, nga `POST /cash-register/deposit`; `MONEY_OUT` dalje parash, nga `POST /cash-register/withdraw`
data.amount number Shuma e veprimit, gjithmonë pozitive, në lekë; drejtimin e jep `action_type`
data.currency string Kodi ISO 4217 i monedhës së veprimit. Nga API-ja veprimet regjistrohen vetëm në lekë, ndaj vjen gjithmonë `ALL`
data.transaction_date string Data e veprimit, `YYYY-MM-DD`: dita kur u regjistrua
data.transaction_no integer Numri rendor i veprimit brenda kompanisë: numëron të gjitha veprimet e arkës të kompanisë, të çdo tipi dhe të çdo pajisjeje fiskale (TCR)
data.cash_action_no string Numri i veprimit, `n/viti/kodi TCR`: `n` nis nga 1 çdo vit, veçmas për çdo tip veprimi dhe çdo pajisje fiskale (TCR)
data.fiscal_status string, nullable Gjendja fiskale: `FISCALIZED` kur CIS-i e ka regjistruar veprimin, `UNFISCALIZED` sa kohë pret fiskalizimin, të cilin fature.al e riprovon vetë
data.fiscal_uuid string, nullable UUID-ja që fature.al i cakton veprimit kur e dërgon te CIS-i, e njëjta që shkon si UUID i kërkesës `RegisterCashDeposit`. `null` kur veprimi nuk i është dërguar ende CIS-it
data.fiscal_fic string, nullable Kodi FCDC që kthen CIS-i kur regjistron veprimin. `null` sa kohë veprimi pret fiskalizimin; mbetet `null` edhe kur CIS-i u përgjigj me një nga gabimet 56, 63 ose 920, të cilat fature.al i mbyll si `FISCALIZED` pa kod
data.description string, nullable Përshkrimi i veprimit, ashtu siç u dërgua te `description`; `null` kur nuk u dërgua

401 Unauthenticated

Field Tipi Përshkrimi
message string

409 Një kërkesë me këtë `internalId` është ende në proces, ose `internalId` është përdorur për një hyrje. Arsyeja është te `message`.

Field Tipi Përshkrimi
status boolean Gjithmonë false. Një përgjigje e suksesshme mban `status: true` dhe objektin `data`
message string Përshkrimi i gabimit. Bosh kur dështimi nuk mban ndonjë mesazh të vetin
errors array Mesazhe për t'u shfaqur te përdoruesi ose për t'u ruajtur në log. Mungon kur nuk ka gjë për të shtuar përtej `message`

422 Të dhënat nuk kaluan validimin, `internalId` që mungon përfshirë. Kjo përgjigje përdor fushën `success`, jo `status`, dhe `errors` është objekt sipas fushës.

Field Tipi Përshkrimi
success boolean Gjithmonë false
message string Një rresht përmbledhës, i njëjtë për çdo dështim validimi
errors object Fushat që nuk kaluan validimin, secila me mesazhet e veta. Çelësat me pikë tregojnë brenda objekteve dhe elementëve të array-ve, p.sh. `lines.0.quantity`

Shembull kërkese

cURL
curl -X POST 'https://fature.al/api/v2/cash-register/withdraw' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'X-Client-Id: YOUR_CLIENT_ID' \
  -H 'X-Client-Secret: YOUR_CLIENT_SECRET' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "internalId": "ARKA-2026-000318",
    "amount": 1500,
    "description": "Arketim nga klienti",
    "third_party": "Klienti XYZ",
    "id_client": 42
}'
PHP (Laravel)
use Illuminate\Support\Facades\Http;

$response = Http::withHeaders([
    'Authorization' => 'Bearer YOUR_TOKEN',
    'X-Client-Id' => 'YOUR_CLIENT_ID',
    'X-Client-Secret' => 'YOUR_CLIENT_SECRET',
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
])->post('https://fature.al/api/v2/cash-register/withdraw', [
    'internalId' => 'ARKA-2026-000318',
    'amount' => 1500,
    'description' => 'Arketim nga klienti',
    'third_party' => 'Klienti XYZ',
    'id_client' => 42,
]);

$data = $response->json();
PHP (Guzzle)
use GuzzleHttp\Client;

$client = new Client();

$response = $client->request('POST', 'https://fature.al/api/v2/cash-register/withdraw', [
    'headers' => [
        'Authorization' => 'Bearer YOUR_TOKEN',
        'X-Client-Id' => 'YOUR_CLIENT_ID',
        'X-Client-Secret' => 'YOUR_CLIENT_SECRET',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ],
    'json' => [
        'internalId' => 'ARKA-2026-000318',
        'amount' => 1500,
        'description' => 'Arketim nga klienti',
        'third_party' => 'Klienti XYZ',
        'id_client' => 42,
    ],
]);

$data = json_decode((string) $response->getBody(), true);
JavaScript
const response = await fetch('https://fature.al/api/v2/cash-register/withdraw', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_TOKEN',
    'X-Client-Id': 'YOUR_CLIENT_ID',
    'X-Client-Secret': 'YOUR_CLIENT_SECRET',
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
      "internalId": "ARKA-2026-000318",
      "amount": 1500,
      "description": "Arketim nga klienti",
      "third_party": "Klienti XYZ",
      "id_client": 42
  })
});

const data = await response.json();

Shembull përgjigjeje

200
{
    "status": true,
    "data": {
        "id": 5120,
        "internalId": "ARKA-2026-000318",
        "action_type": "MONEY_IN",
        "amount": 1500,
        "currency": "ALL",
        "transaction_date": "2026-09-14",
        "transaction_no": 812,
        "cash_action_no": "12/2026/pp556gh743",
        "fiscal_status": "FISCALIZED",
        "fiscal_uuid": "3f2c9a4e-6b1d-4c8e-9a7f-2d5e8b1c4a60",
        "fiscal_fic": "b6e1f2a3-9c4d-4e5f-8a7b-1c2d3e4f5a6b",
        "description": "Arketim nga klienti"
    }
}
401
{
    "message": "Unauthenticated."
}
409
{
    "status": false,
    "message": "Te dhenat jo te sakta.",
    "errors": [
        "errors"
    ]
}
422
{
    "success": false,
    "message": "Te dhena jo te sakta",
    "errors": []
}

Regjistrimi është falas.

Regjistrohu në fature.al

This page as Markdown, or the whole API as OpenAPI.