The Trackings.ge API is designed for creating, managing, and tracking parcel deliveries.
It provides a simple and secure way for clients and systems to integrate parcel operations into their own workflows.
The API is built around three main concepts: Addresses, PUDOs, and Orders.
Before creating an order, you must define where parcels will be picked up and delivered.
An Address is a precise user-saved location such as a sender’s or receiver’s physical address.
A PUDO (Pick-Up Drop-Off point) is a predefined service location where parcels can be dropped off or picked up instead of using a courier.
Clients can manage sender and receiver addresses, check available cities and PUDOs, and use this information when creating or updating an order.
An Order is the core object that represents a shipment.
When placing an order, you link the pickup and delivery methods (Courier or PUDO), the sender and receiver information, parcel details (weight, quantity, insurance, special instructions), and payment conditions.
Orders move through different statuses as they progress — for example, label created, picked up by courier, delivered, or returned.
To ensure fair usage and system stability, all API clients are subject to rate limits. By default, each client is allowed up to 60 requests per minute per IP address or authenticated user.
If you exceed the allowed request limit, the server will respond with an HTTP 429 Too Many Requests
status code.
In this case, you should implement an exponential back-off strategy and retry after the time specified in the Retry-After
response header.
In the Trackings.ge API, the core of the parcel delivery process starts with geographic objects — specifically Addresses and PUDOs (Pick-Up Drop-Off points).
Addresses represent physical delivery or pickup locations provided by users — for example, a sender’s warehouse or a receiver’s home address. Each address includes detailed information such as the street address, city, geographic coordinates (latitude and longitude), and the type (SENDER or RECEIVER). These details ensure that couriers can locate both the sender and the recipient accurately.
PUDOs are predefined Pick-Up Drop-Off locations. These are official service points where customers can drop off parcels for shipment or pick up incoming parcels at their convenience. Using PUDOs offers flexibility for senders and receivers who prefer to manage deliveries outside of door-to-door courier services.
Clients first create or fetch saved addresses using the Addresses API. This stores precise location data in the system for both senders and receivers.
When a user chooses PUDO as their pickup or delivery method, they select a suitable PUDO point (instead of providing a custom address). The system verifies that the chosen PUDO exists and is valid for the selected city.
Once the sender’s and receiver’s locations are defined (either by address or PUDO), they become part of the Order. An order links these locations with parcel details, delivery instructions, payment terms, and service options (like COD, insurance, or express delivery).
The /api/geo/regions endpoint provides a complete list of regions available in the Trackings.ge delivery network.
Regions are higher-level geographic areas (such as provinces or administrative divisions) that organize cities and locations under a common administrative boundary. Using regions helps structure your addresses and PUDO points correctly and improves delivery route accuracy.
https://trackings.ge/api/geo/regions
GET
Authorization: Bearer YOUR_ACCESS_TOKEN
200 OK
application/json
Field | Type | Description |
---|---|---|
id | integer | Unique identifier for the region |
name_en | string | Region name in English |
name_ka | string | Region name in Georgian (ქართული) |
name_ru | string | Region name in Russian (Русский) |
name | string | Default region name (usually Georgian) |
latitude | string | Latitude coordinate of the region location |
longitude | string | Longitude coordinate of the region location |
{
"data":[
{
"id":1,
"name":"თბილისი",
"name_en":"Tbilisi",
"name_ka":"თბილისი",
"name_ru":"Тбилиси",
"latitude":"41.7151",
"longitude":"44.8271"
},
{
"id":2,
"name":"იმერეთი",
"name_en":"Imereti",
"name_ka":"იმერეთი",
"name_ru":"Имерети",
"latitude":"42.166667",
"longitude":"42.983333"
}
...
]
}
The Cities API returns a full list of all cities and municipality administrative centers in Georgia. There are 64 main cities that can be used as pickup or delivery locations when creating addresses and parcels.
https://trackings.ge/api/geo/cities
GET
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json
200 OK
application/json
Field | Type | Description |
---|---|---|
id | integer | Unique identifier for the city |
name | string | City name in the default language (usually Georgian) |
name_en | string | City name in English |
name_ru | string | City name in Russian |
{
"data":[
{
"id":1,
"name":"თბილისი",
"name_en":"Tbilisi",
"name_ru":"Тбилиси"
},
{
"id":578,
"name":"ბათუმი",
"name_en":"Batumi",
"name_ru":"Батуми"
},
{
"id":25,
"name":"ქუთაისი",
"name_en":"Kutaisi",
"name_ru":"Кутаиси"
}
...
]
}
The Cities By Region API provides all cities, towns, and municipality centers within a specific region in Georgia. This helps you build dynamic address forms by showing only valid cities for the selected region.
https://trackings.ge/api/geo/region/{region_id}/cities
GET
Bearer YOUR_ACCESS_TOKEN
Parameter | Type | Description |
---|---|---|
region_id | integer | ID of the region to fetch its cities (e.g., 2 for Imereti). |
200 OK
application/json
The response returns a JSON array containing all cities and municipalities within the specified region.
{
"regions":[
{
"id":14,
"name":"ქუთაისი",
"cities":[
{
"id":25,
"name":"ქუთაისი"
}
]
},
{
"id":17,
"name":"ზესტაფონის მუნიციპალიტეტი",
"cities":[
{
"id":92,
"name":"ზესტაფონი"
},
{
"id":121,
"name":"მეორე სვირი"
}
...
]
}
...
]
}
The PUDO API returns a list of all active Pick-Up/Drop-Off points across Georgian cities. These are official drop-off locations where senders and receivers can deliver or pick up parcels conveniently.
https://trackings.ge/api/geo/pudos
GET
Bearer YOUR_ACCESS_TOKEN
200 OK
application/json
Field | Type | Description |
---|---|---|
id | integer | Internal ID of the PUDO record |
city_id | integer | Unique ID of the city the PUDO belongs to |
pudo_id | integer | Identifier for the PUDO point |
name_ka | string | Name of the PUDO in Georgian |
city_name | string | Name of the city |
latitude | string | Latitude coordinate of the PUDO location |
longitude | string | Longitude coordinate of the PUDO location |
city | object | Detailed city info (ID, names in different languages) |
{
"data": [
{
"id": 1,
"city_id": 578,
"name_ka": "კანდელაკის 2",
"city_name": "ბათუმი",
"latitude": "41.64568614000878",
"longitude": "41.6464084834973",
"city": {
"id": 578,
"name": "ბათუმი",
"name_en": "Batumi",
"name_ru": "Батуми"
}
},
...
]
}
curl -X GET "https://trackings.ge/api/geo/pudos" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"
The PUDO Cities API provides a list of all cities that currently have active Pick-Up/Drop-Off (PUDO) points. This helps your application show only valid cities for PUDO-based parcel operations.
https://trackings.ge/api/geo/pudo/cities
GET
Bearer YOUR_ACCESS_TOKEN
200 OK
application/json
Field | Type | Description |
---|---|---|
id | integer | ID of the city associated with PUDO points |
name | string | City name in Georgian |
name_en | string | City name in English |
name_ru | string | City name in Russian |
{
"data": [
{
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
},
{
"id": 578,
"name": "ბათუმი",
"name_en": "Batumi",
"name_ru": "Батуми"
},
{
"id": 25,
"name": "ქუთაისი",
"name_en": "Kutaisi",
"name_ru": "Кутаиси"
}
...
]
}
curl -X GET "https://trackings.ge/api/geo/pudo/cities" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"
The PUDOs in City API returns all Pick-Up/Drop-Off (PUDO) points for a specific city. Use this to display only relevant PUDO locations to your customers, based on their selected city.
https://trackings.ge/api/geo/city/{city_id}/pudos
GET
Bearer YOUR_ACCESS_TOKEN
Parameter | Type | Description |
---|---|---|
city_id | integer | ID of the city (for example, 1 for Tbilisi) |
200 OK
application/json
Field | Type | Description |
---|---|---|
id | integer | Internal ID of the PUDO record |
city_id | integer | ID of the city the PUDO belongs to |
pudo_id | integer | Identifier for the PUDO point |
name_ka | string | PUDO address in Georgian |
city_name | string | Name of the city |
latitude | string | Latitude coordinate of the PUDO location |
longitude | string | Longitude coordinate of the PUDO location |
city | object | Associated city details (ID, name in multiple languages) |
{
"data": [
{
"id": 3,
"city_id": 1,
"name_ka": "კორნელი კეკელიძის 10",
"city_name": "თბილისი",
"latitude": "41.70722649580358",
"longitude": "44.77840054836694",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
}
...
]
}
curl -X GET "https://trackings.ge/api/geo/city/1/pudos" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"
The Addresses API returns all saved addresses for the authenticated user. You can filter results by type to get either sender or receiver addresses. Each address includes the full address, coordinates, city information, and the state which is the administrative center for that location.
https://trackings.ge/api/addresses
GET
Bearer YOUR_ACCESS_TOKEN
Parameter | Type | Description |
---|---|---|
type | string | Optional. Filter addresses by type: SENDER or RECEIVER |
GET https://trackings.ge/api/addresses
GET https://trackings.ge/api/addresses?type=SENDER
GET https://trackings.ge/api/addresses?type=RECEIVER
200 OK
application/json
Field | Type | Description |
---|---|---|
id | integer | Unique address ID |
type | string | Address type: SENDER or RECEIVER |
address | string | Full address text |
latitude | string | Latitude coordinate |
longitude | string | Longitude coordinate |
created_at | string | Timestamp when the address was created |
state | string | Administrative center of the address location |
city | object | Associated city info (ID, name in multiple languages) |
{
"data": [
{
"id": 4026,
"address": "ლერმონტოვის 16.",
"city_id": 578,
"type": "RECEIVER",
"latitude": "41.643656",
"longitude": "41.625172",
"created_at": "2025-07-08T15:26:09.000000Z",
"state": "ბათუმი",
"city": {
"id": 578,
"name": "ბათუმი",
"name_en": "Batumi",
"name_ru": "Батуми"
}
},
{
"id": 4025,
"address": "გურამიშვილის გამზირი 15.",
"city_id": 1,
"type": "SENDER",
"latitude": "41.7562173",
"longitude": "44.7899982",
"created_at": "2025-07-08T15:26:08.000000Z",
"state": "თბილისი",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
}
]
}
curl -X GET "https://trackings.ge/api/addresses?type=RECEIVER" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Use the POST /api/addresses endpoint to create a new address for the authenticated user. The address can be either a sender or receiver address, and the system will automatically geocode it.
https://trackings.ge/api/addresses
POST
Content-Type: application/json
Bearer YOUR_ACCESS_TOKEN
Field | Type | Required | Description |
---|---|---|---|
address | string | Yes | Full address text (max 255 characters) |
type | string | Yes | Address type: SENDER or RECEIVER |
city_id | integer | Yes | ID of the city. Use the /api/geo/cities endpoint to get valid IDs |
{
"address": "ჭავჭავაძის გამზირი 25",
"city_id": 1,
"type": "RECEIVER"
}
curl -X POST "https://trackings.ge/api/addresses" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"address": "ჭავჭავაძის გამზირი 25",
"type": "SENDER",
"city_id": 1
}'
200 Created
application/json
{
"address": {
"id": 5142,
"address": "ჭავჭავაძის გამზირი 25",
"city_id": "1",
"type": "RECEIVER",
"latitude": 41.7102985,
"longitude": 44.7670951,
"created_at": "2025-07-15T13:09:07.000000Z",
"state": "თბილისი",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
},
"type": "RECEIVER",
"message": "თქვენი მისამართი წარმატებით დაემატა"
}
Field | Type | Nullable | Description |
---|---|---|---|
address | object | No | Contains details about the created address |
type | string | No | Type of address: SENDER or RECEIVER |
message | string | No | Success message |
Field | Type | Nullable | Description |
---|---|---|---|
id | integer | No | Unique ID of the address |
address | string | No | Full address text |
city_id | integer | No | ID of the city |
type | string | No | Type: SENDER or RECEIVER |
latitude | float | No | Latitude coordinate |
longitude | float | No | Longitude coordinate |
state | string | No | Administrative center of the address location |
created_at | string | No | Timestamp when address was created |
city | object | No | Contains localized city info |
Note: The latitude and longitude are automatically generated. Make sure you use a valid city_id. Use /api/geo/cities
or /api/geo/region/{region_id}/cities
to get valid city IDs.
Use the GET /api/addresses/{id} endpoint to retrieve a specific address belonging to the authenticated user. The response returns full address details, including the linked city and geographic coordinates.
https://trackings.ge/api/addresses/{id}
GET
application/json
Parameter | Type | Required | Description |
---|---|---|---|
id | integer | Yes | ID of the address to be retrieved |
curl -X GET "https://trackings.ge/api/addresses/5142" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
200 OK
application/json
Field | Type | Description |
---|---|---|
id | integer | Unique ID of the address |
address | string | Full address text |
city_id | integer | ID of the city |
type | string | Type: SENDER or RECEIVER |
latitude | string | Latitude coordinate |
longitude | string | Longitude coordinate |
created_at | string | Creation timestamp (ISO 8601) |
state | string | Administrative center of the address location |
city | object | Localized city information |
{
"data": {
"id": 5142,
"address": "ჭავჭავაძის გამზირი 25",
"city_id": 1,
"type": "RECEIVER",
"latitude": "41.7102985",
"longitude": "44.7670951",
"created_at": "2025-07-15T13:09:07.000000Z",
"state": "თბილისი",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
}
}
404 Not Found
or 403 Forbidden
application/json
{
"message": "Address not found."
}
Note: The address must belong to the authenticated user. If it does not exist or does not belong to the user, a 404 Not Found
or 403 Forbidden
error is returned.
Use the PUT /api/addresses/{id} endpoint to update an existing address owned by the authenticated user. Updating is allowed only if the address is not linked to registered orders.
https://trackings.ge/api/addresses/{id}
PUT
Bearer YOUR_ACCESS_TOKEN
application/json
Parameter | Type | Required | Description |
---|---|---|---|
id | integer | Yes | The ID of the address to be updated |
Parameter | Type | Required | Description |
---|---|---|---|
address | string | Yes | Full address text (max: 255 characters) |
type | string | Yes | Address type: SENDER or RECEIVER |
city_id | integer | Yes | ID of the city (from your cities list) |
{
"address": "რუსთაველის 15",
"type": "SENDER",
"city_id": 578
}
curl -X PUT "https://trackings.ge/api/addresses/1556" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"address": "რუსთაველის 15",
"type": "SENDER",
"city_id": 578
}'
200 OK
application/json
{
"data": {
"id": 5142,
"address": "რუსთაველის 15",
"city_id": "578",
"type": "SENDER",
"latitude": 41.6460978,
"longitude": 41.64049,
"created_at": "2025-07-15T13:09:07.000000Z",
"state": "ბათუმი",
"city": {
"id": 578,
"name": "ბათუმი",
"name_en": "Batumi",
"name_ru": "Батуми"
}
}
}
Status | Response Example | Description |
---|---|---|
404 Not Found / 403 Forbidden |
{
"message": "An error occurred",
"error": "Address not found"
}
|
The address does not exist or does not belong to the user |
400 Bad Request |
{
"message": "An error occurred",
"error": "You already have at least 1 order registered at this address. It cannot be changed. Add a new address"
}
|
The address is linked to an order and cannot be updated |
Note: Use the /api/geo/cities
or /api/geo/region/{region_id}/cities
endpoints to get valid city_id
values.
The DELETE /api/addresses/{id} endpoint lets an authenticated user permanently remove an address from their account. Addresses linked to orders cannot be deleted. Always make sure to use a new address for future orders before deleting an old one.
https://trackings.ge/api/addresses/{id}
DELETE
Bearer YOUR_ACCESS_TOKEN
Parameter | Type | Required | Description |
---|---|---|---|
id | integer | Yes | ID of the address to be deleted |
curl -X DELETE "https://trackings.ge/api/addresses/214" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
200 OK
application/json
{
"message": "Address deleted successfully"
}
Status | Response Example | Description |
---|---|---|
404 Not Found |
{
"message": "An error occurred",
"error": "Address not found"
}
|
The address does not exist or does not belong to the user |
400 Bad Request |
{
"message": "An error occurred",
"error": "You already have at least 1 order registered at this address. It cannot be delete"
}
|
The address has at least one linked order and cannot be deleted |
Note: To delete an address linked to an order, you must first create and use a new address for future orders.
An Order in the Trackings.ge system represents a complete parcel shipment workflow between a sender and a receiver.
Creating an order connects addresses, pickup or drop-off (PUDO) points, delivery instructions, payment responsibilities, and additional preferences.
Each order has unique tracking and status updates to help both businesses and end-users manage parcel flows transparently.
An order starts with defining how the parcel will be picked up (e.g., by courier or by dropping off at a PUDO) and how it will be delivered.
Every order must include valid sender and receiver addresses or PUDO points.
The system requires the parcel’s weight and item count to calculate delivery costs and ensure safe handling.
Who pays for delivery — the sender or the receiver — must be specified. Payment can be Cash on Delivery (COD) or prepaid by other methods
If COD is enabled, the courier collects payment from the receiver when delivering the parcel, and this amount is then transferred back to the sender.
If delivery fails or the receiver rejects the parcel, the return policy defines what happens — return to sender, send to a service center, or cancel the return.
Senders can mark a parcel as insured or fragile to add extra safety and accountability.
Once created, an order receives a unique tracking code. The sender, receiver, and system admins can follow its status at every stage — pickup, transit, delivery, or return.
This flexible and secure system ensures reliable delivery and clear responsibilities for every shipment.
The GET /api/orders endpoint lets an authenticated user retrieve a paginated list of their orders.
Each order includes complete shipment details: sender and receiver info, pickup and delivery method (courier or PUDO), status, tracking code, weight, payment, insurance, COD, billing breakdown, and return rules.
The response is paginated, with up to 100 orders per page, and includes helpful links and meta info for navigating between pages.
This endpoint is essential for businesses and customers to track all parcels, check delivery statuses, verify payment details, and handle returns — all in one unified JSON format.
https://trackings.ge/api/orders
GET
Bearer YOUR_ACCESS_TOKEN
curl -X GET "https://trackings.ge/api/orders" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
200 OK
application/json
Field | Type | Nullable | Description |
---|---|---|---|
order_id | integer | No | Internal unique order ID |
uuid | string (UUID) | No | Globally unique identifier for the order |
tracking_code | string | No | System-generated tracking code |
client_tracking_code | string | Yes | Tracking code from client system (optional) |
current_status | string | No | Latest status code (e.g., CREATE, DELIVERED) |
current_status_text | string | No | Human-readable text for the current status |
pickup_method | string | No | How the package was picked up: COURIER or PUDO |
country_code | string | Yes | Sender's telephone country code |
phone_number | string | No | Sender or receiver phone number |
address_id | integer | No | Address ID |
address | string | No | Full address text |
city_id | integer | No | ID of the city |
type | string | No | Address type: SENDER or RECEIVER |
latitude | string | No | Latitude coordinate |
longitude | string | No | Longitude coordinate |
created_at | datetime | No | Timestamp when the address was created |
state | string | No | Administrative center of the address |
city_id | integer | No | City ID |
name | string | No | City name in Georgian |
name_en | string | No | City name in English |
name_ru | string | No | City name in Russian |
delivery_method | string | No | Delivery method: COURIER or PUDO |
is_legal_entity | boolean | No | Is the receiver a legal entity |
gov_number | string | Yes | Tax or gov ID if legal entity |
organization_name | string | Yes | Company name if legal entity |
receiver_name | string | No | Full name of the receiver |
weight | string | No | Shipment weight (kg) |
items_quantity | integer | No | Number of items in the order |
insured | boolean | Yes | Whether the order is insured |
fragile | boolean | Yes | Whether the items are fragile |
to_have_picture | boolean | Yes | Whether picture service is included |
is_express | boolean | Yes | Whether the delivery is express |
comment | string | Yes | Customer comment |
payer | string | No | Who pays for delivery: SENDER or RECEIVER |
payment_method | string | No | Payment method: CASH, CASHLESS |
delivery_at | datetime | Yes | When the order was delivered |
sign_image | string (URL) | Yes | Signature image URL |
label | string (URL) | Yes | Label PDF URL |
delivery_fee | float | No | Standard delivery fee |
cod | float | Yes | Cash on delivery amount |
cod_fee | float | Yes | COD service fee |
cod_fee_payer | string | Yes | Who pays the COD fee |
photo_service_fee | float | Yes | Photo service fee |
insurance_fee | float | Yes | Insurance fee |
express_fee | float | Yes | Express fee |
sender_fee | float | No | Total charged to sender |
receiver_fee | float | No | Total charged to receiver |
return_fee | float | No | Return fee |
return_delivery_fee | float | No | Return delivery fee |
sender_paid_date | datetime | Yes | Date sender paid |
receiver_paid_date | datetime | Yes | Date receiver paid |
cod_transaction_date | datetime | Yes | When COD was transferred |
return_decision | string | No | Return action: RETURN_TO_SENDER or SEND_TO_SERVICE_CENTER |
statuses | array | No | Array of status objects |
{
"data": [
{
"order_id": 4811,
"uuid": "9f654aa5-2e4c-45f8-8f57-132b43064ea9",
"tracking_code": "464792499854174",
"client_tracking_code": null,
"current_status": "CREATE",
"current_status_text": "Awaiting Pickup",
"sender": {
"pickup_method": "COURIER",
"country_code": null,
"phone_number": "+19177227425",
"address": {
"id": 5079,
"address": "საწყობის მისამართი",
"city_id": 1,
"type": "SENDER",
"latitude": "41.6751224",
"longitude": "44.9324938",
"created_at": "2025-07-15T10:05:26.000000Z",
"state": "თბილისი",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
},
"pudo": null
},
"receiver": {
"delivery_method": "COURIER",
"is_legal_entity": false,
"gov_number": null,
"organization_name": null,
"country_code": null,
"phone_number": "+995577294643",
"receiver_name": "სატესტო მყიდველი",
"address": {
"id": 5080,
"address": "მიმღების მისამართი ჩექაუთიდან",
"city_id": 652,
"type": "RECEIVER",
"latitude": "41.8209469",
"longitude": "41.7751508",
"created_at": "2025-07-15T10:05:27.000000Z",
"state": "ქობულეთი",
"city": {
"id": 652,
"name": "ქობულეთი",
"name_en": "Kobuleti",
"name_ru": "Кобулети"
}
},
"pudo": null
},
"weight": "15.00",
"items_quantity": 1,
"insured": false,
"fragile": false,
"to_have_picture": false,
"is_express": false,
"comment": "Order #117",
"payer": "SENDER",
"payment_method": "CASHLESS",
"created_at": "2025-07-15T10:05:28.000000Z",
"delivery_at": null,
"sign_image": null,
"label": null,
"billing": {
"delivery_fee": 15,
"cod": 0,
"cod_fee": 0,
"cod_fee_payer": "SENDER",
"photo_service_fee": 0,
"insurance_fee": 0,
"express_fee": 0,
"sender_fee": 15,
"receiver_fee": 0,
"return_fee": 0,
"return_delivery_fee": 0,
"sender_paid_date": null,
"receiver_paid_date": null,
"cod_transaction_date": null
},
"return": {
"return_decision": "CANCELED",
"label": null,
"notes": null,
"address": null,
"pudo": null
},
"statuses": []
}
],
"links": {
"first": "https://trackings.ge/api/orders?page=1",
"last": "https://trackings.ge/api/orders?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://trackings.ge/api/orders?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://trackings.ge/api/orders",
"per_page": 100,
"to": 1,
"total": 1
}
}
The POST /api/orders endpoint allows an authenticated user to create a new delivery order in the system. This process registers all the necessary details for picking up and delivering a shipment from the sender to the receiver.
When you create an order, you must define how the shipment will be picked up. There are two options:
The order creation process also includes other important details such as the receiver’s information, parcel weight, number of items, whether the parcel is insured or fragile, COD (cash on delivery) requirements, return instructions, and payment details.
Once created, each order is assigned a unique tracking code and can be tracked through its entire delivery lifecycle, including pickup, transit, delivery, and any returns or special handling instructions.
This process ensures the shipment is handled according to the selected pickup method, with accurate sender and receiver information, and with proper payment or COD instructions if needed.
https://trackings.ge/api/orders
POST
Content-Type: application/json
Bearer YOUR_ACCESS_TOKEN
Field | Type | Required | Validation | Description |
---|---|---|---|---|
pickup_method | string | Yes | Allowed: COURIER, PUDO | Defines how the package will be picked up. |
sender_address_id | integer | Required if pickup_method = COURIER | Must exist in addresses.id and belong to the authenticated user. Must be type SENDER. | ID of the sender's address for courier pickup. |
sender_pudo_city | integer | Required if pickup_method = PUDO | Must exist in cities.id | City where the sender will drop off the package at a PUDO point. |
sender_pudo_id | integer | Required if pickup_method = PUDO | Must exist in pudos.pudo_id | ID of the PUDO drop-off point for the sender. |
Field | Type | Required | Validation / Allowed Values | Description |
---|---|---|---|---|
delivery_method | string | Yes | COURIER, PUDO | How the receiver will get the package. |
receiver_address_id | integer | If delivery_method = COURIER | Must exist in addresses.id and belong to user with type RECEIVER. | Receiver's address ID. |
receiver_pudo_city | integer | If delivery_method = PUDO | Must exist in cities.id | City for PUDO delivery to receiver. |
receiver_pudo_id | integer | If delivery_method = PUDO | Must exist in pudos.pudo_id | ID of the receiver's PUDO point. |
Field | Type | Required | Description |
---|---|---|---|
is_individual_person | boolean | Yes | Indicates if the sender is an individual. |
sender_phone_extension | string | Optional | Optional phone extension for sender. |
sender_phone_number | string | Yes | Sender's phone number. |
receiver_phone_extension | string | Optional | Optional phone extension for receiver. |
receiver_phone_number | string | Yes | Receiver's phone number. |
receiver_name | string | Yes | Name of the receiver. |
gov_number | string | If is_individual_person = true | Government number for individual receiver. |
organization_name | string | If is_individual_person = true | Name of the organization (if applicable). |
Field | Type | Required | Validation | Description |
---|---|---|---|---|
weight | float | Yes | numeric, min:0.1 | Total package weight in kilograms. |
items_quantity | integer | Yes | numeric, min:1 | Number of items in the package. |
client_tracking_code | string | Optional | - | User-defined tracking code for internal reference. |
Field | Type | Required | Validation / Allowed Values | Description |
---|---|---|---|---|
cod | boolean | Optional | boolean | Cash on delivery option. |
cod_amount | float | If cod = true | numeric, min:1 | COD amount to be collected. |
payer | string | Yes | SENDER, RECEIVER | Who will pay for the delivery. |
payment_type | string | Yes | CASH, CASHLESS | Payment method. |
is_express | boolean | Optional | Only for legal entities | Whether the delivery is express. |
Field | Type | Required | Description |
---|---|---|---|
fragile | boolean | Optional | Mark if the item is fragile. |
to_have_picture | boolean | Optional | If the item needs to be photographed. |
insured | boolean | Optional | Indicates insurance is applied. |
description | string | Optional | Description of the package. |
Field | Type | Required | Validation / Allowed Values | Description |
---|---|---|---|---|
return_decision | string | If legal entity | RETURN_TO_SENDER, SEND_TO_SERVICE_CENTER, CANCELED | What to do if delivery fails (for legal entities only). |
return_pudo_id | integer | If return_decision = SEND_TO_SERVICE_CENTER | Must exist in pudos.id | Return to which PUDO if service center return is chosen. |
{
"pickup_method": "PUDO",
"sender_pudo_city": 1,
"sender_pudo_id": 9,
"delivery_method": "COURIER",
"receiver_address_id": 5150,
"is_individual_person": 0,
"sender_phone_number": "55700000",
"receiver_phone_number": "557000000",
"receiver_name": "John Doe",
"weight": 2.5,
"items_quantity": 1,
"cod":true,
"cod_amount": 70,
"payer": "SENDER",
"payment_type": "CASH",
"return_decision": "SEND_TO_SERVICE_CENTER",
"return_pudo_id": 9
}
curl -X POST "https://trackings.ge/api/orders" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"pickup_method": "PUDO",
"sender_pudo_city": 1,
"sender_pudo_id": 9,
"delivery_method": "COURIER",
"receiver_address_id": 5150,
"is_individual_person": 0,
"sender_phone_number": "55700000",
"receiver_phone_number": "557000000",
"receiver_name": "John Doe",
"weight": 2.5,
"items_quantity": 1,
"cod":true,
"cod_amount": 70,
"payer": "SENDER",
"payment_type": "CASH",
"return_decision": "SEND_TO_SERVICE_CENTER",
"return_pudo_id": 9
}'
{
"success": true,
"message": "Order #980180478760592 created successfully",
"order": {
"order_id": 4888,
"uuid": "9f65c50f-71d3-4187-b774-ede2c50700c5",
"tracking_code": "980180478760592",
"client_tracking_code": null,
"current_status": "CREATE",
"current_status_text": "Awaiting Pickup",
"sender": {
"pickup_method": "PUDO",
"country_code": null,
"phone_number": "55700000",
"address": null,
"pudo": {
"id": 9,
"city_id": 1,
"name_ka": "გლდანი, 4-ე მიკრო რაიონი, კორპუსი 92ა, შენობა 5.",
"city_name": "თბილისი",
"latitude": "41.79841113091622",
"longitude": "44.81899422384513",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
}
},
"receiver": {
"delivery_method": "COURIER",
"is_legal_entity": false,
"gov_number": null,
"organization_name": null,
"country_code": null,
"phone_number": "557000000",
"receiver_name": "John Doe",
"address": {
"id": 5150,
"address": "გურამიშვილის გამზირი 15",
"city_id": 1,
"type": "RECEIVER",
"latitude": "41.7562173",
"longitude": "44.7899982",
"created_at": "2025-07-15T15:44:26.000000Z",
"state": "თბილისი",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
},
"pudo": null
},
"weight": 2.5,
"items_quantity": 1,
"insured": false,
"fragile": false,
"to_have_picture": false,
"is_express": false,
"comment": null,
"payer": "SENDER",
"payment_method": "CASH",
"created_at": "2025-07-15T15:47:46.000000Z",
"delivery_at": null,
"sign_image": null,
"label": null,
"billing": {
"delivery_fee": 5,
"cod": 70,
"cod_fee": 1.4,
"cod_fee_payer": "SENDER",
"photo_service_fee": 0,
"insurance_fee": 0,
"express_fee": 0,
"sender_fee": 6.4,
"receiver_fee": 70,
"return_fee": 0.75,
"return_delivery_fee": 5,
"sender_paid_date": null,
"receiver_paid_date": null,
"cod_transaction_date": null
},
"return": {
"return_decision": "SEND_TO_SERVICE_CENTER",
"label": null,
"notes": null,
"address": null,
"pudo": {
"id": 9,
"city_id": 1,
"name_ka": "გლდანი, 4-ე მიკრო რაიონი, კორპუსი 92ა, შენობა 5.",
"city_name": "თბილისი",
"latitude": "41.79841113091622",
"longitude": "44.81899422384513",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
}
},
"statuses": []
}
}
The PUT /api/orders/{order_id} endpoint allows an authenticated user to update an existing order in the system. This operation is used when you need to correct or change information about an order that has been created but not yet processed by the courier.
Only orders that are in the "CREATE" status can be updated. If the order has moved to any other status (for example: picked up, in transit, delivered, or cancelled), the system will reject the update request and return an error response. This ensures that no critical delivery or payment data is modified once the shipping process has started.
To update an order, you must include the order ID in the URL path parameter ({order_id}
). The order ID must be valid, must exist in the system, and must belong to the authenticated user sending the request.
The request body must contain the same fields and structure used to create an order with POST /api/orders. This means you can update pickup details, delivery details, parcel information, sender and receiver contacts, payment options, and any optional instructions like fragile handling, insurance, return instructions, or whether a picture or handover document is required.
Any fields that are left unchanged in the request body will overwrite the existing order record with the same values. For this reason, always make sure to include all necessary fields — even those that do not change — to avoid accidentally overwriting them with null or default values.
This update operation is useful when a sender notices incorrect address information, a wrong phone number, or wants to adjust delivery preferences before the parcel is handed over to the courier.
A valid Bearer Token must be included in the request header for authentication and authorization. The Content-Type must be application/json
. If the update is successful, the API will respond with the updated order details in the same structure as the POST response.
Important: If the order is linked to any follow-up actions (such as payment collection, COD transaction, or return process) or if it is no longer in the create state, it cannot be updated — you will need to cancel it (if allowed) and create a new order instead.
https://trackings.ge/api/orders/{order_id}
PUT
Content-Type: application/json
Bearer YOUR_ACCESS_TOKEN
{order_id}
must be a valid existing order ID.Field | Type | Required | Description |
---|---|---|---|
pickup_method | string | yes | Defines how the package will be picked up. Possible values: COURIER, PUDO. |
sender_address_id | integer | if pickup_method = COURIER | ID of sender's saved address. Must exist in addresses and belong to the user. |
sender_pudo_city | integer | if pickup_method = PUDO | ID of the city for sender's PUDO drop-off. |
sender_pudo_id | integer | if pickup_method = PUDO | ID of the sender’s PUDO point. |
delivery_method | string | yes | How the receiver will get the package. Possible values: COURIER, PUDO. |
receiver_address_id | integer | if delivery_method = COURIER | ID of receiver's address. Must exist and belong to the user with type RECEIVER. |
receiver_pudo_city | integer | if delivery_method = PUDO | City ID for receiver’s PUDO delivery. |
receiver_pudo_id | integer | if delivery_method = PUDO | ID of the receiver’s PUDO point. |
is_individual_person | boolean | yes | Indicates if the sender is an individual person. |
sender_phone_number | string | yes | Sender's phone number. |
receiver_phone_number | string | yes | Receiver's phone number. |
receiver_name | string | yes | Name of the receiver. |
weight | float | yes | Weight of the parcel in kilograms. |
items_quantity | integer | yes | Number of items in the parcel. |
payment_by | string | yes | Who pays for the delivery. Possible values: SENDER, RECEIVER. |
payment_type | string | yes | Payment method. Possible values: CASH, CASHLESS. |
Note: The full list of fields matches the POST /api/orders structure, so reuse all applicable fields when performing an update.
{
"pickup_method": "COURIER",
"sender_address_id": 4090,
"delivery_method": "COURIER",
"receiver_address_id": 5150,
"is_individual_person": 0,
"sender_phone_number": "55700000",
"receiver_phone_number": "557000000",
"receiver_name": "John Doe",
"weight": 2.5,
"items_quantity": 1,
"cod":true,
"cod_amount": 70,
"payer": "SENDER",
"payment_type": "CASH",
"return_decision": "SEND_TO_SERVICE_CENTER",
"return_pudo_id": 9
}
curl -X PUT "https://trackings.ge/api/orders/4888" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"pickup_method": "COURIER",
"sender_address_id": 4090,
"delivery_method": "COURIER",
"receiver_address_id": 5150,
"is_individual_person": 0,
"sender_phone_number": "55700000",
"receiver_phone_number": "557000000",
"receiver_name": "John Doe",
"weight": 2.5,
"items_quantity": 1,
"cod":true,
"cod_amount": 70,
"payer": "SENDER",
"payment_type": "CASH",
"return_decision": "SEND_TO_SERVICE_CENTER",
"return_pudo_id": 9
}'
{
"success": true,
"message": "Order #980180478760592 updated successfully",
"order": {
"order_id": 4888,
"uuid": "9f65c50f-71d3-4187-b774-ede2c50700c5",
"tracking_code": "980180478760592",
"client_tracking_code": null,
"current_status": "CREATE",
"current_status_text": "Awaiting Pickup",
"sender": {
"pickup_method": "COURIER",
"country_code": null,
"phone_number": "55700000",
"address": {
"id": 4090,
"address": "პეკინის გამზირი 5.",
"city_id": 1,
"type": "SENDER",
"latitude": "41.7211724",
"longitude": "44.7756078",
"created_at": "2025-07-10T09:27:10.000000Z",
"state": "თბილისი",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
},
"pudo": null
},
"receiver": {
"delivery_method": "COURIER",
"is_legal_entity": false,
"gov_number": null,
"organization_name": null,
"country_code": null,
"phone_number": "557000000",
"receiver_name": "John Doe",
"address": {
"id": 5150,
"address": "გურამიშვილის გამზირი 15",
"city_id": 1,
"type": "RECEIVER",
"latitude": "41.7562173",
"longitude": "44.7899982",
"created_at": "2025-07-15T15:44:26.000000Z",
"state": "თბილისი",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
},
"pudo": null
},
"weight": 2.5,
"items_quantity": 1,
"insured": false,
"fragile": false,
"to_have_picture": false,
"is_express": false,
"comment": null,
"payer": "SENDER",
"payment_method": "CASH",
"created_at": "2025-07-15T15:47:46.000000Z",
"delivery_at": null,
"sign_image": null,
"label": null,
"billing": {
"delivery_fee": 5.5,
"cod": 70,
"cod_fee": 1.4,
"cod_fee_payer": "SENDER",
"photo_service_fee": 0,
"insurance_fee": 0,
"express_fee": 0,
"sender_fee": 6.9,
"receiver_fee": 70,
"return_fee": 0.83,
"return_delivery_fee": 5.5,
"sender_paid_date": null,
"receiver_paid_date": null,
"cod_transaction_date": null
},
"return": {
"return_decision": "SEND_TO_SERVICE_CENTER",
"label": null,
"notes": null,
"address": null,
"pudo": {
"id": 9,
"city_id": 1,
"name_ka": "გლდანი, 4-ე მიკრო რაიონი, კორპუსი 92ა, შენობა 5.",
"city_name": "თბილისი",
"latitude": "41.79841113091622",
"longitude": "44.81899422384513",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
}
},
"statuses": []
}
}
This endpoint retrieves a specific order that belongs to the authenticated user. You can use different types of identifiers to fetch the order information:
1197
).9f1f4671-7c2e-437f-85f4-bae8e095948f
).170790005552128
).The request must include a valid Bearer Token in the header for authentication:
Authorization: Bearer YOUR_ACCESS_TOKEN
If the order exists and belongs to the authenticated user, the API returns the full order details in JSON format, including pickup and delivery information, parcel details, sender/receiver contacts, billing, status history, and return instructions.
If the identifier does not match any order, or the order does not belong to the user, the API returns an error response.
Parameter | Type | Required | Description |
---|---|---|---|
{identifier} | string or integer | Yes |
The unique identifier for the order you want to retrieve. Accepts order_id (numeric), uuid (string), tracking_code (string), or client_tracking_code (string). |
Use this endpoint to track the status of an order, check delivery or billing details, or confirm the current location or history of an active shipment.
{
"data": {
"order_id": 4888,
"uuid": "9f65c50f-71d3-4187-b774-ede2c50700c5",
"tracking_code": "980180478760592",
"client_tracking_code": null,
"current_status": "CREATE",
"current_status_text": "Awaiting Pickup",
"sender": {
"pickup_method": "COURIER",
"country_code": null,
"phone_number": "55700000",
"address": {
"id": 4090,
"address": "პეკინის გამზირი 5.",
"city_id": 1,
"type": "SENDER",
"latitude": "41.7211724",
"longitude": "44.7756078",
"created_at": "2025-07-10T09:27:10.000000Z",
"state": "თბილისი",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
},
"pudo": null
},
"receiver": {
"delivery_method": "COURIER",
"is_legal_entity": false,
"gov_number": null,
"organization_name": null,
"country_code": null,
"phone_number": "557000000",
"receiver_name": "John Doe",
"address": {
"id": 5150,
"address": "გურამიშვილის გამზირი 15",
"city_id": 1,
"type": "RECEIVER",
"latitude": "41.7562173",
"longitude": "44.7899982",
"created_at": "2025-07-15T15:44:26.000000Z",
"state": "თბილისი",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
},
"pudo": null
},
"weight": "2.50",
"items_quantity": 1,
"insured": false,
"fragile": false,
"to_have_picture": false,
"is_express": false,
"comment": null,
"payer": "SENDER",
"payment_method": "CASH",
"created_at": "2025-07-15T15:47:46.000000Z",
"delivery_at": null,
"sign_image": null,
"label": null,
"billing": {
"delivery_fee": 5.5,
"cod": 70,
"cod_fee": 1.4,
"cod_fee_payer": "SENDER",
"photo_service_fee": 0,
"insurance_fee": 0,
"express_fee": 0,
"sender_fee": 6.9,
"receiver_fee": 70,
"return_fee": 0.83,
"return_delivery_fee": 5.5,
"sender_paid_date": null,
"receiver_paid_date": null,
"cod_transaction_date": null
},
"return": {
"return_decision": "SEND_TO_SERVICE_CENTER",
"label": null,
"notes": null,
"address": null,
"pudo": {
"id": 9,
"city_id": 1,
"name_ka": "გლდანი, 4-ე მიკრო რაიონი, კორპუსი 92ა, შენობა 5.",
"city_name": "თბილისი",
"latitude": "41.79841113091622",
"longitude": "44.81899422384513",
"city": {
"id": 1,
"name": "თბილისი",
"name_en": "Tbilisi",
"name_ru": "Тбилиси"
}
}
},
"statuses": []
}
}
This endpoint permanently deletes an existing order from the system. Deleting an order is only possible if:
This is useful if you need to cancel an order that was created by mistake or needs to be replaced before it has been processed by the courier.
The request must include a valid Bearer Token for authentication:
Authorization: Bearer YOUR_ACCESS_TOKEN Accept: application/json
Endpoint: DELETE https://trackings.ge/api/orders/{order_id}
Parameter | Type | Required | Description |
---|---|---|---|
{order_id} | integer | Yes | The unique numeric ID of the order to be deleted. |
{
"order": "Order deleted successfully"
}
Status: 404 Not Found
{
"message": "An error occurred",
"error": "Order not found"
}
OR
Status: 400 Bad Request
{
"message": "An error occurred",
"error": "Order cannot be deleted due to its current status"
}
Always verify that the order status is still CREATE before calling this endpoint to ensure the delete operation will succeed.
The pricing system for our delivery services is designed to give you a clear and predictable cost estimate before you place an order. The price calculator works by taking key shipment details and using them to determine the total delivery fee and any additional service charges.
When you create or estimate an order, our system automatically calculates the price based on the following factors:
The final delivery fee you see includes all applicable charges: base delivery cost, additional service fees, insurance (if selected), COD fees (if enabled), and taxes (if applicable).
Our pricing calculator is fully integrated into the order creation process. Whenever you fill in an order request, the system instantly applies the latest rates and calculates the exact amount you or your receiver will pay.
This ensures that you have complete transparency about your shipping costs before confirming the order.
For more complex or bulk shipments, our system supports quoting multiple packages at once, so you can plan and manage costs efficiently.
To get an accurate price, always make sure the address, city, weight, and service options you provide are correct and up to date.
This endpoint calculates the estimated price for delivering a parcel based on the shipment details provided. You must send a valid Bearer Token in the header to authenticate the request.
https://trackings.ge/api/get-price
GET
Authorization: Bearer YOUR_ACCESS_TOKEN
Parameter | Type | Required | Description |
---|---|---|---|
weight | float | Yes | Parcel weight in kilograms. Must be greater than 0 and maximum 1000. |
cod_amount | float | No | Amount to be collected from the receiver. If not using COD, leave empty. |
to_have_picture | boolean | No | Whether the parcel requires photo proof of delivery (1 = yes, 0 = no). |
is_express | boolean | No | Whether express delivery is needed (1 = yes, 0 = no). |
insured | boolean | No | Whether the parcel is insured (1 = yes, 0 = no). |
pickup_method | string | Yes | Defines how the parcel is picked up. Must be COURIER or PUDO. |
delivery_method | string | Yes | Defines how the parcel is delivered. Must be COURIER or PUDO. |
sender_city_id | integer | Yes | ID of the sender's city. |
receiver_city_id | integer | Yes | ID of the receiver's city. |
items_quantity | integer | No | Number of items in the parcel. Must be at least 1 if provided. |
return_decision | string | No | Defines return logic. One of RETURN_TO_SENDER, SEND_TO_SERVICE_CENTER, CANCELED. |
return_pudo_id | integer | Conditionally | Required only if return_decision is SEND_TO_SERVICE_CENTER. ID of the PUDO point to return to. |
payer | string | No | Who pays the delivery fee — either SENDER or RECEIVER. |
curl -X GET "https://trackings.ge/api/get-price?weight=2.5&pickup_method=COURIER&delivery_method=PUDO&sender_city_id=1&receiver_city_id=25&cod_amount=150&is_express=1&return_decision=SEND_TO_SERVICE_CENTER&return_pudo_id=9&payer=SENDER" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"
{
"data": {
"delivery_fee": "6.50",
"cod_fee": "3.00",
"cod": "150.00",
"photo_service_fee": "0.00",
"handover_service_fee": "0.00",
"insurance_fee": "0.00",
"sender_fee": "9.50",
"receiver_fee": "150.00",
"express_fee": "0.00",
"return_fee": "0.98",
"return_delivery_fee": "6.50"
}
}
Field | Description |
---|---|
delivery_fee | Standard delivery cost. |
cod_fee | Cash on delivery processing fee. |
cod | The COD amount that will be collected. |
photo_service_fee | Extra cost if a delivery photo is required. |
handover_service_fee | Fee for signature/handover proof (if used). |
insurance_fee | Fee for insuring the parcel. |
sender_fee | Amount sender will pay (based on payer). |
receiver_fee | Amount receiver will pay (based on payer). |
express_fee | Extra fee if express service is enabled. |
return_fee | Return label/service fee. |
return_delivery_fee | Return shipping cost. |
Invoices are generated automatically by the system at the end of each calendar month. Each invoice summarizes all shipping and delivery activities that took place during that month and provides a detailed breakdown of the expenses incurred by the customer.
The monthly invoice includes all relevant charges, such as standard delivery fees, cash on delivery (COD) processing fees, insurance fees, express delivery surcharges, photo service fees, and any other applicable service costs. This ensures that customers have full visibility into every cost item related to their shipments.
To make record-keeping and accounting easier, the system generates the invoice in both PDF and Excel formats. The PDF version provides a formal, ready-to-print document that is suitable for official accounting or sharing with financial departments. The Excel version contains the same information in a structured, editable spreadsheet, which is useful for internal financial analysis, custom reporting, or integration with accounting systems.
Each invoice clearly lists:
Customers can download their invoices directly from their account dashboard at any time after generation. This ensures transparency and provides an auditable trail of all monthly transactions, helping businesses manage and reconcile their logistics expenses efficiently.
https://trackings.ge/api/invoices
GET
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"data":[
{
"month":"2025-06",
"excel":"https://....xlsx",
"pdf":"https://....pdf",
"amount":"19.00",
"status":"paid",
"issued_at":"2025-06-03 10:05:58",
"paid_at":"2025-06-10 11:07:42"
},
{
"month":"2025-05",
"excel":"https://....xlsx",
"pdf":"https://....pdf",
"amount":"66.84",
"status":"pending",
"issued_at":"2025-05-03 10:05:59",
"paid_at":null
}
]
}
Field | Type | Description |
---|---|---|
month | string | Month for which the invoice was generated, formatted as YYYY-MM. |
excel | string (URL) | Download link to the invoice file in Excel format. |
string (URL) | Download link to the invoice file in PDF format. | |
amount | string | Total amount of the invoice in GEL. |
status | string | Invoice status. Either paid or pending . |
issued_at | string (datetime) | Date and time when the invoice was issued. |
paid_at | string (datetime) or null | Date and time when the invoice was paid. null if still pending. |