Burger API https://api.dzburger.fortranpay.com Reference only

DZ Burger API

The backend for the DZ Burger apps: menu, checkout, Coffee Club, special occasions, delivery tracking and notifications. 73 endpoints.

This page is a reference only. It can't sign in or send requests: the browser blocks every network request from it.

Base URL
https://api.dzburger.fortranpay.com: HTTPS only. WebSockets use wss://.
Format
JSON request and response bodies (Content-Type: application/json), except the OAuth endpoints, which take form-encoded bodies.
Language
Send Accept-Language: tk, ru or en. Menu texts, labels, notifications and error messages follow it. Default: English.
Money
Integers in minor units (teňňe): 8200 = 82 TMT. Fields end in _minor; most responses add a formatted *_text. There is no tax.
Time
Timestamps are RFC 3339 (2026-10-17T02:35:09Z). Dates are YYYY-MM-DD in Turkmenistan time (UTC+5): birthdays, bookings, daily drinks, opening hours.
IDs
UUIDs, except readable slugs for stores, categories, menu items and options (double-dz-smash, extra_patty).
Pagination
Lists that can grow return next_cursor; pass it as before for the next page. Empty means the last page.
Idempotency
POST /v1/orders accepts an Idempotency-Key header so retries never charge twice.
Request ID
Every response has an X-Request-ID header; errors repeat it as request_id. Quote it when reporting a problem.
Rate limits
20 requests/s per IP (bursts of 40); sign-in and sign-up endpoints 20 per minute. Over the limit: 429 with Retry-After.

Authentication

The API uses OAuth 2.0 with opaque bearer tokens. A token is a random string with nothing inside it: the server looks it up on every request, so signing out, changing the password, deleting the account or a stolen refresh token cuts access immediately.

  1. Sign in with email and password, Google or Apple, or create an account. You get an access_token (dza_…, 1 hour) and a refresh_token (dzr_…, 60 days).
  2. Call the API with Authorization: Bearer dza_….
  3. On 401 invalid_token, refresh once with the refresh token and retry. Save the new refresh token: each one works only once. If refreshing fails with invalid_grant, show the sign-in screen.
  4. Sign out by revoking the refresh token.

Store tokens in the iOS Keychain / Android Keystore. Never refresh concurrently: queue requests while one refresh is in flight.

Clients

Each app sends its client_id: dz-ios, dz-android, dz-web, dz-staff, dz-courier. A refresh token only works with the client it was issued to.

Scopes and roles

ScopeAllowsGranted to roles
appCustomer endpointseveryone
staff/v1/staff/*, /v1/admin/menu/*staff, admin
courier/v1/courier/*courier, admin
admin/v1/admin/users/*, creating menu itemsadmin

Without a scope parameter a sign-in gets every scope its role allows. The customer app can ask for scope=app so a staff member's phone can't reach staff endpoints from it. Endpoints check the scope (403 insufficient_scope) and the user's current role (403 forbidden).

When the server is unreachable

If the sign-in service is briefly down, authenticated calls return 503 unavailable, never 401. Keep the tokens and retry; don't sign the user out.

Errors

Errors use HTTP status codes and a JSON body with a stable code for the app's logic and a message ready to show the user, in the request language. details carries the values inserted into the message, e.g. which item is sold out.

{
  "error": {
    "code": "item_unavailable",
    "message": "«Double DZ Smash» häzir elýeterli däl.",
    "details": { "item": "Double DZ Smash" },
    "request_id": "3ba91b2bc8d85d3f"
  }
}

The OAuth endpoints (/oauth/*) answer errors in the OAuth format instead:

{ "error": "invalid_grant", "error_description": "E-poçta ýa-da açar söz nädogry." }
StatusMeaning
400Malformed request (bad JSON) or rejected value (OAuth: invalid_grant, …)
401Not signed in, or token invalid / expired / revoked
402Payment failed at the bank
403Signed in, but not allowed
404Doesn't exist, or isn't yours
409Conflicts with the current state (sold out, already used, wrong order status…)
422A field is invalid; details.field names it for validation
429Rate limited; see Retry-After
5xxServer or dependency problem; safe to retry later

All error codes

Messages shown in : switch language in the top bar. {placeholders} are filled from details.

CodeMessage
bad_requestThe request is invalid.Некорректный запрос.Haýyş nädogry.
birthdate_lockedBirthdate can only be set once. Contact us to change it.Дату рождения можно указать только один раз. Для изменения свяжитесь с нами.Doglan senäni diňe bir gezek girizip bolýar. Üýtgetmek üçin biziň bilen habarlaşyň.
birthday_perk_unavailableThe free birthday cake is available around your birthday.Бесплатный торт доступен в дни вашего дня рождения.Mugt tort doglan günüňiziň töwereginde elýeterli.
birthday_perk_usedYou've already enjoyed this year's birthday cake.Вы уже получили торт в этом году.Bu ýylky doglan gün tortuňyzy eýýäm aldyňyz.
booking_not_editableThis booking can no longer be changed.Это бронирование уже нельзя изменить.Bu brony indi üýtgedip bolmaýar.
booking_too_farBookings open {days} days ahead.Бронирование доступно на {days} дней вперёд.Bron {days} gün öňünden açylýar.
booking_too_soonPlease book at least {hours} hours before the event.Бронируйте не позднее чем за {hours} ч до события.Çäräden azyndan {hours} sagat öň bron ediň.
card_existsThis card is already saved.Эта карта уже сохранена.Bu kart eýýäm ýatda saklanan.
card_expiredThis card has expired.Срок действия карты истёк.Kartyň möhleti geçdi.
conflictThis action conflicts with the current state.Действие невозможно в текущем состоянии.Bu amal häzirki ýagdaýda mümkin däl.
delivery_takenAnother courier has already taken this delivery.Эту доставку уже взял другой курьер.Bu eltip bermäni başga kurýer aldy.
drink_already_used{drink} has already been used today.«{drink}» сегодня уже использован.«{drink}» şu gün eýýäm ulanyldy.
drink_not_in_plan{drink} isn't included in this plan.«{drink}» не входит в этот тариф.«{drink}» bu meýilnama girmeýär.
email_takenAn account with this email already exists.Аккаунт с таким email уже существует.Bu e-poçta bilen hasap eýýäm bar.
forbiddenYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
insufficient_fundsThere are not enough funds on the card.Недостаточно средств на карте.Kartda serişde ýeterlik däl.
insufficient_scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
internalSomething went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
invalid_birthdateEnter a valid birthdate.Введите корректную дату рождения.Dogry doglan senäni giriziň.
invalid_card_numberCheck the card number.Проверьте номер карты.Kartyň belgisini barlaň.
invalid_clientUnknown app. Please update the app.Неизвестное приложение. Обновите приложение.Näbelli programma. Programmany täzeläň.
invalid_credentialsWrong email or password.Неверный email или пароль.E-poçta ýa-da açar söz nädogry.
invalid_cvvCheck the CVV code.Проверьте CVV-код.CVV kody barlaň.
invalid_emailEnter a valid email address.Введите корректный email.Dogry e-poçta salgysyny giriziň.
invalid_modifiersPlease check the options for {item}.Проверьте опции для «{item}».«{item}» üçin goşmaçalary barlaň.
invalid_phoneEnter a valid phone number.Введите корректный номер телефона.Dogry telefon belgisini giriziň.
invalid_qrThe QR code is invalid or expired. Ask the guest to refresh it.QR-код недействителен или истёк. Попросите гостя обновить его.QR kod nädogry ýa-da möhleti geçen. Myhmandan ony täzelemegini haýyş ediň.
invalid_reset_codeThe code is invalid or has expired.Код неверный или истёк.Kod nädogry ýa-da möhleti geçen.
invalid_scopeThe requested access is not allowed for this account.Запрошенный доступ не разрешён для этого аккаунта.Soralan rugsat bu hasap üçin berilmeýär.
invalid_social_tokenCould not verify your {provider} sign-in.Не удалось подтвердить вход через {provider}.{provider} arkaly girişi tassyklap bolmady.
invalid_status_transitionThe order can't go from {from} to {to}.Нельзя перевести заказ из «{from}» в «{to}».Sargydy «{from}» ýagdaýyndan «{to}» ýagdaýyna geçirip bolmaýar.
invalid_tokenYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
item_unavailable{item} is not available right now.«{item}» сейчас недоступен.«{item}» häzir elýeterli däl.
min_delivery_orderMinimum order for delivery is {amount}.Минимальная сумма заказа для доставки — {amount}.Eltip bermek üçin iň az sargyt {amount}.
no_subscriptionYou don't have an active subscription.У вас нет активной подписки.Işjeň abunaňyz ýok.
not_foundNot found.Не найдено.Tapylmady.
order_not_cancellableThis order can no longer be cancelled.Этот заказ уже нельзя отменить.Bu sargydy indi ýatyryp bolmaýar.
out_of_delivery_zoneThis address is outside our delivery area.Адрес вне зоны доставки.Bu salgy eltip bermek zolagymyzdan daşarda.
password_too_longPassword is too long.Пароль слишком длинный.Açar söz gaty uzyn.
password_too_shortPassword must be at least 8 characters.Пароль должен содержать не менее 8 символов.Açar söz azyndan 8 nyşandan ybarat bolmaly.
payment_declinedThe bank declined the payment.Банк отклонил платёж.Bank tölegi kabul etmedi.
payment_method_not_allowedThis payment method isn't available for this order.Этот способ оплаты недоступен для заказа.Bu töleg usuly bu sargyt üçin elýeterli däl.
provider_disabled{provider} sign-in is not available.Вход через {provider} недоступен.{provider} arkaly giriş elýeterli däl.
rate_limitedToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
receipt_unavailableThe receipt will be available once the order is paid.Чек будет доступен после оплаты заказа.Çek sargyt tölenenden soň elýeterli bolar.
request_pendingThis request is already being processed.Этот запрос уже обрабатывается.Bu haýyş eýýäm işlenýär.
slot_unavailableThis time is fully booked. Please choose another.Это время уже занято. Выберите другое.Bu wagt doly bron edildi. Başga wagt saýlaň.
store_closedThis restaurant is closed right now.Ресторан сейчас закрыт.Restoran häzir ýapyk.
subscription_existsYou already have an active subscription.У вас уже есть активная подписка.Siziň işjeň abunaňyz eýýäm bar.
too_many_guestsUp to {max} guests per booking.Не более {max} гостей на бронирование.Bir bron üçin iň köp {max} myhman.
unauthorizedPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
unavailableService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
unsupported_grant_typeThis sign-in method is not supported.Этот способ входа не поддерживается.Bu giriş usuly goldanmaýar.
validationPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
wrong_passwordCurrent password is incorrect.Текущий пароль неверный.Häzirki açar söz nädogry.

Realtime

Live delivery tracking: WebSocket

wss://…/v1/deliveries/order/{orderID}/live with the bearer token (or ?access_token= where headers can't be set). Messages are JSON text frames:

typeWhenFields
snapshotFirst messageSame as the tracking snapshot: status, ETA, courier position, route path
locationEvery few seconds while the courier moveslat, lng, heading, status, eta_at, at
statusassigned, picked_up, delivered, cancelledstatus, eta_at, at

The server pings every 25 s and closes normally after delivered or cancelled. Reconnect with backoff on other closes; the snapshot catches you up. Draw with Apple MapKit on iOS and Mapbox/Google Maps on Android (WGS84).

In-app notifications: Server-Sent Events

GET /v1/notifications/stream while the app is open; push notifications cover the background.

Push notifications

Register the device token with POST /v1/devices after sign-in and remove it on sign-out. Pushes carry data deep links, e.g. {"screen": "order_tracking", "order_id": "…"}; screens: order, order_tracking, occasion, coffee_club, birthday_celebration.

Birthday screen (BDUI)

GET /v1/me/birthday/celebration returns the screen as data so it can change without an app release. Render components top to bottom with theme colours; skip unknown component types. cache_seconds says how long the screen may be reused.

ComponentProps
confetticolors[], intensity (high/low), repeat
animationasset (bundled animation name: birthday_cake, gift_box), loop, height
titletext, style (display/headline)
texttext, style
perk_cardicon, title, subtitle, status, valid_until
countdowntarget_date, days
date_pickermax, required; its id is the field name for submit
buttontext, style (primary/secondary) + action

Actions: navigate (route + params, e.g. route menu with apply_birthday_cake=true), submit (send fields to method endpoint, then run then), reload. States: available, redeemed, upcoming, no_birthdate.

Images & videos

Menu images and the item-screen background videos are served from https://api.dzburger.fortranpay.com/media/. An item's video is the restaurant's own clip when one is set, otherwise a stock clip (Pixabay) copied to this server, under /media/stock/. Videos are MP4 (H.264), portrait-friendly: play muted and looped with aspect-fill, and show preview_url until the first frame. For stock clips, show video.credit (author and source), for example as a small caption.

Sign-in (OAuth 2.0)

Identity is an OAuth 2.0 authorization server. The apps are public clients: they send their client_id and have no secret. Token endpoints take application/x-www-form-urlencoded bodies (JSON is accepted too) and answer errors in the OAuth format, {"error": "...", "error_description": "..."}. See Authentication for the full flow.

POST /oauth/token OAuth client

Sign in with email and password

Resource-owner password grant (RFC 6749 §4.3), for the first-party apps only.

Body (application/x-www-form-urlencoded)

grant_typerequired
string
password
usernamerequired
string
Email address (case-insensitive)
passwordrequired
string
Password
client_idrequired
string
dz-ios, dz-android, dz-web, dz-staff or dz-courier
scope
string
Space-separated subset of app staff courier admin. Omit to get everything the account's role allows.

Request

POST /oauth/token HTTP/1.1
Host: api.dzburger.fortranpay.com
Accept-Language: tk
Content-Type: application/x-www-form-urlencoded

grant_type=password&username=aylar%40example.com&password=supersecret&client_id=dz-ios

Responses

200 OK Signed in
{
  "access_token": "dza_Xk3v9QpL2mN8rT5wY7zB1cD4fG6hJ0aS",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "dzr_Xk3v9QpL2mN8rT5wY7zB1cD4fG6hJ0aS",
  "scope": "app",
  "is_new_user": false,
  "user": {
    "id": "c5a9a62e-bf82-4f02-ab6a-59f75f6ebe2d",
    "email": "aylar@example.com",
    "email_verified": false,
    "full_name": "Aylar Annayeva",
    "phone": "+99361234512",
    "birthdate": null,
    "lang": "tk",
    "role": "customer",
    "has_password": true,
    "providers": [
      "password"
    ],
    "created_at": "2026-10-17T02:52:11.430176Z"
  }
}

Fields

access_token
string
Opaque bearer token, dza_ + 43 characters. Send as Authorization: Bearer ….
token_type
string
Always Bearer
expires_in
integer
Seconds until the access token expires (default 3600)
refresh_token
string
Opaque, dzr_…, valid 60 days, rotates on every use. Store securely (Keychain / Keystore).
scope
string
Granted scopes, space-separated
is_new_user
boolean
True when this call created the account
user
object
The signed-in user (same as GET /v1/me)

Errors

StatusCodeWhenMessage
400 invalid_grant Wrong email or password, or the account has no password (signed up with Google/Apple)Wrong email or password.Неверный email или пароль.E-poçta ýa-da açar söz nädogry.
400 invalid_scope Asked for a scope the account's role doesn't allowThe requested access is not allowed for this account.Запрошенный доступ не разрешён для этого аккаунта.Soralan rugsat bu hasap üçin berilmeýär.
400 invalid_request grant_type missingPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
400 unsupported_grant_type Unknown grant_typeThis sign-in method is not supported.Этот способ входа не поддерживается.Bu giriş usuly goldanmaýar.
401 invalid_client Unknown client_idUnknown app. Please update the app.Неизвестное приложение. Обновите приложение.Näbelli programma. Programmany täzeläň.
Common to this endpoint
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /oauth/token OAuth client

Refresh the access token

Refresh-token grant (RFC 6749 §6). Every refresh returns a new refresh token; store it and discard the old one. Reusing an old refresh token more than 30 seconds after it was replaced is treated as theft and signs that session out everywhere. A refresh token only works with the client_id it was issued to.

Body (application/x-www-form-urlencoded)

grant_typerequired
string
refresh_token
refresh_tokenrequired
string
The latest refresh token (dzr_…)
client_idrequired
string
Same client the token was issued to

Request

POST /oauth/token HTTP/1.1
Host: api.dzburger.fortranpay.com
Accept-Language: tk
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&refresh_token=dzr_Xk3v9QpL2mN8rT5wY7zB1cD4fG6hJ0aS&client_id=dz-ios

Responses

200 OK New token pair
{
  "access_token": "dza_Xk3v9QpL2mN8rT5wY7zB1cD4fG6hJ0aS",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "dzr_Xk3v9QpL2mN8rT5wY7zB1cD4fG6hJ0aS",
  "scope": "app",
  "is_new_user": false,
  "user": {
    "id": "c5a9a62e-bf82-4f02-ab6a-59f75f6ebe2d",
    "email": "aylar@example.com",
    "email_verified": false,
    "full_name": "Aylar Annayeva",
    "phone": "+99361234512",
    "birthdate": null,
    "lang": "tk",
    "role": "customer",
    "has_password": true,
    "providers": [
      "password"
    ],
    "created_at": "2026-10-17T02:52:11.430176Z"
  }
}

Errors

StatusCodeWhenMessage
400 invalid_grant Refresh token unknown, expired, revoked, reused, or from another client: sign in againYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
401 invalid_client Unknown client_idUnknown app. Please update the app.Неизвестное приложение. Обновите приложение.Näbelli programma. Programmany täzeläň.
Common to this endpoint
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /oauth/token OAuth client

Sign in with Google or Apple

Token exchange (RFC 8693). The app signs the user in with the native Google Sign-In or Sign in with Apple SDK and sends the resulting ID token; the server verifies it with Google/Apple and returns DZ tokens. The provider is recognised from the token. An existing account with the same verified email is linked automatically; otherwise an account is created (is_new_user: true).

Body (application/x-www-form-urlencoded)

grant_typerequired
string
urn:ietf:params:oauth:grant-type:token-exchange
subject_tokenrequired
string
ID token from the Google or Apple SDK
subject_token_typerequired
string
urn:ietf:params:oauth:token-type:id_token
client_idrequired
string
App client ID
nonce
string
The raw nonce the app passed to the SDK, if any; checked against the token
full_name
string
Apple shares the user's name only on the very first sign-in; send it then
lang
string
tk, ru or en for a new account (default: Accept-Language)
scope
string
As for the password grant

Request

POST /oauth/token HTTP/1.1
Host: api.dzburger.fortranpay.com
Accept-Language: tk
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange&subject_token=eyJhbGciOiJSUzI1NiIs...&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aid_token&client_id=dz-ios&full_name=Aylar%20Annayeva

Responses

200 OK Signed in (new or existing account)
{
  "access_token": "dza_Xk3v9QpL2mN8rT5wY7zB1cD4fG6hJ0aS",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "dzr_Xk3v9QpL2mN8rT5wY7zB1cD4fG6hJ0aS",
  "scope": "app",
  "is_new_user": true,
  "user": {
    "id": "c5a9a62e-bf82-4f02-ab6a-59f75f6ebe2d",
    "email": "aylar@example.com",
    "email_verified": false,
    "full_name": "Aylar Annayeva",
    "phone": "+99361234512",
    "birthdate": null,
    "lang": "tk",
    "role": "customer",
    "has_password": true,
    "providers": [
      "password"
    ],
    "created_at": "2026-10-17T02:52:11.430176Z"
  }
}

Errors

StatusCodeWhenMessage
400 invalid_grant Token invalid, expired, for another app, or nonce mismatchCould not verify your {provider} sign-in.Не удалось подтвердить вход через {provider}.{provider} arkaly girişi tassyklap bolmady.
400 invalid_grant That provider isn't configured on the server{provider} sign-in is not available.Вход через {provider} недоступен.{provider} arkaly giriş elýeterli däl.
400 invalid_request Wrong subject_token_typePlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
401 invalid_client Unknown client_idUnknown app. Please update the app.Неизвестное приложение. Обновите приложение.Näbelli programma. Programmany täzeläň.
409 invalid_request The provider's (unverified) email belongs to another accountAn account with this email already exists.Аккаунт с таким email уже существует.Bu e-poçta bilen hasap eýýäm bar.
Common to this endpoint
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /oauth/revoke OAuth client

Sign out (revoke a token)

Token revocation (RFC 7009). Revoke the refresh token to sign out: the whole session ends and its access tokens stop working immediately. Revoking an access token invalidates only that token. The response is always 200, even for unknown tokens.

Body (application/x-www-form-urlencoded)

tokenrequired
string
Refresh token (dzr_…) or access token (dza_…)
client_idrequired
string
Client the token was issued to
token_type_hint
string
Ignored; the type is known from the prefix

Request

POST /oauth/revoke HTTP/1.1
Host: api.dzburger.fortranpay.com
Accept-Language: tk
Content-Type: application/x-www-form-urlencoded

token=dzr_Xk3v9QpL2mN8rT5wY7zB1cD4fG6hJ0aS&client_id=dz-ios

Responses

200 OK Revoked (or nothing to revoke). Empty body.

Errors

StatusCodeWhenMessage
401 invalid_client Unknown client_idUnknown app. Please update the app.Неизвестное приложение. Обновите приложение.Näbelli programma. Programmany täzeläň.
Common to this endpoint
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /.well-known/oauth-authorization-server Public

Authorization server metadata

RFC 8414 metadata: endpoints, supported grants and scopes.

No parameters.

Request

GET /.well-known/oauth-authorization-server HTTP/1.1
Host: api.dzburger.fortranpay.com
Accept-Language: tk

Responses

200 OK Metadata
{
  "grant_types_supported": [
    "password",
    "refresh_token",
    "urn:ietf:params:oauth:grant-type:token-exchange"
  ],
  "issuer": "https://api.dzburger.fortranpay.com",
  "response_types_supported": [],
  "revocation_endpoint": "https://api.dzburger.fortranpay.com/oauth/revoke",
  "revocation_endpoint_auth_methods_supported": [
    "none"
  ],
  "scopes_supported": [
    "app",
    "staff",
    "courier"
  ],
  "token_endpoint": "https://api.dzburger.fortranpay.com/oauth/token",
  "token_endpoint_auth_methods_supported": [
    "none"
  ]
}

Errors

StatusCodeWhenMessage
Common to this endpoint
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/auth/register OAuth client

Create an account

Creates an email/password account and signs it in: the response is a token response, like /oauth/token. Errors use the regular API format.

Body (application/json)

client_idrequired
string
App client ID
emailrequired
string
Valid email, unique
passwordrequired
string
At least 8 characters, at most 72 bytes. Stored as a bcrypt hash.
full_namerequired
string
1–100 characters
phone
string
8–15 digits, optional leading +; spaces, dashes and brackets are removed
birthdate
string (date)
YYYY-MM-DD. Unlocks the free birthday cake; can be set only once.
lang
string
tk, ru or en (default: Accept-Language)
scope
string
As for the password grant

Request

POST /v1/auth/register HTTP/1.1
Host: api.dzburger.fortranpay.com
Accept-Language: tk
Content-Type: application/json

{
  "client_id": "dz-ios",
  "email": "aylar@example.com",
  "password": "supersecret",
  "full_name": "Aylar Annayeva",
  "phone": "+993 61 23-45-12",
  "birthdate": "1999-11-03",
  "lang": "tk"
}

Responses

201 Created Account created and signed in
{
  "access_token": "dza_Xk3v9QpL2mN8rT5wY7zB1cD4fG6hJ0aS",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "dzr_Xk3v9QpL2mN8rT5wY7zB1cD4fG6hJ0aS",
  "scope": "app",
  "is_new_user": true,
  "user": {
    "id": "c5a9a62e-bf82-4f02-ab6a-59f75f6ebe2d",
    "email": "aylar@example.com",
    "email_verified": false,
    "full_name": "Aylar Annayeva",
    "phone": "+99361234512",
    "birthdate": null,
    "lang": "tk",
    "role": "customer",
    "has_password": true,
    "providers": [
      "password"
    ],
    "created_at": "2026-10-17T02:52:11.430176Z"
  }
}

Errors

StatusCodeWhenMessage
400 invalid_scope Scope not allowed for a new customerThe requested access is not allowed for this account.Запрошенный доступ не разрешён для этого аккаунта.Soralan rugsat bu hasap üçin berilmeýär.
401 invalid_client Missing or unknown client_idUnknown app. Please update the app.Неизвестное приложение. Обновите приложение.Näbelli programma. Programmany täzeläň.
409 email_taken Email already registeredAn account with this email already exists.Аккаунт с таким email уже существует.Bu e-poçta bilen hasap eýýäm bar.
422 invalid_email Not a valid emailEnter a valid email address.Введите корректный email.Dogry e-poçta salgysyny giriziň.
422 password_too_short Fewer than 8 charactersPassword must be at least 8 characters.Пароль должен содержать не менее 8 символов.Açar söz azyndan 8 nyşandan ybarat bolmaly.
422 password_too_long More than 72 bytesPassword is too long.Пароль слишком длинный.Açar söz gaty uzyn.
422 validation full_name empty or too longPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
422 invalid_phone Phone not in the accepted formatEnter a valid phone number.Введите корректный номер телефона.Dogry telefon belgisini giriziň.
422 invalid_birthdate Not a date, in the future, or more than 120 years agoEnter a valid birthdate.Введите корректную дату рождения.Dogry doglan senäni giriziň.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/auth/password/forgot Public

Email a password reset code

Emails a 6-digit code valid for 15 minutes (stored as a bcrypt hash). The response is the same whether or not the email is registered. A new code is sent at most once a minute.

Body (application/json)

emailrequired
string
Account email

Request

POST /v1/auth/password/forgot HTTP/1.1
Host: api.dzburger.fortranpay.com
Accept-Language: tk
Content-Type: application/json

{
  "email": "aylar@example.com"
}

Responses

202 Accepted Accepted
{
  "status": "sent"
}

Errors

StatusCodeWhenMessage
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/auth/password/reset Public

Set a new password with the code

Checks the code (5 attempts), sets the new password, verifies the email and signs out every session. Then sign in with the new password.

Body (application/json)

emailrequired
string
Account email
coderequired
string
6-digit code from the email
new_passwordrequired
string
At least 8 characters

Request

POST /v1/auth/password/reset HTTP/1.1
Host: api.dzburger.fortranpay.com
Accept-Language: tk
Content-Type: application/json

{
  "email": "aylar@example.com",
  "code": "482913",
  "new_password": "a-new-secret"
}

Responses

204 No Content Password changed

Errors

StatusCodeWhenMessage
400 invalid_reset_code Wrong, expired or too many attemptsThe code is invalid or has expired.Код неверный или истёк.Kod nädogry ýa-da möhleti geçen.
422 password_too_short Fewer than 8 charactersPassword must be at least 8 characters.Пароль должен содержать не менее 8 символов.Açar söz azyndan 8 nyşandan ybarat bolmaly.
422 password_too_long More than 72 bytesPassword is too long.Пароль слишком длинный.Açar söz gaty uzyn.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.

Profile

The signed-in user's account, addresses and birthday.

GET /v1/me Bearer token · scope app

Get my profile

No parameters.

Request

GET /v1/me HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Profile
{
  "id": "c5a9a62e-bf82-4f02-ab6a-59f75f6ebe2d",
  "email": "aylar@example.com",
  "email_verified": false,
  "full_name": "Aylar Annayeva",
  "phone": "+99361234512",
  "birthdate": "2000-10-19",
  "lang": "tk",
  "role": "customer",
  "has_password": true,
  "providers": [
    "password"
  ],
  "created_at": "2026-10-17T02:52:11.430176Z"
}

Fields

id
string (uuid)
email
string
Empty for Apple accounts with a hidden email
email_verified
boolean
full_name
string
phone
string
Normalised, e.g. +99361234512
birthdate
string (date) | null
lang
string
tk, ru or en
role
string
customer, staff, courier or admin
has_password
boolean
False for Google/Apple-only accounts (they can set one with PUT /v1/me/password)
providers
string[]
password, google, apple
created_at
string (date-time)

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
PATCH /v1/me Bearer token · scope app

Update my profile

Send only the fields to change. lang also sets the language of push notifications and emails. birthdate can be set once (it unlocks the free cake); changing it later requires contacting the restaurant.

Body (application/json)

full_name
string
1–100 characters
phone
string
8–15 digits; empty string removes it
lang
string
tk, ru, en
birthdate
string (date)
YYYY-MM-DD, only if not set yet

Request

PATCH /v1/me HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "birthdate": "1999-11-03",
  "lang": "ru"
}

Responses

200 OK Updated profile
{
  "id": "c5a9a62e-bf82-4f02-ab6a-59f75f6ebe2d",
  "email": "aylar@example.com",
  "email_verified": false,
  "full_name": "Aylar Annayeva",
  "phone": "+99361234512",
  "birthdate": "2000-10-19",
  "lang": "tk",
  "role": "customer",
  "has_password": true,
  "providers": [
    "password"
  ],
  "created_at": "2026-10-17T02:52:11.430176Z"
}

Errors

StatusCodeWhenMessage
404 not_found Account was deletedNot found.Не найдено.Tapylmady.
409 birthdate_locked Birthdate already set to a different dateBirthdate can only be set once. Contact us to change it.Дату рождения можно указать только один раз. Для изменения свяжитесь с нами.Doglan senäni diňe bir gezek girizip bolýar. Üýtgetmek üçin biziň bilen habarlaşyň.
422 invalid_birthdate Not a valid dateEnter a valid birthdate.Введите корректную дату рождения.Dogry doglan senäni giriziň.
422 invalid_phone Phone not in the accepted formatEnter a valid phone number.Введите корректный номер телефона.Dogry telefon belgisini giriziň.
422 validation full_name or lang invalidPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
DELETE /v1/me Bearer token · scope app

Delete my account

Required by the App Store. Personal data is erased (email, name, phone, birthdate, addresses, Google/Apple links, saved cards, devices, notifications) and every token is revoked immediately. Orders keep only the anonymous user ID.

No parameters.

Request

DELETE /v1/me HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

204 No Content Deleted

Errors

StatusCodeWhenMessage
404 not_found Already deletedNot found.Не найдено.Tapylmady.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
PUT /v1/me/password Bearer token · scope app

Set or change my password

Signs out every other session and returns a fresh token pair for this app, so the caller stays signed in. Accounts without a password (Google/Apple) can omit current_password.

Body (application/json)

current_password
string
Required if the account has a password
new_passwordrequired
string
At least 8 characters

Request

PUT /v1/me/password HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "current_password": "supersecret",
  "new_password": "an-even-better-one"
}

Responses

200 OK New tokens
{
  "access_token": "dza_Xk3v9QpL2mN8rT5wY7zB1cD4fG6hJ0aS",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "dzr_Xk3v9QpL2mN8rT5wY7zB1cD4fG6hJ0aS",
  "scope": "app",
  "is_new_user": false,
  "user": {
    "id": "c5a9a62e-bf82-4f02-ab6a-59f75f6ebe2d",
    "email": "aylar@example.com",
    "email_verified": false,
    "full_name": "Aylar Annayeva",
    "phone": "+99361234512",
    "birthdate": null,
    "lang": "tk",
    "role": "customer",
    "has_password": true,
    "providers": [
      "password"
    ],
    "created_at": "2026-10-17T02:52:11.430176Z"
  }
}

Errors

StatusCodeWhenMessage
422 wrong_password current_password is wrongCurrent password is incorrect.Текущий пароль неверный.Häzirki açar söz nädogry.
422 password_too_short Fewer than 8 charactersPassword must be at least 8 characters.Пароль должен содержать не менее 8 символов.Açar söz azyndan 8 nyşandan ybarat bolmaly.
422 password_too_long More than 72 bytesPassword is too long.Пароль слишком длинный.Açar söz gaty uzyn.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/me/addresses Bearer token · scope app

List saved addresses

No parameters.

Request

GET /v1/me/addresses HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Addresses, newest first
{
  "items": [
    {
      "id": "3eb50f0b-af16-4ee0-941b-ed9daac233c6",
      "label": "Home",
      "line1": "Gurbansoltan Eje 12, apt 5",
      "city": "Dashoguz",
      "lat": 41.841,
      "lng": 59.98,
      "note": "3rd floor, blue door"
    }
  ]
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/me/addresses Bearer token · scope app

Save an address

Up to 20 addresses. Coordinates are WGS84 (what MapKit and Mapbox/Google Maps use).

Body (application/json)

line1required
string
Street, building, apartment (max 200)
latrequired
number
Latitude
lngrequired
number
Longitude
label
string
e.g. Home
city
string
note
string
Entrance, floor, door code…

Request

POST /v1/me/addresses HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "label": "Home",
  "line1": "Gurbansoltan Eje 12, apt 5",
  "city": "Dashoguz",
  "lat": 41.841,
  "lng": 59.98,
  "note": "3rd floor, blue door"
}

Responses

201 Created Saved
{
  "id": "3eb50f0b-af16-4ee0-941b-ed9daac233c6",
  "label": "Home",
  "line1": "Gurbansoltan Eje 12, apt 5",
  "city": "Dashoguz",
  "lat": 41.841,
  "lng": 59.98,
  "note": "3rd floor, blue door"
}

Errors

StatusCodeWhenMessage
422 validation line1 missing, invalid location, or 20 addresses alreadyPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
DELETE /v1/me/addresses/{id} Bearer token · scope app

Delete an address

Path parameters

idrequired
string (uuid)
Address ID

Request

DELETE /v1/me/addresses/{id} HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

204 No Content Deleted

Errors

StatusCodeWhenMessage
404 not_found No such address for this userNot found.Не найдено.Tapylmady.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/me/birthday Bearer token · scope app

Birthday perk status

The free slice of cake can be claimed once a year, from 3 days before to 7 days after the birthday. perk.status: no_birthdate, upcoming, available, redeemed. To use it, place an order with apply_birthday_cake: true.

No parameters.

Request

GET /v1/me/birthday HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Status
{
  "birthdate": "2000-10-19",
  "perk": {
    "status": "available",
    "year": 2026,
    "valid_from": "2026-10-16",
    "valid_until": "2026-10-26",
    "next_birthday": "2026-10-19",
    "days_until": 2,
    "is_today": false
  }
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/me/birthday/celebration Bearer token · scope app

Birthday celebration screen (BDUI)

A backend-driven screen: a list of components for the app to render natively. The content depends on the perk state. See Birthday screen (BDUI) for the component types.

No parameters.

Request

GET /v1/me/birthday/celebration HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Screen
{
  "schema": "dz.bdui/v1",
  "id": "birthday_celebration",
  "version": 1,
  "state": "available",
  "cache_seconds": 300,
  "theme": {
    "accent": "#EE6A2C",
    "background": "#1E1715",
    "muted": "#C9BDB6",
    "surface": "#2B2220",
    "text": "#FFFFFF"
  },
  "components": [
    {
      "type": "confetti",
      "props": {
        "colors": [
          "#EE6A2C",
          "#F4B740",
          "#FFFFFF"
        ],
        "intensity": "high",
        "repeat": false
      }
    },
    {
      "type": "animation",
      "props": {
        "asset": "birthday_cake",
        "height": 220,
        "loop": true
      }
    },
    {
      "type": "title",
      "props": {
        "style": "display",
        "text": "Happy birthday, Aylar!"
      }
    }
  ]
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
PATCH /v1/admin/users/{id}/role Admin · scope admin

Change a user's role

Makes someone staff or a courier. The new role applies to their next request; new scopes need a new sign-in (or refresh).

Path parameters

idrequired
string (uuid)
User ID

Body (application/json)

rolerequired
string
customer, staff, courier, admin

Request

PATCH /v1/admin/users/{id}/role HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "role": "courier"
}

Responses

200 OK Updated user
{
  "id": "18ec7e77-2e8f-44be-a2fd-cf3c879a15b9",
  "email": "merdan@dz.tm",
  "email_verified": false,
  "full_name": "Merdan Courier",
  "phone": "+99365000001",
  "birthdate": null,
  "lang": "en",
  "role": "courier",
  "has_password": true,
  "providers": [
    "password"
  ],
  "created_at": "2026-10-17T02:52:12.708661Z"
}

Errors

StatusCodeWhenMessage
404 not_found No such userNot found.Не найдено.Tapylmady.
422 validation Unknown rolePlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "admin" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.

Checkout & orders

Prices are always computed on the server from the menu; prices shown in the app are never trusted. There is no tax. Delivery costs 10 TMT, free from 150 TMT, with a 30 TMT minimum. Order status flow: placed → accepted → preparing → ready → picked_up (pickup) or … ready → out_for_delivery → delivered (delivery); cancelled before hand-over.

GET /v1/payment-methods Bearer token · scope app

Payment methods for checkout

The "Pay with" list: saved cards, then Pay at the counter (pickup) or Cash on delivery (delivery), then Add a new card. Expired cards are disabled.

Query parameters

order_type
string
pickup (default) or delivery

Request

GET /v1/payment-methods HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Methods
{
  "methods": [
    {
      "type": "card",
      "card_id": "970c6a9a-f551-466e-a98b-e20cd79ec436",
      "title": "Turkmen card •••• 4821",
      "subtitle": "Altyn Asyr • saved card",
      "is_default": true,
      "disabled": false
    },
    {
      "type": "counter",
      "title": "Pay at the counter",
      "subtitle": "Cash or card when you pick up",
      "is_default": false,
      "disabled": false
    },
    {
      "type": "new_card",
      "title": "Add a new card",
      "subtitle": "Any Turkmen bank card",
      "is_default": false,
      "disabled": false
    }
  ]
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/cards Bearer token · scope app

List saved cards

No parameters.

Request

GET /v1/cards HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Cards, default first
{
  "items": [
    {
      "id": "970c6a9a-f551-466e-a98b-e20cd79ec436",
      "bank": "altyn_asyr",
      "bank_name": "Altyn Asyr",
      "title": "Turkmen card •••• 4821",
      "last4": "4821",
      "expiry": "08/28",
      "holder_name": "AYLAR ANNAYEVA",
      "is_default": true,
      "is_expired": false,
      "created_at": "2026-10-17T02:52:13.211888Z"
    }
  ]
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/cards Bearer token · scope app

Add a bank card

Verifies the card with the bank (Altyn Asyr) and saves it. The CVV is sent to the bank once and never stored; the card number is stored encrypted. The first card becomes the default. Up to 10 cards.

Body (application/json)

numberrequired
string
13–19 digits, spaces allowed, must pass the Luhn check
exp_monthrequired
integer
1–12
exp_yearrequired
integer
2028 or 28
cvvrequired
string
3–4 digits
holder_name
string
As printed (max 60)
make_default
boolean

Request

POST /v1/cards HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "number": "9934 1000 0009 4821",
  "exp_month": 8,
  "exp_year": 2028,
  "cvv": "123",
  "holder_name": "Aylar Annayeva"
}

Responses

201 Created Saved
{
  "id": "970c6a9a-f551-466e-a98b-e20cd79ec436",
  "bank": "altyn_asyr",
  "bank_name": "Altyn Asyr",
  "title": "Turkmen card •••• 4821",
  "last4": "4821",
  "expiry": "08/28",
  "holder_name": "AYLAR ANNAYEVA",
  "is_default": true,
  "is_expired": false,
  "created_at": "2026-10-17T02:52:13.211888Z"
}

Errors

StatusCodeWhenMessage
402 invalid_cvv Bank rejected the CVVCheck the CVV code.Проверьте CVV-код.CVV kody barlaň.
402 payment_declined Bank refused the cardThe bank declined the payment.Банк отклонил платёж.Bank tölegi kabul etmedi.
409 card_exists This card is already savedThis card is already saved.Эта карта уже сохранена.Bu kart eýýäm ýatda saklanan.
422 invalid_card_number Wrong length or checksumCheck the card number.Проверьте номер карты.Kartyň belgisini barlaň.
422 card_expired Expiry in the pastThis card has expired.Срок действия карты истёк.Kartyň möhleti geçdi.
422 invalid_cvv CVV format wrongCheck the CVV code.Проверьте CVV-код.CVV kody barlaň.
422 validation Invalid expiry, holder_name, or 10 cards alreadyPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
502 unavailable Bank unreachableService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
DELETE /v1/cards/{id} Bearer token · scope app

Remove a card

The encrypted number is wiped. If it was the default, the newest remaining card becomes default.

Path parameters

idrequired
string (uuid)
Card ID

Request

DELETE /v1/cards/{id} HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

204 No Content Removed

Errors

StatusCodeWhenMessage
404 not_found No such cardNot found.Не найдено.Tapylmady.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/cards/{id}/default Bearer token · scope app

Make a card the default

Path parameters

idrequired
string (uuid)
Card ID

Request

POST /v1/cards/{id}/default HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

204 No Content Done

Errors

StatusCodeWhenMessage
404 not_found No such cardNot found.Не найдено.Tapylmady.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/orders/quote Bearer token · scope app

Price the cart (checkout summary)

Returns the lines, subtotal, delivery fee, discount and total for the checkout screen, without placing anything.

Body (application/json)

store_idrequired
string
From GET /v1/stores
typerequired
string
pickup or delivery
itemsrequired
array
1–30 lines: {item_id, quantity (1–20), modifier_ids[]}. Required option groups default to their default choice.
delivery_address
object
Required for delivery: {line1, lat, lng, note}; must be inside the store's delivery radius
apply_birthday_cake
boolean
Add the free birthday cake slice (see GET /v1/me/birthday)

Request

POST /v1/orders/quote HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "store_id": "dashoguz-turkmenbashy",
  "type": "pickup",
  "items": [
    {
      "item_id": "8c3e844e-2393-4911-a8e3-9bac5a7a302c",
      "quantity": 1,
      "modifier_ids": [
        "extra_patty",
        "ketchup"
      ]
    },
    {
      "item_id": "f1a6d1c2-6b0e-4a59-8d43-0c0f5f3b7e21",
      "quantity": 1,
      "modifier_ids": [
        "size_medium"
      ]
    }
  ]
}

Responses

200 OK Quote
{
  "currency": "TMT",
  "delivery_fee_minor": 0,
  "discount_minor": 0,
  "items": [
    {
      "item_id": "f2565d68-e79b-4182-8048-1fae52862d39",
      "name": "Double DZ Smash",
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/double-dz-smash.jpg",
      "quantity": 1,
      "unit_price_minor": 8200,
      "modifiers": [
        "Extra patty",
        "Ketchup"
      ],
      "modifiers_text": "Extra patty, ketchup",
      "line_total_minor": 8200,
      "calories": 1250,
      "is_reward": false
    },
    {
      "item_id": "c2db6f01-3cc0-4eab-910d-9141d3498d96",
      "name": "Cappuccino",
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/cappuccino.jpg",
      "quantity": 1,
      "unit_price_minor": 2800,
      "modifiers": [
        "Medium"
      ],
      "modifiers_text": "Medium",
      "line_total_minor": 2800,
      "calories": 170,
      "is_reward": false
    }
  ],
  "payment_methods": [
    "card",
    "counter"
  ],
  "ready_in_minutes": 15,
  "store": {
    "id": "dashoguz-turkmenbashy",
    "name": "DZ Burger House",
    "address": "28 Turkmenbashi Ave., Dashoguz",
    "phone": "+99332260078",
    "lat": 41.8363,
    "lng": 59.9666
  },
  "subtotal_minor": 11000,
  "total_minor": 11000,
  "total_text": "110 TMT",
  "type": "pickup"
}

Errors

StatusCodeWhenMessage
409 store_closed Restaurant is closed nowThis restaurant is closed right now.Ресторан сейчас закрыт.Restoran häzir ýapyk.
409 item_unavailable An item is sold out (message names it){item} is not available right now.«{item}» сейчас недоступен.«{item}» häzir elýeterli däl.
422 invalid_modifiers Option choices don't fit the item's groupsPlease check the options for {item}.Проверьте опции для «{item}».«{item}» üçin goşmaçalary barlaň.
422 validation Bad type, items, quantity, item_id, store_id or delivery_addressPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
422 out_of_delivery_zone Address outside the delivery radiusThis address is outside our delivery area.Адрес вне зоны доставки.Bu salgy eltip bermek zolagymyzdan daşarda.
422 min_delivery_order Delivery total below the minimum (message has the amount)Minimum order for delivery is {amount}.Минимальная сумма заказа для доставки — {amount}.Eltip bermek üçin iň az sargyt {amount}.
502 unavailable Menu service unreachableService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/orders Bearer token · scope app

Place an order

Prices the cart, redeems the birthday cake if asked, charges the card, then saves the order. If a later step fails, earlier ones are undone (refund, cake given back). Send an Idempotency-Key: retrying with the same key returns the same order (200) instead of charging twice.

Headers

Idempotency-Key
string
Unique per checkout attempt, max 100 characters, e.g. a UUID

Body (application/json)

store_idrequired
string
From GET /v1/stores
typerequired
string
pickup or delivery
itemsrequired
array
1–30 lines: {item_id, quantity (1–20), modifier_ids[]}. Required option groups default to their default choice.
delivery_address
object
Required for delivery: {line1, lat, lng, note}; must be inside the store's delivery radius
apply_birthday_cake
boolean
Add the free birthday cake slice (see GET /v1/me/birthday)
paymentrequired
object
{"method": "card", "card_id": "…"}, {"method": "counter"} (pickup) or {"method": "cash_on_delivery"} (delivery)
contact_phone
string
For the courier
note
string
For the kitchen (max 500)

Request

POST /v1/orders HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Idempotency-Key: …
Content-Type: application/json

{
  "store_id": "dashoguz-turkmenbashy",
  "type": "pickup",
  "items": [
    {
      "item_id": "8c3e844e-2393-4911-a8e3-9bac5a7a302c",
      "quantity": 1,
      "modifier_ids": [
        "extra_patty",
        "ketchup"
      ]
    },
    {
      "item_id": "f1a6d1c2-6b0e-4a59-8d43-0c0f5f3b7e21",
      "quantity": 1,
      "modifier_ids": [
        "size_medium"
      ]
    }
  ],
  "payment": {
    "method": "card",
    "card_id": "ae6dc8f3-bb83-406d-9a0f-3c0ef99dc710"
  },
  "note": "No onions please"
}

Responses

201 Created Order placed (card already charged)
{
  "id": "68fd2ea4-5785-4b83-9f55-72614e21f6dd",
  "number": 1001,
  "display_number": "#1001",
  "status": "placed",
  "type": "pickup",
  "store": {
    "id": "dashoguz-turkmenbashy",
    "name": "DZ Burger House",
    "address": "28 Turkmenbashi Ave., Dashoguz",
    "phone": "+99332260078",
    "lat": 41.8363,
    "lng": 59.9666
  },
  "items": [
    {
      "item_id": "f2565d68-e79b-4182-8048-1fae52862d39",
      "name": "Double DZ Smash",
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/double-dz-smash.jpg",
      "quantity": 1,
      "unit_price_minor": 8200,
      "modifiers": [
        "Extra patty",
        "Ketchup"
      ],
      "modifiers_text": "Extra patty, ketchup",
      "line_total_minor": 8200,
      "calories": 1250,
      "is_reward": false
    },
    {
      "item_id": "c2db6f01-3cc0-4eab-910d-9141d3498d96",
      "name": "Cappuccino",
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/cappuccino.jpg",
      "quantity": 1,
      "unit_price_minor": 2800,
      "modifiers": [
        "Medium"
      ],
      "modifiers_text": "Medium",
      "line_total_minor": 2800,
      "calories": 170,
      "is_reward": false
    }
  ],
  "subtotal_minor": 11000,
  "delivery_fee_minor": 0,
  "discount_minor": 0,
  "total_minor": 11000,
  "total_text": "110 TMT",
  "currency": "TMT",
  "payment": {
    "method": "card",
    "status": "paid",
    "card_last4": "4821"
  },
  "delivery_address": null,
  "contact_phone": "",
  "note": "No onions please",
  "ready_at": "2026-10-17T03:07:13.283233Z",
  "created_at": "2026-10-17T02:52:13.283274Z",
  "timeline": [
    {
      "status": "placed",
      "at": "2026-10-17T02:52:13.283274Z"
    }
  ],
  "can_cancel": true,
  "has_live_tracking": false,
  "has_receipt": true
}
200 OK Same Idempotency-Key as an earlier order: that order

Errors

StatusCodeWhenMessage
402 payment_declined Bank declined the paymentThe bank declined the payment.Банк отклонил платёж.Bank tölegi kabul etmedi.
402 insufficient_funds Not enough money on the cardThere are not enough funds on the card.Недостаточно средств на карте.Kartda serişde ýeterlik däl.
402 card_expired Card expiredThis card has expired.Срок действия карты истёк.Kartyň möhleti geçdi.
404 not_found Card not foundNot found.Не найдено.Tapylmady.
409 store_closed Restaurant is closed nowThis restaurant is closed right now.Ресторан сейчас закрыт.Restoran häzir ýapyk.
409 item_unavailable An item is sold out (message names it){item} is not available right now.«{item}» сейчас недоступен.«{item}» häzir elýeterli däl.
409 birthday_perk_unavailable Cake asked for outside the birthday window or without a birthdateThe free birthday cake is available around your birthday.Бесплатный торт доступен в дни вашего дня рождения.Mugt tort doglan günüňiziň töwereginde elýeterli.
409 birthday_perk_used This year's cake was already usedYou've already enjoyed this year's birthday cake.Вы уже получили торт в этом году.Bu ýylky doglan gün tortuňyzy eýýäm aldyňyz.
409 request_pending A payment for this order is still being processedThis request is already being processed.Этот запрос уже обрабатывается.Bu haýyş eýýäm işlenýär.
422 invalid_modifiers Option choices don't fit the item's groupsPlease check the options for {item}.Проверьте опции для «{item}».«{item}» üçin goşmaçalary barlaň.
422 validation Bad type, items, quantity, item_id, store_id or delivery_addressPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
422 out_of_delivery_zone Address outside the delivery radiusThis address is outside our delivery area.Адрес вне зоны доставки.Bu salgy eltip bermek zolagymyzdan daşarda.
422 min_delivery_order Delivery total below the minimum (message has the amount)Minimum order for delivery is {amount}.Минимальная сумма заказа для доставки — {amount}.Eltip bermek üçin iň az sargyt {amount}.
422 payment_method_not_allowed Counter for delivery or cash on delivery for pickupThis payment method isn't available for this order.Этот способ оплаты недоступен для заказа.Bu töleg usuly bu sargyt üçin elýeterli däl.
422 validation card_id, contact_phone, note or Idempotency-Key invalidPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
502 unavailable Menu service unreachableService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/orders Bearer token · scope app

Order history

Query parameters

status
string
active or past; omit for all
limit
integer
1–50, default 20
before
integer
Cursor: pass next_cursor from the previous page

Request

GET /v1/orders HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Newest first. next_cursor is empty on the last page.
{
  "items": [
    {
      "id": "1e76aabe-8f34-4b21-967f-a0ddc108f689",
      "number": 1003,
      "display_number": "#1003",
      "status": "cancelled",
      "type": "pickup",
      "store_name": "DZ Burger House",
      "items_text": "Double DZ Smash, Cappuccino",
      "item_count": 2,
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/double-dz-smash.jpg",
      "total_minor": 11000,
      "total_text": "110 TMT",
      "created_at": "2026-10-17T02:52:13.410194Z",
      "has_receipt": false
    },
    {
      "id": "3d8e2603-5d63-4653-8243-0242b6dc18df",
      "number": 1002,
      "display_number": "#1002",
      "status": "placed",
      "type": "delivery",
      "store_name": "DZ Burger House",
      "items_text": "Double DZ Smash, Birthday Cake Slice",
      "item_count": 3,
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/double-dz-smash.jpg",
      "total_minor": 14000,
      "total_text": "140 TMT",
      "created_at": "2026-10-17T02:52:13.389074Z",
      "has_receipt": false
    },
    {
      "id": "68fd2ea4-5785-4b83-9f55-72614e21f6dd",
      "number": 1001,
      "display_number": "#1001",
      "status": "picked_up",
      "type": "pickup",
      "store_name": "DZ Burger House",
      "items_text": "Double DZ Smash, Cappuccino",
      "item_count": 2,
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/double-dz-smash.jpg",
      "total_minor": 11000,
      "total_text": "110 TMT",
      "created_at": "2026-10-17T02:52:13.283274Z",
      "has_receipt": true
    }
  ],
  "next_cursor": ""
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/orders/{id} Bearer token · scope app

Order details and status

Includes the status timeline, ready_at estimate, and flags: can_cancel, has_live_tracking (open the tracking map), has_receipt. Poll it, or rely on push notifications for status changes.

Path parameters

idrequired
string (uuid)
Order ID

Request

GET /v1/orders/{id} HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Order
{
  "id": "68fd2ea4-5785-4b83-9f55-72614e21f6dd",
  "number": 1001,
  "display_number": "#1001",
  "status": "picked_up",
  "type": "pickup",
  "store": {
    "id": "dashoguz-turkmenbashy",
    "name": "DZ Burger House",
    "address": "28 Turkmenbashi Ave., Dashoguz",
    "phone": "+99332260078",
    "lat": 41.8363,
    "lng": 59.9666
  },
  "items": [
    {
      "item_id": "f2565d68-e79b-4182-8048-1fae52862d39",
      "name": "Double DZ Smash",
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/double-dz-smash.jpg",
      "quantity": 1,
      "unit_price_minor": 8200,
      "modifiers": [
        "Extra patty",
        "Ketchup"
      ],
      "modifiers_text": "Extra patty, ketchup",
      "line_total_minor": 8200,
      "calories": 1250,
      "is_reward": false
    },
    {
      "item_id": "c2db6f01-3cc0-4eab-910d-9141d3498d96",
      "name": "Cappuccino",
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/cappuccino.jpg",
      "quantity": 1,
      "unit_price_minor": 2800,
      "modifiers": [
        "Medium"
      ],
      "modifiers_text": "Medium",
      "line_total_minor": 2800,
      "calories": 170,
      "is_reward": false
    }
  ],
  "subtotal_minor": 11000,
  "delivery_fee_minor": 0,
  "discount_minor": 0,
  "total_minor": 11000,
  "total_text": "110 TMT",
  "currency": "TMT",
  "payment": {
    "method": "card",
    "status": "paid",
    "card_last4": "4821"
  },
  "delivery_address": null,
  "contact_phone": "",
  "note": "No onions please",
  "ready_at": "2026-10-17T03:07:13.32398Z",
  "created_at": "2026-10-17T02:52:13.283274Z",
  "timeline": [
    {
      "status": "placed",
      "at": "2026-10-17T02:52:13.283274Z"
    },
    {
      "status": "accepted",
      "at": "2026-10-17T02:52:13.323633Z"
    },
    {
      "status": "preparing",
      "at": "2026-10-17T02:52:13.333649Z"
    }
  ],
  "can_cancel": false,
  "has_live_tracking": false,
  "has_receipt": true
}

Errors

StatusCodeWhenMessage
404 not_found No such order for this userNot found.Не найдено.Tapylmady.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/orders/{id}/cancel Bearer token · scope app

Cancel an order

Possible until the kitchen accepts it (placed). Card payments are refunded and the birthday cake is given back.

Path parameters

idrequired
string (uuid)
Order ID

Request

POST /v1/orders/{id}/cancel HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Cancelled order
{
  "id": "1e76aabe-8f34-4b21-967f-a0ddc108f689",
  "number": 1003,
  "display_number": "#1003",
  "status": "cancelled",
  "type": "pickup",
  "store": {
    "id": "dashoguz-turkmenbashy",
    "name": "DZ Burger House",
    "address": "28 Turkmenbashi Ave., Dashoguz",
    "phone": "+99332260078",
    "lat": 41.8363,
    "lng": 59.9666
  },
  "items": [
    {
      "item_id": "f2565d68-e79b-4182-8048-1fae52862d39",
      "name": "Double DZ Smash",
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/double-dz-smash.jpg",
      "quantity": 1,
      "unit_price_minor": 8200,
      "modifiers": [
        "Extra patty",
        "Ketchup"
      ],
      "modifiers_text": "Extra patty, ketchup",
      "line_total_minor": 8200,
      "calories": 1250,
      "is_reward": false
    },
    {
      "item_id": "c2db6f01-3cc0-4eab-910d-9141d3498d96",
      "name": "Cappuccino",
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/cappuccino.jpg",
      "quantity": 1,
      "unit_price_minor": 2800,
      "modifiers": [
        "Medium"
      ],
      "modifiers_text": "Medium",
      "line_total_minor": 2800,
      "calories": 170,
      "is_reward": false
    }
  ],
  "subtotal_minor": 11000,
  "delivery_fee_minor": 0,
  "discount_minor": 0,
  "total_minor": 11000,
  "total_text": "110 TMT",
  "currency": "TMT",
  "payment": {
    "method": "counter",
    "status": "unpaid"
  },
  "delivery_address": null,
  "contact_phone": "",
  "note": "",
  "ready_at": "2026-10-17T03:07:13.410153Z",
  "created_at": "2026-10-17T02:52:13.410194Z",
  "timeline": [
    {
      "status": "placed",
      "at": "2026-10-17T02:52:13.410194Z"
    },
    {
      "status": "cancelled",
      "at": "2026-10-17T02:52:13.419961Z"
    }
  ],
  "can_cancel": false,
  "has_live_tracking": false,
  "has_receipt": false
}

Errors

StatusCodeWhenMessage
404 not_found No such orderNot found.Не найдено.Tapylmady.
409 order_not_cancellable Already accepted by the kitchenThis order can no longer be cancelled.Этот заказ уже нельзя отменить.Bu sargydy indi ýatyryp bolmaýar.
502 unavailable Refund couldn't be processed; nothing was changedService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/receipts Bearer token · scope app

List receipts

Receipts of paid (or refunded) orders. Counter and cash orders get a receipt once handed over.

Query parameters

limit
integer
1–50
before
integer
Cursor (next_cursor)

Request

GET /v1/receipts HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Receipts
{
  "items": [
    {
      "currency": "TMT",
      "issued_at": "2026-10-17T02:52:13.283233Z",
      "order_id": "68fd2ea4-5785-4b83-9f55-72614e21f6dd",
      "receipt_number": "DZ-001001",
      "refunded": false,
      "store_name": "DZ Burger House",
      "total_minor": 11000,
      "total_text": "110 TMT"
    }
  ],
  "next_cursor": ""
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/orders/{id}/receipt Bearer token · scope app

Receipt

Itemised receipt. tax_minor is always 0. adjustments lists the birthday gift and the delivery fee when present.

Path parameters

idrequired
string (uuid)
Order ID

Request

GET /v1/orders/{id}/receipt HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Receipt
{
  "adjustments": [],
  "currency": "TMT",
  "delivery_fee_minor": 0,
  "discount_minor": 0,
  "issued_at": "2026-10-17T02:52:13.283233Z",
  "lines": [
    {
      "name": "Double DZ Smash",
      "quantity": 1,
      "unit_price_minor": 8200,
      "modifiers": [
        {
          "name": "Extra patty",
          "price_minor": 1500
        },
        {
          "name": "Ketchup",
          "price_minor": 200
        }
      ],
      "line_total_minor": 8200,
      "is_reward": false
    },
    {
      "name": "Cappuccino",
      "quantity": 1,
      "unit_price_minor": 2800,
      "modifiers": [
        {
          "name": "Medium",
          "price_minor": 400
        }
      ],
      "line_total_minor": 2800,
      "is_reward": false
    }
  ],
  "order_id": "68fd2ea4-5785-4b83-9f55-72614e21f6dd",
  "order_number": 1001,
  "payment": {
    "method": "card",
    "status": "paid",
    "card_last4": "4821"
  },
  "receipt_number": "DZ-001001",
  "refunded": false,
  "store": {
    "id": "dashoguz-turkmenbashy",
    "name": "DZ Burger House",
    "address": "28 Turkmenbashi Ave., Dashoguz",
    "phone": "+99332260078",
    "lat": 41.8363,
    "lng": 59.9666
  },
  "subtotal_minor": 11000,
  "tax_minor": 0,
  "total_minor": 11000,
  "total_text": "110 TMT",
  "type": "pickup"
}

Errors

StatusCodeWhenMessage
404 not_found No such orderNot found.Не найдено.Tapylmady.
409 receipt_unavailable Not paid yetThe receipt will be available once the order is paid.Чек будет доступен после оплаты заказа.Çek sargyt tölenenden soň elýeterli bolar.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/staff/orders Staff · scope staff

Kitchen queue

Query parameters

store_id
string
Filter by restaurant
status
string
active (default) or a single status
limit
integer
1–50
before
integer
Cursor

Request

GET /v1/staff/orders HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Full orders
{
  "items": [
    {
      "id": "68fd2ea4-5785-4b83-9f55-72614e21f6dd",
      "number": 1001,
      "display_number": "#1001",
      "status": "placed",
      "type": "pickup",
      "store": {
        "id": "dashoguz-turkmenbashy",
        "name": "DZ Burger House",
        "address": "28 Turkmenbashi Ave., Dashoguz",
        "phone": "+99332260078",
        "lat": 41.8363,
        "lng": 59.9666
      },
      "items": [
        {
          "item_id": "f2565d68-e79b-4182-8048-1fae52862d39",
          "name": "Double DZ Smash",
          "image_url": "https://api.dzburger.fortranpay.com/media/menu/double-dz-smash.jpg",
          "quantity": 1,
          "unit_price_minor": 8200,
          "modifiers": [
            "Extra patty",
            "Ketchup"
          ],
          "modifiers_text": "Extra patty, ketchup",
          "line_total_minor": 8200,
          "calories": 1250,
          "is_reward": false
        },
        {
          "item_id": "c2db6f01-3cc0-4eab-910d-9141d3498d96",
          "name": "Cappuccino",
          "image_url": "https://api.dzburger.fortranpay.com/media/menu/cappuccino.jpg",
          "quantity": 1,
          "unit_price_minor": 2800,
          "modifiers": [
            "Medium"
          ],
          "modifiers_text": "Medium",
          "line_total_minor": 2800,
          "calories": 170,
          "is_reward": false
        }
      ],
      "subtotal_minor": 11000,
      "delivery_fee_minor": 0,
      "discount_minor": 0,
      "total_minor": 11000,
      "total_text": "110 TMT",
      "currency": "TMT",
      "payment": {
        "method": "card",
        "status": "paid",
        "card_last4": "4821"
      },
      "delivery_address": null,
      "contact_phone": "",
      "note": "No onions please",
      "ready_at": "2026-10-17T03:07:13.283233Z",
      "created_at": "2026-10-17T02:52:13.283274Z",
      "timeline": [],
      "can_cancel": true,
      "has_live_tracking": false,
      "has_receipt": true
    }
  ],
  "next_cursor": ""
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "staff" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/staff/orders/{id}/status Staff · scope staff

Move an order to the next status

Allowed: accepted, preparing, ready, picked_up (pickup), out_for_delivery (usually set by the courier app), cancelled (refunds cards). Marking a counter/cash order handed over records it as paid. The customer is notified.

Path parameters

idrequired
string (uuid)
Order ID

Body (application/json)

statusrequired
string
Target status
note
string
Shown in the timeline

Request

POST /v1/staff/orders/{id}/status HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "status": "accepted"
}

Responses

200 OK Updated order
{
  "id": "68fd2ea4-5785-4b83-9f55-72614e21f6dd",
  "number": 1001,
  "display_number": "#1001",
  "status": "picked_up",
  "type": "pickup",
  "store": {
    "id": "dashoguz-turkmenbashy",
    "name": "DZ Burger House",
    "address": "28 Turkmenbashi Ave., Dashoguz",
    "phone": "+99332260078",
    "lat": 41.8363,
    "lng": 59.9666
  },
  "items": [
    {
      "item_id": "f2565d68-e79b-4182-8048-1fae52862d39",
      "name": "Double DZ Smash",
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/double-dz-smash.jpg",
      "quantity": 1,
      "unit_price_minor": 8200,
      "modifiers": [
        "Extra patty",
        "Ketchup"
      ],
      "modifiers_text": "Extra patty, ketchup",
      "line_total_minor": 8200,
      "calories": 1250,
      "is_reward": false
    },
    {
      "item_id": "c2db6f01-3cc0-4eab-910d-9141d3498d96",
      "name": "Cappuccino",
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/cappuccino.jpg",
      "quantity": 1,
      "unit_price_minor": 2800,
      "modifiers": [
        "Medium"
      ],
      "modifiers_text": "Medium",
      "line_total_minor": 2800,
      "calories": 170,
      "is_reward": false
    }
  ],
  "subtotal_minor": 11000,
  "delivery_fee_minor": 0,
  "discount_minor": 0,
  "total_minor": 11000,
  "total_text": "110 TMT",
  "currency": "TMT",
  "payment": {
    "method": "card",
    "status": "paid",
    "card_last4": "4821"
  },
  "delivery_address": null,
  "contact_phone": "",
  "note": "No onions please",
  "ready_at": "2026-10-17T03:07:13.32398Z",
  "created_at": "2026-10-17T02:52:13.283274Z",
  "timeline": [
    {
      "status": "placed",
      "at": "2026-10-17T02:52:13.283274Z"
    },
    {
      "status": "accepted",
      "at": "2026-10-17T02:52:13.323633Z"
    },
    {
      "status": "preparing",
      "at": "2026-10-17T02:52:13.333649Z"
    }
  ],
  "can_cancel": false,
  "has_live_tracking": false,
  "has_receipt": true
}

Errors

StatusCodeWhenMessage
404 not_found No such orderNot found.Не найдено.Tapylmady.
409 invalid_status_transition Not allowed from the current status (message names both)The order can't go from {from} to {to}.Нельзя перевести заказ из «{from}» в «{to}».Sargydy «{from}» ýagdaýyndan «{to}» ýagdaýyna geçirip bolmaýar.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "staff" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.

Coffee Club

Monthly drink passes: Daily Duo (200 TMT: an Americano and an Espresso every day) and Daily Trio (300 TMT: plus a Cappuccino). Each drink can be redeemed once per day (Turkmenistan date) by showing a QR code at the counter. Passes renew automatically from the saved card; failed renewals are retried daily, 3 times.

GET /v1/subscriptions/plans Public

List plans

No parameters.

Request

GET /v1/subscriptions/plans HTTP/1.1
Host: api.dzburger.fortranpay.com
Accept-Language: tk

Responses

200 OK Plans
{
  "items": [
    {
      "currency": "TMT",
      "description": "An Americano and an Espresso every day.",
      "drinks_per_day": [
        {
          "drink": "americano",
          "name": "Americano"
        },
        {
          "drink": "espresso",
          "name": "Espresso"
        }
      ],
      "id": "daily_duo",
      "name": "Daily Duo",
      "period": "month",
      "price_minor": 20000,
      "price_text": "200 TMT / month"
    },
    {
      "currency": "TMT",
      "description": "An Americano, an Espresso and a Cappuccino every day.",
      "drinks_per_day": [
        {
          "drink": "americano",
          "name": "Americano"
        },
        {
          "drink": "espresso",
          "name": "Espresso"
        },
        {
          "drink": "cappuccino",
          "name": "Cappuccino"
        }
      ],
      "id": "daily_trio",
      "name": "Daily Trio",
      "period": "month",
      "price_minor": 30000,
      "price_text": "300 TMT / month"
    }
  ]
}

Errors

StatusCodeWhenMessage
Common to this endpoint
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/subscriptions/me Bearer token · scope app

My subscription

For the profile card: plan, renews_on, days_left and today's drinks (ready, used with time, or unavailable when the pass lapsed).

No parameters.

Request

GET /v1/subscriptions/me HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Active (or past-due) subscription
{
  "subscription": {
    "auto_renew": true,
    "card_id": "970c6a9a-f551-466e-a98b-e20cd79ec436",
    "current_period_end": "2026-11-17T02:52:21.20797Z",
    "current_period_start": "2026-10-17T02:52:21.20797Z",
    "days_left": 31,
    "id": "f50c0e50-9808-433d-bb72-cacce761caff",
    "pending_plan": null,
    "plan": {
      "currency": "TMT",
      "description": "An Americano, an Espresso and a Cappuccino every day.",
      "drinks_per_day": [
        {
          "drink": "americano",
          "name": "Americano"
        },
        {
          "drink": "espresso",
          "name": "Espresso"
        },
        {
          "drink": "cappuccino",
          "name": "Cappuccino"
        }
      ],
      "id": "daily_trio",
      "name": "Daily Trio",
      "period": "month",
      "price_minor": 30000,
      "price_text": "300 TMT / month"
    },
    "renews_on": "2026-11-17",
    "status": "active",
    "today": {
      "date": "2026-10-17",
      "drinks": [
        {
          "drink": "americano",
          "name": "Americano",
          "status": "used",
          "used_at": "07:52"
        },
        {
          "drink": "espresso",
          "name": "Espresso",
          "status": "ready"
        },
        {
          "drink": "cappuccino",
          "name": "Cappuccino",
          "status": "ready"
        }
      ]
    }
  }
}
200 OK No subscription
{
  "subscription": null
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/subscriptions Bearer token · scope app

Subscribe

Charges the card for the first month right away.

Body (application/json)

plan_idrequired
string
daily_duo or daily_trio
card_idrequired
string (uuid)
Saved card to charge now and on renewal
auto_renew
boolean
Default true

Request

POST /v1/subscriptions HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "plan_id": "daily_trio",
  "card_id": "ae6dc8f3-bb83-406d-9a0f-3c0ef99dc710",
  "auto_renew": true
}

Responses

201 Created Subscribed
{
  "subscription": {
    "auto_renew": true,
    "card_id": "970c6a9a-f551-466e-a98b-e20cd79ec436",
    "current_period_end": "2026-11-17T02:52:21.20797Z",
    "current_period_start": "2026-10-17T02:52:21.20797Z",
    "days_left": 31,
    "id": "f50c0e50-9808-433d-bb72-cacce761caff",
    "pending_plan": null,
    "plan": {
      "currency": "TMT",
      "description": "An Americano, an Espresso and a Cappuccino every day.",
      "drinks_per_day": [
        {
          "drink": "americano",
          "name": "Americano"
        },
        {
          "drink": "espresso",
          "name": "Espresso"
        },
        {
          "drink": "cappuccino",
          "name": "Cappuccino"
        }
      ],
      "id": "daily_trio",
      "name": "Daily Trio",
      "period": "month",
      "price_minor": 30000,
      "price_text": "300 TMT / month"
    },
    "renews_on": "2026-11-17",
    "status": "active",
    "today": {
      "date": "2026-10-17",
      "drinks": [
        {
          "drink": "americano",
          "name": "Americano",
          "status": "ready"
        },
        {
          "drink": "espresso",
          "name": "Espresso",
          "status": "ready"
        },
        {
          "drink": "cappuccino",
          "name": "Cappuccino",
          "status": "ready"
        }
      ]
    }
  }
}

Errors

StatusCodeWhenMessage
402 payment_declined Bank declinedThe bank declined the payment.Банк отклонил платёж.Bank tölegi kabul etmedi.
402 insufficient_funds Not enough moneyThere are not enough funds on the card.Недостаточно средств на карте.Kartda serişde ýeterlik däl.
402 card_expired Card expiredThis card has expired.Срок действия карты истёк.Kartyň möhleti geçdi.
404 not_found Card not foundNot found.Не найдено.Tapylmady.
409 subscription_exists Already subscribed (change plan with PATCH instead)You already have an active subscription.У вас уже есть активная подписка.Siziň işjeň abunaňyz eýýäm bar.
422 validation Unknown plan_id or bad card_idPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
PATCH /v1/subscriptions/me Bearer token · scope app

Change auto-renew, card or plan

A plan change (e.g. Duo → Trio) takes effect at the next renewal (pending_plan).

Body (application/json)

auto_renew
boolean
card_id
string (uuid)
Card for renewals
plan_id
string
Plan from the next period

Request

PATCH /v1/subscriptions/me HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "plan_id": "daily_trio"
}

Responses

200 OK Updated
{
  "subscription": {
    "auto_renew": true,
    "card_id": "970c6a9a-f551-466e-a98b-e20cd79ec436",
    "current_period_end": "2026-11-17T02:52:21.20797Z",
    "current_period_start": "2026-10-17T02:52:21.20797Z",
    "days_left": 31,
    "id": "f50c0e50-9808-433d-bb72-cacce761caff",
    "pending_plan": null,
    "plan": {
      "currency": "TMT",
      "description": "An Americano, an Espresso and a Cappuccino every day.",
      "drinks_per_day": [
        {
          "drink": "americano",
          "name": "Americano"
        },
        {
          "drink": "espresso",
          "name": "Espresso"
        },
        {
          "drink": "cappuccino",
          "name": "Cappuccino"
        }
      ],
      "id": "daily_trio",
      "name": "Daily Trio",
      "period": "month",
      "price_minor": 30000,
      "price_text": "300 TMT / month"
    },
    "renews_on": "2026-11-17",
    "status": "active",
    "today": {
      "date": "2026-10-17",
      "drinks": [
        {
          "drink": "americano",
          "name": "Americano",
          "status": "used",
          "used_at": "07:52"
        },
        {
          "drink": "espresso",
          "name": "Espresso",
          "status": "ready"
        },
        {
          "drink": "cappuccino",
          "name": "Cappuccino",
          "status": "ready"
        }
      ]
    }
  }
}

Errors

StatusCodeWhenMessage
409 no_subscription No active subscriptionYou don't have an active subscription.У вас нет активной подписки.Işjeň abunaňyz ýok.
422 validation Unknown plan_id or bad card_idPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/subscriptions/me/cancel Bearer token · scope app

Turn off renewal

Drinks stay available until the end of the paid month.

No parameters.

Request

POST /v1/subscriptions/me/cancel HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Updated
{
  "subscription": {
    "auto_renew": true,
    "card_id": "970c6a9a-f551-466e-a98b-e20cd79ec436",
    "current_period_end": "2026-11-17T02:52:21.20797Z",
    "current_period_start": "2026-10-17T02:52:21.20797Z",
    "days_left": 31,
    "id": "f50c0e50-9808-433d-bb72-cacce761caff",
    "pending_plan": null,
    "plan": {
      "currency": "TMT",
      "description": "An Americano, an Espresso and a Cappuccino every day.",
      "drinks_per_day": [
        {
          "drink": "americano",
          "name": "Americano"
        },
        {
          "drink": "espresso",
          "name": "Espresso"
        },
        {
          "drink": "cappuccino",
          "name": "Cappuccino"
        }
      ],
      "id": "daily_trio",
      "name": "Daily Trio",
      "period": "month",
      "price_minor": 30000,
      "price_text": "300 TMT / month"
    },
    "renews_on": "2026-11-17",
    "status": "active",
    "today": {
      "date": "2026-10-17",
      "drinks": [
        {
          "drink": "americano",
          "name": "Americano",
          "status": "used",
          "used_at": "07:52"
        },
        {
          "drink": "espresso",
          "name": "Espresso",
          "status": "ready"
        },
        {
          "drink": "cappuccino",
          "name": "Cappuccino",
          "status": "ready"
        }
      ]
    }
  }
}

Errors

StatusCodeWhenMessage
409 no_subscription No active subscriptionYou don't have an active subscription.У вас нет активной подписки.Işjeň abunaňyz ýok.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/subscriptions/me/qr Bearer token · scope app

QR code for the counter

Returns a signed payload to show as a QR code ("Show QR at the counter"). It expires after 90 seconds so screenshots can't be shared; fetch a new one after refresh_after_seconds.

No parameters.

Request

POST /v1/subscriptions/me/qr HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK QR payload
{
  "expires_at": "2026-10-17T02:53:51.229567Z",
  "qr_payload": "DZSUB:MGI4ZjFkNGUtOGM1NS00YzQzLTlhMzUtNmYzZDNmOGEyYzExLjE3OTI0NTY3ODk.q9X2mVb7LkP0sT4wR8nE1A",
  "refresh_after_seconds": 80
}

Errors

StatusCodeWhenMessage
409 no_subscription No active subscription or it has lapsedYou don't have an active subscription.У вас нет активной подписки.Işjeň abunaňyz ýok.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/staff/subscriptions/inspect Staff · scope staff

Scan a guest's QR

Shows the guest's plan and which drinks are still available today.

Body (application/json)

tokenrequired
string
The scanned QR payload

Request

POST /v1/staff/subscriptions/inspect HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "token": "DZSUB:MGI4ZjFkNGUtOGM1NS00YzQzLTlhMzUtNmYzZDNmOGEyYzExLjE3OTI0NTY3ODk.q9X2mVb7LkP0sT4wR8nE1A"
}

Responses

200 OK Guest's drinks today
{
  "drinks": [
    {
      "drink": "americano",
      "name": "Americano",
      "status": "used",
      "used_at": "07:52"
    },
    {
      "drink": "espresso",
      "name": "Espresso",
      "status": "ready"
    },
    {
      "drink": "cappuccino",
      "name": "Cappuccino",
      "status": "ready"
    }
  ],
  "plan": {
    "currency": "TMT",
    "description": "An Americano, an Espresso and a Cappuccino every day.",
    "drinks_per_day": [
      {
        "drink": "americano",
        "name": "Americano"
      },
      {
        "drink": "espresso",
        "name": "Espresso"
      },
      {
        "drink": "cappuccino",
        "name": "Cappuccino"
      }
    ],
    "id": "daily_trio",
    "name": "Daily Trio",
    "period": "month",
    "price_minor": 30000,
    "price_text": "300 TMT / month"
  },
  "subscription_id": "f50c0e50-9808-433d-bb72-cacce761caff",
  "user_id": "c5a9a62e-bf82-4f02-ab6a-59f75f6ebe2d",
  "valid_until": "2026-11-17T02:52:21.20797Z"
}

Errors

StatusCodeWhenMessage
409 no_subscription Pass lapsedYou don't have an active subscription.У вас нет активной подписки.Işjeň abunaňyz ýok.
422 invalid_qr Invalid or expired QR (ask the guest to refresh)The QR code is invalid or expired. Ask the guest to refresh it.QR-код недействителен или истёк. Попросите гостя обновить его.QR kod nädogry ýa-da möhleti geçen. Myhmandan ony täzelemegini haýyş ediň.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "staff" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/staff/subscriptions/redeem Staff · scope staff

Give a drink

Body (application/json)

tokenrequired
string
The scanned QR payload
drinkrequired
string
americano, espresso or cappuccino
store_id
string
Where it was served

Request

POST /v1/staff/subscriptions/redeem HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "token": "DZSUB:MGI4…",
  "drink": "americano",
  "store_id": "dashoguz-turkmenbashy"
}

Responses

200 OK Redeemed; today's drinks
{
  "drinks": [
    {
      "drink": "americano",
      "name": "Americano",
      "status": "used",
      "used_at": "07:52"
    },
    {
      "drink": "espresso",
      "name": "Espresso",
      "status": "ready"
    },
    {
      "drink": "cappuccino",
      "name": "Cappuccino",
      "status": "ready"
    }
  ],
  "redeemed": "americano"
}

Errors

StatusCodeWhenMessage
409 drink_already_used That drink was already served today{drink} has already been used today.«{drink}» сегодня уже использован.«{drink}» şu gün eýýäm ulanyldy.
409 no_subscription Pass lapsedYou don't have an active subscription.У вас нет активной подписки.Işjeň abunaňyz ýok.
422 drink_not_in_plan e.g. Cappuccino on Daily Duo{drink} isn't included in this plan.«{drink}» не входит в этот тариф.«{drink}» bu meýilnama girmeýär.
422 invalid_qr Invalid or expired QRThe QR code is invalid or expired. Ask the guest to refresh it.QR-код недействителен или истёк. Попросите гостя обновить его.QR kod nädogry ýa-da möhleti geçen. Myhmandan ony täzelemegini haýyş ediň.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "staff" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.

Special occasions

Table requests for birthdays, memorial meals, business dinners, family gatherings and more, with decorations, cake and an optional pre-ordered set menu. A booking is a request: staff confirm or decline it (usually after a phone call), and the guest gets an in-app notification, push and email.

GET /v1/occasions/options Public

Form options

Occasion types and setup options (localized), time slots, guest limit and the bookable date range.

No parameters.

Request

GET /v1/occasions/options HTTP/1.1
Host: api.dzburger.fortranpay.com
Accept-Language: tk

Responses

200 OK Options
{
  "first_date": "2026-10-18",
  "last_date": "2027-01-15",
  "lead_hours": 24,
  "max_guests": 40,
  "occasions": [
    {
      "id": "birthday",
      "label": "Birthday"
    },
    {
      "id": "memorial",
      "label": "Memorial meal"
    },
    {
      "id": "business",
      "label": "Business"
    }
  ],
  "setup_options": [
    {
      "id": "decorations",
      "label": "Decorations"
    },
    {
      "id": "cake",
      "label": "Cake"
    },
    {
      "id": "set_menu",
      "label": "Set menu"
    }
  ],
  "slots": [
    "13:00",
    "17:00",
    "19:00"
  ],
  "store_id": "dashoguz-turkmenbashy"
}

Errors

StatusCodeWhenMessage
Common to this endpoint
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/occasions/availability Public

Free time slots on a date

Query parameters

daterequired
string (date)
YYYY-MM-DD
store_id
string
Default: the main restaurant

Request

GET /v1/occasions/availability HTTP/1.1
Host: api.dzburger.fortranpay.com
Accept-Language: tk

Responses

200 OK Slots
{
  "date": "2026-10-22",
  "slots": [
    {
      "available": true,
      "time": "13:00"
    },
    {
      "available": true,
      "time": "17:00"
    },
    {
      "available": true,
      "time": "19:00"
    }
  ]
}

Errors

StatusCodeWhenMessage
422 validation Missing or invalid datePlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
Common to this endpoint
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/occasions Bearer token · scope app

Request a table

Contact details default to the profile. Set-menu items are priced from the menu (estimated_total_minor); the final bill is settled at the restaurant.

Body (application/json)

occasionrequired
string
birthday, memorial, business, family_gathering, other
daterequired
string (date)
At least 24 h ahead, at most 90 days
timerequired
string
One of the slots, e.g. 19:00
guestsrequired
integer
1–40
setup
string[]
decorations, cake, set_menu
menu
array
Set menu: {item_id, quantity, modifier_ids}, up to 40 lines
note
string
Name on the cake, seating, dietary needs (max 1000)
store_id
string
Default: the main restaurant
contact_name
string
Default: profile name
contact_phone
string
Default: profile phone
contact_email
string
Default: profile email

Request

POST /v1/occasions HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "occasion": "birthday",
  "date": "2026-10-20",
  "time": "19:00",
  "guests": 8,
  "setup": [
    "decorations",
    "cake"
  ],
  "note": "Name on the cake: Aylar",
  "menu": [
    {
      "item_id": "3b1f0c55-1f43-4a7e-9d1e-2b7a9f0c6d11",
      "quantity": 8
    }
  ]
}

Responses

201 Created Request sent
{
  "can_cancel": true,
  "can_edit": true,
  "confirmed_via": null,
  "contact": {
    "email": "aylar@example.com",
    "name": "Aylar Annayeva",
    "phone": "+99361234512"
  },
  "created_at": "2026-10-17T02:52:21.345962Z",
  "date": "2026-10-22",
  "date_label": "22 Oct",
  "estimated_total_minor": 36000,
  "estimated_total_text": "360 TMT",
  "guests": 8,
  "id": "a0f77392-4df5-4e0d-80bb-38052f4669b4",
  "menu": [
    {
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/classic-dz.jpg",
      "item_id": "2fb232cc-4577-4b7b-ad0a-4011d7533596",
      "line_total_minor": 36000,
      "modifiers": null,
      "name": "Classic DZ Burger",
      "quantity": 8,
      "unit_price_minor": 4500
    }
  ],
  "note": "Name on the cake: Aylar",
  "occasion": "birthday",
  "occasion_label": "Birthday",
  "setup": [
    "decorations",
    "cake",
    "set_menu"
  ],
  "setup_labels": [
    "Decorations",
    "Cake",
    "Set menu"
  ],
  "staff_note": "",
  "status": "requested",
  "status_label": "Requested",
  "store_id": "dashoguz-turkmenbashy",
  "summary": "19:00 • Decorations, cake, set menu • Requested",
  "time": "19:00",
  "title": "Birthday table • 8 guests"
}

Errors

StatusCodeWhenMessage
409 slot_unavailable That time is fully bookedThis time is fully booked. Please choose another.Это время уже занято. Выберите другое.Bu wagt doly bron edildi. Başga wagt saýlaň.
409 item_unavailable A set-menu item is sold out{item} is not available right now.«{item}» сейчас недоступен.«{item}» häzir elýeterli däl.
422 booking_too_soon Less than 24 hours aheadPlease book at least {hours} hours before the event.Бронируйте не позднее чем за {hours} ч до события.Çäräden azyndan {hours} sagat öň bron ediň.
422 booking_too_far More than 90 days aheadBookings open {days} days ahead.Бронирование доступно на {days} дней вперёд.Bron {days} gün öňünden açylýar.
422 too_many_guests More than 40 guestsUp to {max} guests per booking.Не более {max} гостей на бронирование.Bir bron üçin iň köp {max} myhman.
422 validation Bad occasion, date, time, setup, note, menu, or no phone/email to contactPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
422 invalid_modifiers Set-menu options invalidPlease check the options for {item}.Проверьте опции для «{item}».«{item}» üçin goşmaçalary barlaň.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/occasions Bearer token · scope app

My bookings

upcoming (requested or confirmed, today or later) powers the profile's "Upcoming" card: title "Birthday table • 8 guests", summary "19:00 • Decorations, cake • Confirmed".

Query parameters

scope
string
upcoming (default) or past

Request

GET /v1/occasions HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Bookings
{
  "items": [
    {
      "can_cancel": true,
      "can_edit": false,
      "confirmed_via": "phone",
      "contact": {
        "email": "aylar@example.com",
        "name": "Aylar Annayeva",
        "phone": "+99361234512"
      },
      "created_at": "2026-10-17T02:52:21.345962Z",
      "date": "2026-10-22",
      "date_label": "22 Oct",
      "estimated_total_minor": 36000,
      "estimated_total_text": "360 TMT",
      "guests": 8,
      "id": "a0f77392-4df5-4e0d-80bb-38052f4669b4",
      "menu": [
        {
          "image_url": "https://api.dzburger.fortranpay.com/media/menu/classic-dz.jpg",
          "item_id": "2fb232cc-4577-4b7b-ad0a-4011d7533596",
          "line_total_minor": 36000,
          "modifiers": null,
          "name": "Classic DZ Burger",
          "quantity": 8,
          "unit_price_minor": 4500
        }
      ],
      "note": "Name on the cake: Aylar",
      "occasion": "birthday",
      "occasion_label": "Birthday",
      "setup": [
        "decorations",
        "cake",
        "set_menu"
      ],
      "setup_labels": [
        "Decorations",
        "Cake",
        "Set menu"
      ],
      "staff_note": "Table 4 by the window",
      "status": "confirmed",
      "status_label": "Confirmed",
      "store_id": "dashoguz-turkmenbashy",
      "summary": "19:00 • Decorations, cake, set menu • Confirmed",
      "time": "19:00",
      "title": "Birthday table • 8 guests"
    }
  ]
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/occasions/{id} Bearer token · scope app

Booking details

Path parameters

idrequired
string (uuid)
Booking ID

Request

GET /v1/occasions/{id} HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Booking
{
  "can_cancel": true,
  "can_edit": true,
  "confirmed_via": null,
  "contact": {
    "email": "aylar@example.com",
    "name": "Aylar Annayeva",
    "phone": "+99361234512"
  },
  "created_at": "2026-10-17T02:52:21.345962Z",
  "date": "2026-10-22",
  "date_label": "22 Oct",
  "estimated_total_minor": 36000,
  "estimated_total_text": "360 TMT",
  "guests": 8,
  "id": "a0f77392-4df5-4e0d-80bb-38052f4669b4",
  "menu": [
    {
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/classic-dz.jpg",
      "item_id": "2fb232cc-4577-4b7b-ad0a-4011d7533596",
      "line_total_minor": 36000,
      "modifiers": null,
      "name": "Classic DZ Burger",
      "quantity": 8,
      "unit_price_minor": 4500
    }
  ],
  "note": "Name on the cake: Aylar",
  "occasion": "birthday",
  "occasion_label": "Birthday",
  "setup": [
    "decorations",
    "cake",
    "set_menu"
  ],
  "setup_labels": [
    "Decorations",
    "Cake",
    "Set menu"
  ],
  "staff_note": "",
  "status": "requested",
  "status_label": "Requested",
  "store_id": "dashoguz-turkmenbashy",
  "summary": "19:00 • Decorations, cake, set menu • Requested",
  "time": "19:00",
  "title": "Birthday table • 8 guests"
}

Errors

StatusCodeWhenMessage
404 not_found No such bookingNot found.Не найдено.Tapylmady.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
PUT /v1/occasions/{id}/menu Bearer token · scope app

Replace the set menu

Only while the request is still pending.

Path parameters

idrequired
string (uuid)
Booking ID

Body (application/json)

menurequired
array
Full new menu (empty array removes it)

Request

PUT /v1/occasions/{id}/menu HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "menu": [
    {
      "item_id": "3b1f0c55-1f43-4a7e-9d1e-2b7a9f0c6d11",
      "quantity": 10
    }
  ]
}

Responses

200 OK Updated booking
{
  "can_cancel": true,
  "can_edit": true,
  "confirmed_via": null,
  "contact": {
    "email": "aylar@example.com",
    "name": "Aylar Annayeva",
    "phone": "+99361234512"
  },
  "created_at": "2026-10-17T02:52:21.345962Z",
  "date": "2026-10-22",
  "date_label": "22 Oct",
  "estimated_total_minor": 36000,
  "estimated_total_text": "360 TMT",
  "guests": 8,
  "id": "a0f77392-4df5-4e0d-80bb-38052f4669b4",
  "menu": [
    {
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/classic-dz.jpg",
      "item_id": "2fb232cc-4577-4b7b-ad0a-4011d7533596",
      "line_total_minor": 36000,
      "modifiers": null,
      "name": "Classic DZ Burger",
      "quantity": 8,
      "unit_price_minor": 4500
    }
  ],
  "note": "Name on the cake: Aylar",
  "occasion": "birthday",
  "occasion_label": "Birthday",
  "setup": [
    "decorations",
    "cake",
    "set_menu"
  ],
  "setup_labels": [
    "Decorations",
    "Cake",
    "Set menu"
  ],
  "staff_note": "",
  "status": "requested",
  "status_label": "Requested",
  "store_id": "dashoguz-turkmenbashy",
  "summary": "19:00 • Decorations, cake, set menu • Requested",
  "time": "19:00",
  "title": "Birthday table • 8 guests"
}

Errors

StatusCodeWhenMessage
404 not_found No such bookingNot found.Не найдено.Tapylmady.
409 booking_not_editable Already confirmed or declinedThis booking can no longer be changed.Это бронирование уже нельзя изменить.Bu brony indi üýtgedip bolmaýar.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/occasions/{id}/cancel Bearer token · scope app

Cancel a booking

Path parameters

idrequired
string (uuid)
Booking ID

Request

POST /v1/occasions/{id}/cancel HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Cancelled booking
{
  "can_cancel": true,
  "can_edit": true,
  "confirmed_via": null,
  "contact": {
    "email": "aylar@example.com",
    "name": "Aylar Annayeva",
    "phone": "+99361234512"
  },
  "created_at": "2026-10-17T02:52:21.345962Z",
  "date": "2026-10-22",
  "date_label": "22 Oct",
  "estimated_total_minor": 36000,
  "estimated_total_text": "360 TMT",
  "guests": 8,
  "id": "a0f77392-4df5-4e0d-80bb-38052f4669b4",
  "menu": [
    {
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/classic-dz.jpg",
      "item_id": "2fb232cc-4577-4b7b-ad0a-4011d7533596",
      "line_total_minor": 36000,
      "modifiers": null,
      "name": "Classic DZ Burger",
      "quantity": 8,
      "unit_price_minor": 4500
    }
  ],
  "note": "Name on the cake: Aylar",
  "occasion": "birthday",
  "occasion_label": "Birthday",
  "setup": [
    "decorations",
    "cake",
    "set_menu"
  ],
  "setup_labels": [
    "Decorations",
    "Cake",
    "Set menu"
  ],
  "staff_note": "",
  "status": "requested",
  "status_label": "Requested",
  "store_id": "dashoguz-turkmenbashy",
  "summary": "19:00 • Decorations, cake, set menu • Requested",
  "time": "19:00",
  "title": "Birthday table • 8 guests"
}

Errors

StatusCodeWhenMessage
404 not_found No such bookingNot found.Не найдено.Tapylmady.
409 booking_not_editable Not requested/confirmed any moreThis booking can no longer be changed.Это бронирование уже нельзя изменить.Bu brony indi üýtgedip bolmaýar.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/staff/occasions Staff · scope staff

Booking requests

Query parameters

status
string
requested (default), confirmed, …

Request

GET /v1/staff/occasions HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Bookings from yesterday on, by date
{
  "items": [
    {
      "can_cancel": true,
      "can_edit": true,
      "confirmed_via": null,
      "contact": {
        "email": "aylar@example.com",
        "name": "Aylar Annayeva",
        "phone": "+99361234512"
      },
      "created_at": "2026-10-17T02:52:21.345962Z",
      "date": "2026-10-22",
      "date_label": "22 Oct",
      "estimated_total_minor": 36000,
      "estimated_total_text": "360 TMT",
      "guests": 8,
      "id": "a0f77392-4df5-4e0d-80bb-38052f4669b4",
      "menu": [
        {
          "image_url": "https://api.dzburger.fortranpay.com/media/menu/classic-dz.jpg",
          "item_id": "2fb232cc-4577-4b7b-ad0a-4011d7533596",
          "line_total_minor": 36000,
          "modifiers": null,
          "name": "Classic DZ Burger",
          "quantity": 8,
          "unit_price_minor": 4500
        }
      ],
      "note": "Name on the cake: Aylar",
      "occasion": "birthday",
      "occasion_label": "Birthday",
      "setup": [
        "decorations",
        "cake",
        "set_menu"
      ],
      "setup_labels": [
        "Decorations",
        "Cake",
        "Set menu"
      ],
      "staff_note": "",
      "status": "requested",
      "status_label": "Requested",
      "store_id": "dashoguz-turkmenbashy",
      "summary": "19:00 • Decorations, cake, set menu • Requested",
      "time": "19:00",
      "title": "Birthday table • 8 guests",
      "user_id": "c5a9a62e-bf82-4f02-ab6a-59f75f6ebe2d"
    }
  ]
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "staff" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/staff/occasions/{id}/decision Staff · scope staff

Confirm or decline

Record the decision after contacting the guest. The guest is notified in-app, by push and email. A confirmed booking can still be declined later.

Path parameters

idrequired
string (uuid)
Booking ID

Body (application/json)

decisionrequired
string
confirmed or declined
confirmed_via
string
phone, email or app (default)
staff_note
string
Shown to the guest

Request

POST /v1/staff/occasions/{id}/decision HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "decision": "confirmed",
  "confirmed_via": "phone",
  "staff_note": "Table 4 by the window"
}

Responses

200 OK Updated booking
{
  "can_cancel": true,
  "can_edit": false,
  "confirmed_via": "phone",
  "contact": {
    "email": "aylar@example.com",
    "name": "Aylar Annayeva",
    "phone": "+99361234512"
  },
  "created_at": "2026-10-17T02:52:21.345962Z",
  "date": "2026-10-22",
  "date_label": "22 Oct",
  "estimated_total_minor": 36000,
  "estimated_total_text": "360 TMT",
  "guests": 8,
  "id": "a0f77392-4df5-4e0d-80bb-38052f4669b4",
  "menu": [
    {
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/classic-dz.jpg",
      "item_id": "2fb232cc-4577-4b7b-ad0a-4011d7533596",
      "line_total_minor": 36000,
      "modifiers": null,
      "name": "Classic DZ Burger",
      "quantity": 8,
      "unit_price_minor": 4500
    }
  ],
  "note": "Name on the cake: Aylar",
  "occasion": "birthday",
  "occasion_label": "Birthday",
  "setup": [
    "decorations",
    "cake",
    "set_menu"
  ],
  "setup_labels": [
    "Decorations",
    "Cake",
    "Set menu"
  ],
  "staff_note": "Table 4 by the window",
  "status": "confirmed",
  "status_label": "Confirmed",
  "store_id": "dashoguz-turkmenbashy",
  "summary": "19:00 • Decorations, cake, set menu • Confirmed",
  "time": "19:00",
  "title": "Birthday table • 8 guests"
}

Errors

StatusCodeWhenMessage
404 not_found No such bookingNot found.Не найдено.Tapylmady.
409 booking_not_editable Already decided/cancelledThis booking can no longer be changed.Это бронирование уже нельзя изменить.Bu brony indi üýtgedip bolmaýar.
422 validation Bad decision or confirmed_viaPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "staff" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/staff/occasions/{id}/complete Staff · scope staff

Mark the event as held

Path parameters

idrequired
string (uuid)
Booking ID

Request

POST /v1/staff/occasions/{id}/complete HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Updated booking
{
  "can_cancel": true,
  "can_edit": false,
  "confirmed_via": "phone",
  "contact": {
    "email": "aylar@example.com",
    "name": "Aylar Annayeva",
    "phone": "+99361234512"
  },
  "created_at": "2026-10-17T02:52:21.345962Z",
  "date": "2026-10-22",
  "date_label": "22 Oct",
  "estimated_total_minor": 36000,
  "estimated_total_text": "360 TMT",
  "guests": 8,
  "id": "a0f77392-4df5-4e0d-80bb-38052f4669b4",
  "menu": [
    {
      "image_url": "https://api.dzburger.fortranpay.com/media/menu/classic-dz.jpg",
      "item_id": "2fb232cc-4577-4b7b-ad0a-4011d7533596",
      "line_total_minor": 36000,
      "modifiers": null,
      "name": "Classic DZ Burger",
      "quantity": 8,
      "unit_price_minor": 4500
    }
  ],
  "note": "Name on the cake: Aylar",
  "occasion": "birthday",
  "occasion_label": "Birthday",
  "setup": [
    "decorations",
    "cake",
    "set_menu"
  ],
  "setup_labels": [
    "Decorations",
    "Cake",
    "Set menu"
  ],
  "staff_note": "Table 4 by the window",
  "status": "confirmed",
  "status_label": "Confirmed",
  "store_id": "dashoguz-turkmenbashy",
  "summary": "19:00 • Decorations, cake, set menu • Confirmed",
  "time": "19:00",
  "title": "Birthday table • 8 guests"
}

Errors

StatusCodeWhenMessage
409 booking_not_editable Not confirmedThis booking can no longer be changed.Это бронирование уже нельзя изменить.Bu brony indi üýtgedip bolmaýar.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "staff" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.

Delivery & live tracking

A delivery job is created when the kitchen accepts a delivery order. Couriers take it, send GPS positions while driving, and mark it picked up and delivered; the order status follows. Coordinates are WGS84, ready for Apple MapKit (iOS) and Mapbox/Google Maps (Android).

GET /v1/deliveries/order/{orderID} Bearer token · scope app

Tracking snapshot

Status, ETA, courier position and the route trail (path, [lat, lng] pairs) for drawing on the map. 404 means the kitchen hasn't accepted the order yet.

Path parameters

orderIDrequired
string (uuid)
Order ID

Request

GET /v1/deliveries/order/{orderID} HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Snapshot
{
  "at": "2026-10-17T02:52:21.151687Z",
  "courier": {
    "name": "Merdan Courier",
    "phone": "+99365000001",
    "lat": 41.8391,
    "lng": 59.9752,
    "heading": 62,
    "updated_at": "2026-10-17T02:52:21.137427Z"
  },
  "dropoff": {
    "lat": 41.841,
    "lng": 59.98,
    "line1": "Gurbansoltan Eje 12, apt 5",
    "note": "3rd floor"
  },
  "eta_at": "2026-10-17T02:53:45.429643Z",
  "eta_minutes": 2,
  "id": "16ca9d14-bf50-427b-8d16-affa61f76ada",
  "order_id": "3d8e2603-5d63-4653-8243-0242b6dc18df",
  "order_number": 1002,
  "path": [
    [
      41.8372,
      59.9691
    ],
    [
      41.8391,
      59.9752
    ]
  ],
  "pickup": {
    "lat": 41.8363,
    "lng": 59.9666,
    "line1": "28 Turkmenbashi Ave., Dashoguz"
  },
  "status": "picked_up",
  "type": "snapshot"
}

Errors

StatusCodeWhenMessage
404 not_found No delivery yet, or not your orderNot found.Не найдено.Tapylmady.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/deliveries/order/{orderID}/live Bearer token · scope app

Live tracking (WebSocket)

Upgrade to a WebSocket (wss://). The server sends a snapshot (same as above), then location and status messages as they happen, pings every 25 s, and closes after delivered or cancelled. Browsers that can't set headers may pass ?access_token=. See Realtime.

Path parameters

orderIDrequired
string (uuid)
Order ID

Request

GET /v1/deliveries/order/{orderID}/live HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Connection: Upgrade
Upgrade: websocket

Responses

101 Switching Protocols Switching Protocols, then JSON text messages
{
  "type": "location",
  "status": "picked_up",
  "lat": 41.8391,
  "lng": 59.9752,
  "heading": 62,
  "eta_at": "2026-10-17T02:39:12Z",
  "at": "2026-10-17T02:35:31Z"
}

Errors

StatusCodeWhenMessage
404 not_found No delivery yet, or not your orderNot found.Не найдено.Tapylmady.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/courier/shift Courier · scope courier

Start/stop shift

Body (application/json)

onlinerequired
boolean
lat
number
lng
number

Request

POST /v1/courier/shift HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "online": true,
  "lat": 41.836,
  "lng": 59.966
}

Responses

200 OK Shift state
{
  "online": true
}

Errors

StatusCodeWhenMessage
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "courier" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/courier/deliveries Courier · scope courier

My jobs and open jobs

available is sorted nearest-first when lat/lng are given. collect_minor is the cash to collect for cash-on-delivery orders.

Query parameters

lat
number
Courier position
lng
number

Request

GET /v1/courier/deliveries HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Jobs
{
  "active": [],
  "available": [
    {
      "collect_minor": 14000,
      "customer_phone": "+99361234512",
      "dropoff": {
        "lat": 41.841,
        "lng": 59.98,
        "line1": "Gurbansoltan Eje 12, apt 5",
        "note": "3rd floor"
      },
      "eta_at": null,
      "id": "16ca9d14-bf50-427b-8d16-affa61f76ada",
      "order_id": "3d8e2603-5d63-4653-8243-0242b6dc18df",
      "order_number": 1002,
      "payment_method": "cash_on_delivery",
      "pickup": {
        "lat": 41.8363,
        "lng": 59.9666,
        "line1": "28 Turkmenbashi Ave., Dashoguz"
      },
      "status": "pending"
    }
  ]
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "courier" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/courier/deliveries/{id}/accept Courier · scope courier

Take a job

Path parameters

idrequired
string (uuid)
Delivery ID

Request

POST /v1/courier/deliveries/{id}/accept HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Assigned to you
{
  "collect_minor": 14000,
  "customer_phone": "+99361234512",
  "dropoff": {
    "lat": 41.841,
    "lng": 59.98,
    "line1": "Gurbansoltan Eje 12, apt 5",
    "note": "3rd floor"
  },
  "eta_at": null,
  "id": "16ca9d14-bf50-427b-8d16-affa61f76ada",
  "order_id": "3d8e2603-5d63-4653-8243-0242b6dc18df",
  "order_number": 1002,
  "payment_method": "cash_on_delivery",
  "pickup": {
    "lat": 41.8363,
    "lng": 59.9666,
    "line1": "28 Turkmenbashi Ave., Dashoguz"
  },
  "status": "assigned"
}

Errors

StatusCodeWhenMessage
409 delivery_taken Another courier was fasterAnother courier has already taken this delivery.Эту доставку уже взял другой курьер.Bu eltip bermäni başga kurýer aldy.
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "courier" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/courier/deliveries/{id}/location Courier · scope courier

Send GPS position

Every 3–5 seconds while on a job. Updates the ETA and is pushed to the customer's map instantly.

Path parameters

idrequired
string (uuid)
Delivery ID

Body (application/json)

latrequired
number
lngrequired
number
heading
number
Degrees, 0 = north

Request

POST /v1/courier/deliveries/{id}/location HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "lat": 41.8372,
  "lng": 59.9691,
  "heading": 45
}

Responses

200 OK New ETA
{
  "eta_at": "2026-10-17T02:59:47.836085954Z"
}

Errors

StatusCodeWhenMessage
404 not_found Not your active jobNot found.Не найдено.Tapylmady.
422 validation Invalid locationPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "courier" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/courier/deliveries/{id}/status Courier · scope courier

Picked up / delivered

picked_up moves the order to out_for_delivery; delivered completes it (and records cash as paid).

Path parameters

idrequired
string (uuid)
Delivery ID

Body (application/json)

statusrequired
string
picked_up (from assigned) or delivered (from picked up)

Request

POST /v1/courier/deliveries/{id}/status HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "status": "picked_up"
}

Responses

200 OK Updated job
{
  "collect_minor": 14000,
  "customer_phone": "+99361234512",
  "dropoff": {
    "lat": 41.841,
    "lng": 59.98,
    "line1": "Gurbansoltan Eje 12, apt 5",
    "note": "3rd floor"
  },
  "eta_at": "2026-10-17T02:59:47.836085Z",
  "id": "16ca9d14-bf50-427b-8d16-affa61f76ada",
  "order_id": "3d8e2603-5d63-4653-8243-0242b6dc18df",
  "order_number": 1002,
  "payment_method": "cash_on_delivery",
  "pickup": {
    "lat": 41.8363,
    "lng": 59.9666,
    "line1": "28 Turkmenbashi Ave., Dashoguz"
  },
  "status": "picked_up"
}

Errors

StatusCodeWhenMessage
409 conflict Wrong order of steps or not your jobThis action conflicts with the current state.Действие невозможно в текущем состоянии.Bu amal häzirki ýagdaýda mümkin däl.
422 validation Unknown statusPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "courier" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/staff/deliveries Staff · scope staff

Dispatch board

Query parameters

status
string
Default: all open (pending, assigned, picked up)

Request

GET /v1/staff/deliveries HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Deliveries
{
  "items": [
    {
      "collect_minor": 14000,
      "courier": {
        "id": null,
        "lat": null,
        "lng": null,
        "name": ""
      },
      "customer_phone": "+99361234512",
      "dropoff": {
        "lat": 41.841,
        "lng": 59.98,
        "line1": "Gurbansoltan Eje 12, apt 5",
        "note": "3rd floor"
      },
      "eta_at": null,
      "id": "16ca9d14-bf50-427b-8d16-affa61f76ada",
      "order_id": "3d8e2603-5d63-4653-8243-0242b6dc18df",
      "order_number": 1002,
      "payment_method": "cash_on_delivery",
      "pickup": {
        "lat": 41.8363,
        "lng": 59.9666,
        "line1": "28 Turkmenbashi Ave., Dashoguz"
      },
      "status": "pending"
    }
  ]
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "staff" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/staff/deliveries/{id}/assign Staff · scope staff

Assign a courier

Path parameters

idrequired
string (uuid)
Delivery ID

Body (application/json)

courier_idrequired
string (uuid)
User ID of a courier

Request

POST /v1/staff/deliveries/{id}/assign HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "courier_id": "5d2f7a10-3c4b-4e2a-9f61-8b7c6d5e4f30"
}

Responses

200 OK Assigned
{
  "collect_minor": 14000,
  "customer_phone": "+99361234512",
  "dropoff": {
    "lat": 41.841,
    "lng": 59.98,
    "line1": "Gurbansoltan Eje 12, apt 5",
    "note": "3rd floor"
  },
  "eta_at": null,
  "id": "16ca9d14-bf50-427b-8d16-affa61f76ada",
  "order_id": "3d8e2603-5d63-4653-8243-0242b6dc18df",
  "order_number": 1002,
  "payment_method": "cash_on_delivery",
  "pickup": {
    "lat": 41.8363,
    "lng": 59.9666,
    "line1": "28 Turkmenbashi Ave., Dashoguz"
  },
  "status": "assigned"
}

Errors

StatusCodeWhenMessage
409 delivery_taken Already picked up or finishedAnother courier has already taken this delivery.Эту доставку уже взял другой курьер.Bu eltip bermäni başga kurýer aldy.
422 validation Bad courier_idPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "staff" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/staff/couriers Staff · scope staff

Couriers online

No parameters.

Request

GET /v1/staff/couriers HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Online in the last 30 minutes
{
  "items": [
    {
      "active_deliveries": 1,
      "id": "18ec7e77-2e8f-44be-a2fd-cf3c879a15b9",
      "last_seen_at": "2026-10-17T02:52:21.138833Z",
      "lat": 41.8391,
      "lng": 59.9752,
      "name": "Merdan Courier",
      "phone": "+99365000001"
    }
  ]
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
403insufficient_scopeToken lacks the "staff" scopeSign in to the staff app to do this.Для этого войдите в приложение для сотрудников.Munuň üçin işgärler programmasyna giriň.
403forbiddenUser's current role doesn't allow itYou don't have access to this.Нет доступа.Bu amala rugsadyňyz ýok.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.

Notifications

Order updates, booking decisions, Coffee Club renewals and birthday greetings arrive as push notifications (APNs on iOS) and are kept in an in-app list. Texts are rendered in the language of the request, so the list follows the app's language.

GET /v1/notifications Bearer token · scope app

In-app notifications

data is a deep link, e.g. {"screen": "order", "order_id": "…"}.

Query parameters

limit
integer
1–100, default 30
before
string (date-time)
Cursor: next_cursor from the previous page

Request

GET /v1/notifications HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK Newest first, with unread count
{
  "items": [
    {
      "id": "5bdf373c-29f4-4606-8960-7337f984ad0f",
      "template": "occasion_confirmed",
      "title": "Your table is confirmed",
      "body": "Birthday • 22 Oct at 19:00 • 8 guests. See you soon!",
      "data": {
        "booking_id": "a0f77392-4df5-4e0d-80bb-38052f4669b4",
        "screen": "occasion"
      },
      "read": false,
      "created_at": "2026-10-17T02:52:21.635282Z"
    },
    {
      "id": "297b6c8d-5561-4bac-8ef4-526e100eb3aa",
      "template": "occasion_received",
      "title": "Booking request sent",
      "body": "We'll confirm your Birthday table for 22 Oct at 19:00 soon.",
      "data": {
        "booking_id": "a0f77392-4df5-4e0d-80bb-38052f4669b4",
        "screen": "occasion"
      },
      "read": false,
      "created_at": "2026-10-17T02:52:21.632697Z"
    },
    {
      "id": "2aaa762f-a2f3-42e5-b9be-837a89c45bcc",
      "template": "subscription_activated",
      "title": "Daily Trio is active",
      "body": "Enjoy your daily drinks. Renews on 17 Nov.",
      "data": {
        "screen": "coffee_club"
      },
      "read": false,
      "created_at": "2026-10-17T02:52:21.332121Z"
    }
  ],
  "next_cursor": "",
  "unread_count": 14
}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
GET /v1/notifications/stream Bearer token · scope app

Live notifications (SSE)

Server-Sent Events while the app is in the foreground: an event: notification per new notification, and a comment ping every 25 s.

No parameters.

Request

GET /v1/notifications/stream HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

200 OK text/event-stream
event: notification
id: 8f8242e4-2d55-494e-9624-d65b9148df63
data: {"id":"8f8242e4-…","template":"order_ready_pickup","title":"Order #1001 is ready","body":"Pick it up at S Turkmenbashy Ave 28, Dashoguz.","data":{"order_id":"…","screen":"order"},"read":false,"created_at":"2026-10-17T02:35:31Z"}

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/notifications/{id}/read Bearer token · scope app

Mark one as read

Path parameters

idrequired
string (uuid)
Notification ID

Request

POST /v1/notifications/{id}/read HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

204 No Content Done (also when already read)

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/notifications/read-all Bearer token · scope app

Mark all as read

No parameters.

Request

POST /v1/notifications/read-all HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

204 No Content Done

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
POST /v1/devices Bearer token · scope app

Register for push

Send the APNs/FCM device token after sign-in. A device belongs to whoever signed in on it last.

Body (application/json)

tokenrequired
string
Device push token (max 512)
platformrequired
string
ios or android

Request

POST /v1/devices HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk
Content-Type: application/json

{
  "token": "80f3c2a1e7…",
  "platform": "ios"
}

Responses

204 No Content Registered

Errors

StatusCodeWhenMessage
422 validation Bad token or platformPlease check the field: {field}.Проверьте поле: {field}.Meýdany barlaň: {field}.
Common to this endpoint
400bad_requestBody is not valid JSON or larger than 1 MiBThe request is invalid.Некорректный запрос.Haýyş nädogry.
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.
DELETE /v1/devices/{token} Bearer token · scope app

Unregister on sign-out

Path parameters

tokenrequired
string
Device push token

Request

DELETE /v1/devices/{token} HTTP/1.1
Host: api.dzburger.fortranpay.com
Authorization: Bearer dza_…
Accept-Language: tk

Responses

204 No Content Removed

Errors

StatusCodeWhenMessage
Common to this endpoint
401unauthorizedNo Authorization headerPlease sign in.Пожалуйста, войдите в аккаунт.Hasabyňyza giriň.
401invalid_tokenToken unknown, expired or revoked: refresh itYour session has expired. Please sign in again.Сессия истекла. Войдите снова.Sessiýanyň möhleti gutardy. Täzeden giriň.
429rate_limitedToo many requests from this IPToo many requests. Please wait a moment.Слишком много запросов. Подождите немного.Haýyşlar gaty köp. Biraz garaşyň.
503unavailableSign-in service temporarily unreachable: retry, don't sign outService is temporarily unavailable. Please try again.Сервис временно недоступен. Попробуйте ещё раз.Hyzmat wagtlaýyn elýeterli däl. Gaýtadan synanyşyň.
500internalUnexpected server error (has a request_id)Something went wrong. Please try again.Что-то пошло не так. Попробуйте ещё раз.Näsazlyk ýüze çykdy. Gaýtadan synanyşyň.