/api/v1/invoice
Requires authentication
Rate limited by the `api-global` limiter
v1
Send a bearer token in the Authorization header.
Merrni listen e faturave me filtrim dhe faqosje.
Full URL: https://fature.al/api/v1/invoice
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| limit | integer | no | Numri i faturave per faqe. Defaults to `20`. |
| offset | integer | no | Nga cila fature te fillohet. Defaults to `0`. |
| type | string | no | Filtro sipas tipit: `CASH`, `NONCASH` ose `EINVOICE`. Disa tipe ndahen me presje. Cdo vlere jashte ketyre te treve injorohet pa gabim, dhe nese asnje nuk mbetet e vlefshme, filtri nuk zbatohet fare. |
| fromDate | string | no | Data e fillimit (YYYY-MM-DD). |
| toDate | string | no | Data e perfundimit (YYYY-MM-DD). |
| query | string | no | Kerko sipas numrit te fatures, emrit te bleresit ose NIPT-it. |
Responses
200 OK
| Field | Type | Description |
|---|---|---|
| status | boolean | |
| data | object | |
| data.items | array | |
| data.items[].id | integer | Fatureal invoice id |
| data.items[].number | string, nullable | Fiscal invoice number |
| data.items[].type | string | Invoice type, e.g. NONCASH |
| data.items[].issue_date | string | Issue date (YYYY-MM-DD) |
| data.items[].due_date | string | Payment due date (YYYY-MM-DD) |
| data.items[].delivery_date | string | Delivery/supply-end date (YYYY-MM-DD) |
| data.items[].created_at | string, nullable | Creation timestamp (YYYY-MM-DD HH:MM:SS) |
| data.items[].supply_start_date | string, nullable | Supply period start (YYYY-MM-DD) |
| data.items[].supply_end_date | string, nullable | Supply period end (YYYY-MM-DD) |
| data.items[].client | object | |
| data.items[].client.name | string | Full name (or company name) |
| data.items[].client.id | object | |
| data.items[].client.id.type | any | Identifier type, e.g. NUIS, ID, PASSPORT |
| data.items[].client.id.id | any | The identifier value |
| data.items[].client.address | object | |
| data.items[].client.address.street | any | |
| data.items[].client.address.city | any | |
| data.items[].client.address.country | any | ISO 3166-1 alpha-3 country code, defaults to ALB |
| data.items[].amount | object | |
| data.items[].amount.currency | string | ISO 4217 currency code |
| data.items[].amount.exchange_rate | number, nullable | Rate to the local currency, null when the invoice is already in ALL |
| data.items[].amount.gross | number | Gross total, already reduced by the invoice discount |
| data.items[].amount.net | number | Net total, already reduced by the invoice discount |
| data.items[].amount.vat | number | |
| data.items[].amount.discount | number | The invoice-level discount, net-denominated: how much net came off the whole invoice. Line discounts are not in here; those are per line, on `lines[].discount`. Zero when the invoice carries no invoice discount |
| data.items[].amount.net_all | number | Net converted to the local currency (ALL) |
| data.items[].amount.gross_all | number | Gross converted to the local currency (ALL) |
| data.items[].amount.vat_all | number | VAT converted to the local currency (ALL) |
| data.items[].amount.discount_all | number | Invoice-level discount converted to the local currency (ALL) |
| data.items[].amount.local_currency | object, nullable | Present only on a foreign-currency invoice |
| data.items[].payment_method | string, nullable | |
| data.items[].payment | object | |
| data.items[].payment.state | string | PAID, PARTIALLY_PAID or UNPAID |
| data.items[].payment.amount_paid | number | Amount received so far, in the invoice currency |
| data.items[].payment.amount_left | number | Gross total minus what has been received, in the invoice currency |
| data.items[].bank_account | object, nullable | Bank account printed on the invoice, or null |
| data.items[].bank_account.id | integer | |
| data.items[].bank_account.bank_name | any | |
| data.items[].bank_account.iban | any | |
| data.items[].bank_account.swift | any | |
| data.items[].bank_account.currency | any | ISO 4217 currency code |
| data.items[].bank_account.notes | any | |
| data.items[].notes | string, nullable | |
| data.items[].iic | string, nullable | IIC / NSLF |
| data.items[].fic | string, nullable | FIC / NIVF |
| data.items[].eic | string, nullable | EIC, for e-invoices |
| data.items[].doc_type | string, nullable | UBL document type: 380 invoice, 381 credit note, 383 debit note. Null on a plain fiscal invoice |
| data.items[].process | string, nullable | UBL ProfileID: P1 for a sale, P9 for a correction. Set on e-invoices |
| data.items[].self_issue_type | string, nullable | Self-issuance type, when the invoice is self-issued |
| data.items[].reversed_at | string, nullable | When the invoice was reversed (YYYY-MM-DD HH:MM:SS), or null |
| data.items[].reversed_by | integer, nullable | Id of the invoice this one reverses, or null |
| data.items[].pdf_url | string | Direct download URL for the invoice PDF |
| data.items[].reverse_charge | boolean | |
| data.items[].periodic_invoice | boolean | |
| data.pagination | object | |
| data.pagination.records | integer | |
| data.pagination.limit | integer | |
| data.pagination.offset | integer | |
| data.pagination.type | string, nullable | |
| data.pagination.query | string, nullable |
422 Formati i datave nuk eshte YYYY-MM-DD.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false. A successful response carries `status: true` and a `data` object instead |
| message | string | The exception message. Empty when the failure carries no exception of its own |
| errors | array | Messages to show the operator or to log. Absent when the failure has nothing to add beyond `message` |
429 Kufiri i kerkesave u arrit. Kufiri per endpoint kthen zarfin standard te gabimit; kufiri i pergjithshem kthen vetem `message` bashke me header-in `Retry-After`.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false. A successful response carries `status: true` and a `data` object instead |
| message | string | The exception message. Empty when the failure carries no exception of its own |
| errors | array | Messages to show the operator or to log. Absent when the failure has nothing to add beyond `message` |
500 Gabim i papritur ne server.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false. A successful response carries `status: true` and a `data` object instead |
| message | string | The exception message. Empty when the failure carries no exception of its own |
| errors | array | Messages to show the operator or to log. Absent when the failure has nothing to add beyond `message` |
Example request
curl -X GET 'https://fature.al/api/v1/invoice' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'X-Client-Id: YOUR_CLIENT_ID' \
-H 'X-Client-Secret: YOUR_CLIENT_SECRET' \
-H 'Accept: application/json'
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',
])->get('https://fature.al/api/v1/invoice');
$data = $response->json();
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('GET', 'https://fature.al/api/v1/invoice', [
'headers' => [
'Authorization' => 'Bearer YOUR_TOKEN',
'X-Client-Id' => 'YOUR_CLIENT_ID',
'X-Client-Secret' => 'YOUR_CLIENT_SECRET',
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);
const response = await fetch('https://fature.al/api/v1/invoice', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'X-Client-Id': 'YOUR_CLIENT_ID',
'X-Client-Secret': 'YOUR_CLIENT_SECRET',
'Accept': 'application/json'
}
});
const data = await response.json();
Example response
{
"status": true,
"data": {
"items": [
{
"id": 1,
"number": "number",
"type": "type",
"issue_date": "issue date",
"due_date": "due date",
"delivery_date": "delivery date",
"created_at": "created at",
"supply_start_date": "supply start date",
"supply_end_date": "supply end date",
"client": {
"name": "Jane Doe",
"id": {
"type": "type",
"id": 1
},
"address": {
"street": "street",
"city": "Berlin",
"country": "US"
}
},
"amount": {
"currency": "USD",
"exchange_rate": 19.99,
"gross": 19.99,
"net": 19.99,
"vat": 19.99,
"discount": 3,
"net_all": 19.99,
"gross_all": 19.99,
"vat_all": 19.99,
"discount_all": 3,
"local_currency": []
},
"payment_method": "payment method",
"payment": {
"state": "state",
"amount_paid": 4200,
"amount_left": 4200
},
"bank_account": {
"id": 1,
"bank_name": "Jane Doe",
"iban": "iban",
"swift": "swift",
"currency": "USD",
"notes": "notes"
},
"notes": "notes",
"iic": "iic",
"fic": "fic",
"eic": "eic",
"doc_type": "doc type",
"process": "process",
"self_issue_type": "self issue type",
"reversed_at": "reversed at",
"reversed_by": 1,
"pdf_url": "https://example.com",
"reverse_charge": true,
"periodic_invoice": true
}
],
"pagination": {
"records": 1,
"limit": 25,
"offset": 0,
"type": "type",
"query": "query"
}
}
}
{
"status": true,
"message": "Hello there",
"errors": [
"errors"
]
}
{
"status": true,
"message": "Hello there",
"errors": [
"errors"
]
}
{
"status": true,
"message": "Hello there",
"errors": [
"errors"
]
}