/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 se0; 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 -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
}'
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();
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);
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
{
"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"
}
}
{
"message": "Unauthenticated."
}
{
"status": false,
"message": "Te dhenat jo te sakta.",
"errors": [
"errors"
]
}
{
"success": false,
"message": "Te dhena jo te sakta",
"errors": []
}