Borzo: Courier Delivery App is INCRIN LIMITED's same-day courier sender client — the global Borzo/Dostavista booking app for households and small businesses that need a bike, car or van to move a parcel across town. Senders enter a pickup and one or more drops, pick a vehicle class, confirm a quote, pay with a saved card or by topping up an in-app balance, then watch the assigned courier on a live map and rate the job when it closes. Address-book entries remember door codes and last-metre notes, promo codes knock the fare down, and a stats screen totals monthly spend. The listing covers Brazil, India, Indonesia, Mexico, South Korea and Vietnam (sibling regional clients exist for India, Korea and Brazil), and it sits next to Porter, Lalamove, Dunzo and local last-mile desks as a consumer-side courier booker rather than a rider payout app.
Quoted payment_amount on a multi-drop same-day job sits next to live status_category and the assigned courier's masked_phone, while saved pickups keep entrance_number and invisible_mile_navigation_instructions for the last metre. Vehicle rows advertise max_weight_kg and is_create_order_allowed.
Card-on-file rows expose bank_card_number_mask and is_last_used; wallet top-ups return a payment_url for the chosen bill_provider. Monthly spend rolls up as total_orders_price and average_address_price, and volume-discount steps report completed_deliveries against total_discount. Fleet dashboards, SMB shipping desks and wallet reconcilers stitch those objects into live ETAs, prepaid-balance alerts and city-level volume. openData Studio turns that surface into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Send verification SMS
POST
/v1/borzo/otp/dispatchosintSends a one-time SMS to phone (VerificationCodeRequest) so person login can pass code; force_sms bypasses push.
Auth: Unauthenticated. A device-id header identifies the handset; no session token yet.
- phone
- source
- device_id
- push_token
- force_sms
- push_service
- is_successful
- errors
- parameter_errors
- session
- server_time
POST /v1/borzo/otp/dispatch HTTP/1.1 Content-Type: application/json X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 { "phone": "+5511987654321", "source": "login", "device_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "push_token": "fcm:dK3_…", "force_sms": true, "push_service": "fcm" }{ "is_successful": true, "errors": [], "parameter_errors": null, "session": null, "server_time": "2026-10-05T12:00:08Z" }Login person
POST
/v1/borzo/session/personosintAuthenticates a sender with phone, password and SMS code; returns session plus the user card (user_id, balance).
Auth: Unauthenticated. A device-id header identifies the handset; no session token yet.
- phone
- password
- code
- is_successful
- session
- server_time
- user
- user_id
- name
- surname
- middlename
- balance
- unread_notifications_category_ids
POST /v1/borzo/session/person HTTP/1.1 Content-Type: application/json X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 { "phone": "+5511987654321", "password": "••••••••", "code": "482911" }{ "is_successful": true, "errors": [], "parameter_errors": null, "session": "dv-sess-7f21c0a4", "server_time": "2026-10-05T12:01:22Z", "user": { "user_id": 4410281, "name": "Ana", "surname": "Costa", "middlename": null, "phone": "+5511987654321", "email": "[email protected]", "balance": "128.50", "unread_notifications_category_ids": [] } }Client profile
GET
/v1/borzo/account/cardopenbankingReloads the signed-in sender card, including wallet balance as a Money string.
Auth: Session token from person login plus a device-id header on every call.
- is_successful
- session
- server_time
- user
- user_id
- name
- surname
- middlename
- phone
- balance
- unread_notifications_category_ids
GET /v1/borzo/account/card HTTP/1.1 X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890{ "is_successful": true, "session": "dv-sess-7f21c0a4", "server_time": "2026-10-05T12:02:01Z", "user": { "user_id": 4410281, "name": "Ana", "surname": "Costa", "middlename": null, "phone": "+5511987654321", "email": "[email protected]", "balance": "128.50", "unread_notifications_category_ids": ["orders"] } }Calculate order
POST
/v1/borzo/quotes/previewopendataPrices a same-day multi-stop job from filling_id, form_type and addresses; returns payment_amount before the job is booked.
Auth: Session token from person login plus a device-id header on every call.
- filling_id
- order_id
- form_type
- matter
- promo_code
- back_payment_method
- addresses
- address_id
- address
- latitude
- longitude
- contact_phone
- delivery_interval_start
- payment_amount
- undiscounted_payment_amount
- backpayment_amount
- payment_method
- warnings
- parameter_errors
- create_orders_count
- is_user_created
- payment_data
POST /v1/borzo/quotes/preview HTTP/1.1 Content-Type: application/json X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 { "filling_id": "fill-9f3a1c", "order_id": null, "form_type": "same_day", "matter": "Documents", "promo_code": null, "back_payment_method": null, "addresses": [ { "address_id": null, "address": "Av. Paulista 1578, Sao Paulo", "latitude": -23.5614, "longitude": -46.6565, "contact_phone": "+5511987654321", "delivery_interval_start": "2026-10-05T14:00:00" }, { "address": "Rua Augusta 2690, Sao Paulo", "latitude": -23.5533, "longitude": -46.6589, "contact_phone": "+5511912345678", "delivery_interval_start": "2026-10-05T15:30:00" } ] }{ "is_successful": true, "order": { "id": null, "name": null, "form_type": "same_day", "status": null, "status_category": null, "payment_amount": "42.90", "undiscounted_payment_amount": "42.90", "backpayment_amount": "0.00", "payment_method": "balance" }, "warnings": [], "parameter_warnings": null, "errors": [], "parameter_errors": null, "create_orders_count": 1, "is_user_created": false, "payment_data": null, "promo_code_warnings": [] }Create order
POST
/v1/borzo/jobs/bookopendataBooks the quoted job and returns the order id, status_category and optional payment_data redirect URLs.
Auth: Session token from person login plus a device-id header on every call.
- filling_id
- form_type
- matter
- payment_method
- addresses
- id
- name
- status
- status_category
- created_at
- payment_amount
- undiscounted_payment_amount
- backpayment_amount
- is_user_created
- create_orders_count
- payment_data
- payment_url
- redirect_success_url
- redirect_fail_url
POST /v1/borzo/jobs/book HTTP/1.1 Content-Type: application/json X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 { "filling_id": "fill-9f3a1c", "form_type": "same_day", "matter": "Documents", "payment_method": "balance", "addresses": [ { "address": "Av. Paulista 1578, Sao Paulo", "latitude": -23.5614, "longitude": -46.6565, "contact_phone": "+5511987654321", "delivery_interval_start": "2026-10-05T14:00:00" }, { "address": "Rua Augusta 2690, Sao Paulo", "latitude": -23.5533, "longitude": -46.6589, "contact_phone": "+5511912345678", "delivery_interval_start": "2026-10-05T15:30:00" } ] }{ "is_successful": true, "order": { "id": 91827364, "name": "DV-91827364", "form_type": "same_day", "status": "new", "status_category": "undelivered", "created_at": "2026-10-05T12:05:11Z", "payment_amount": "42.90", "undiscounted_payment_amount": "42.90", "backpayment_amount": "0.00", "payment_method": "balance" }, "warnings": [], "errors": [], "create_orders_count": 1, "is_user_created": false, "payment_data": { "payment_url": null, "redirect_success_url": null, "redirect_fail_url": null } }Active orders and couriers
GET
/v1/borzo/jobs/liveopendataPages active jobs (getActiveOrders) with status_category=undelivered and the live couriers list for the map.
Auth: Session token from person login plus a device-id header on every call.
- status_category
- offset
- limit
- orders
- id
- name
- form_type
- status
- created_at
- payment_amount
- couriers
- masked_phone
- photo_url
- is_deaf_mute
- vehicle_number
- vehicle_region
- latitude
- longitude
GET /v1/borzo/jobs/live?status_category=undelivered&offset=0&limit=20 HTTP/1.1 X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890{ "is_successful": true, "orders": [ { "id": 91827364, "name": "DV-91827364", "form_type": "same_day", "status": "courier_assigned", "status_category": "undelivered", "created_at": "2026-10-05T12:05:11Z", "payment_amount": "42.90" } ], "couriers": [ { "id": 55201, "name": "Joao", "phone": "+5511999887766", "masked_phone": "+55 11 9****7766", "photo_url": "https://cdn.example/img", "is_deaf_mute": false, "vehicle_number": "BRA2E19", "vehicle_region": "SP", "latitude": -23.5571, "longitude": -46.6610 } ] }Cancel order
POST
/v1/borzo/jobs/voidopendataCancels a booked job by order_id and cancel_reason after a cancel-eligibility check.
Auth: Session token from person login plus a device-id header on every call.
- order_id
- cancel_reason
- is_successful
- errors
- parameter_errors
- session
- server_time
POST /v1/borzo/jobs/void HTTP/1.1 Content-Type: application/json X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 { "order_id": 91827364, "cancel_reason": "sender_cancelled" }{ "is_successful": true, "errors": [], "parameter_errors": null, "session": "dv-sess-7f21c0a4", "server_time": "2026-10-05T12:18:44Z" }Bank cards
GET
/v1/borzo/wallet/instrumentsopenfinanceLists saved cards (BankCardDto) with bank_card_number_mask and is_last_used for checkout.
Auth: Session token from person login plus a device-id header on every call.
- bank_cards
- bank_card_id
- bank_card_number_mask
- type
- is_last_used
- expiration_date
- provider
GET /v1/borzo/wallet/instruments HTTP/1.1 X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890{ "is_successful": true, "bank_cards": [ { "bank_card_id": 8812, "bank_card_number_mask": "**** 4444", "type": "visa", "is_last_used": true, "expiration_date": "2028-09", "provider": "cardpay" } ] }Request bank-card binding
POST
/v1/borzo/wallet/instruments/enrollopenfinanceStarts hosted card-on-file capture; BankCardBindingResponse returns binding_url, success_url and fail_url.
Auth: Session token from person login plus a device-id header on every call.
- binding_url
- success_url
- fail_url
- is_successful
POST /v1/borzo/wallet/instruments/enroll HTTP/1.1 X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890{ "is_successful": true, "binding_url": "https://pay.example/bind/8812", "success_url": "https://cdn.example/img", "fail_url": "https://cdn.example/img" }Request top-up balance
POST
/v1/borzo/wallet/creditopenfinanceStarts a wallet top-up for bill_provider and amount; returns the hosted payment_url plus success/failure/callback URLs.
Auth: Session token from person login plus a device-id header on every call.
- bill_provider
- amount
- method
- payment_url
- success_url
- failure_url
- callback_url
POST /v1/borzo/wallet/credit HTTP/1.1 Content-Type: application/json X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 { "bill_provider": "pix", "amount": "100.00" }{ "is_successful": true, "method": { "bill_provider": "pix", "payment_url": "https://pay.example/topup/8812", "success_url": "https://cdn.example/img", "failure_url": "https://cdn.example/img", "callback_url": "https://pay.example/callback" } }Order statistics
GET
/v1/borzo/spend/monthlyopendataReturns per-month and lifetime sender spend: orders_count, total_orders_price, average_order_price, average_address_price.
Auth: Session token from person login plus a device-id header on every call.
- monthly_statistics
- year
- month
- orders_count
- total_orders_price
- average_order_price
- average_address_price
- total
GET /v1/borzo/spend/monthly HTTP/1.1 X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890{ "is_successful": true, "monthly_statistics": [ { "year": 2026, "month": 9, "orders_count": 18, "total_orders_price": "612.40", "average_order_price": "34.02", "average_address_price": "17.01" } ], "total": { "orders_count": 86, "total_orders_price": "3012.10", "average_order_price": "35.02", "average_address_price": "16.80" } }Client addresses
GET
/v1/borzo/address-bookopendataLoads the sender address book, including last-metre fields entrance_number, floor_number, apartment_number and invisible_mile_navigation_instructions.
Auth: Session token from person login plus a device-id header on every call.
- client_addresses
- title
- phone
- note
- address
- latitude
- longitude
- entrance_number
- floor_number
- apartment_number
- invisible_mile_navigation_instructions
GET /v1/borzo/address-book HTTP/1.1 X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890{ "is_successful": true, "client_addresses": [ { "title": "Office", "phone": "+5511987654321", "note": "Ask reception", "address": "Av. Paulista 1578, Sao Paulo", "latitude": -23.5614, "longitude": -46.6565, "entrance_number": "B", "floor_number": "12", "apartment_number": "1204", "invisible_mile_navigation_instructions": "Use the loading bay on Rua Augusta" } ] }Geo suggestions
GET
/v1/borzo/places/autocompleteopendataAutocomplete for pickup/drop typing: formatted_address, place_id and is_final_address plus the geo_suggestion_provider.
Auth: Session token from person login plus a device-id header on every call.
- query
- address_suggestions
- formatted_address
- street_level_address
- city_level_address
- is_final_address
- latitude
- longitude
- place_id
- is_final_address_detection_available
- geo_suggestion_provider
GET /v1/borzo/places/autocomplete?query=Av.%20Paulista%201578 HTTP/1.1 X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890{ "is_successful": true, "address_suggestions": [ { "formatted_address": "Av. Paulista 1578, Bela Vista, Sao Paulo - SP", "street_level_address": "Av. Paulista 1578", "city_level_address": "Sao Paulo - SP", "is_final_address": true, "latitude": -23.5614, "longitude": -46.6565, "place_id": "ChIJpaulista1578" } ], "is_final_address_detection_available": true, "geo_suggestion_provider": "google" }Vehicle types
GET
/v1/borzo/fleet/classesopendataLists bookable vehicle classes (VehicleTypeDto) with max_weight_kg and is_create_order_allowed for the compose-order form.
Auth: Session token from person login plus a device-id header on every call.
- vehicle_types
- vehicle_type_id
- name
- client_mobile_app_local_name
- description
- tags
- max_weight_kg
- default_weight_kg
- sort_order
- is_create_order_allowed
- is_default
- is_require_loading_enabled
- is_motobox_required_enabled
- is_cargo_dimension_enabled
- is_insurance_visible
- is_total_weight_editable
GET /v1/borzo/fleet/classes HTTP/1.1 X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890{ "is_successful": true, "vehicle_types": [ { "vehicle_type_id": 12, "name": "Bike", "client_mobile_app_local_name": "Moto", "description": "Up to 20 kg", "tags": ["same_day"], "max_weight_kg": 20, "default_weight_kg": 5, "sort_order": 1, "is_create_order_allowed": true, "is_default": true, "is_require_loading_enabled": false, "is_motobox_required_enabled": true, "is_cargo_dimension_enabled": false, "is_insurance_visible": true, "is_total_weight_editable": true } ] }Promo code
GET
/v1/borzo/offers/lookupopendataLooks up a promo (PromoCodeDto) and returns discount_absolute_amount plus min_total_order_amount.
Auth: Session token from person login plus a device-id header on every call.
- promo_code
- discount_absolute_amount
- min_total_order_amount
- is_successful
GET /v1/borzo/offers/lookup?code=BORZO20 HTTP/1.1 X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890{ "is_successful": true, "promo_code": { "promo_code": "BORZO20", "discount_absolute_amount": 20.0, "min_total_order_amount": 50.0 } }Volume discount steps
GET
/v1/borzo/loyalty/tiersopendataReturns the sender volume-discount ladder: period start/end and steps with completed_deliveries, total_deliveries and total_discount.
Auth: Session token from person login plus a device-id header on every call.
- state
- period
- start
- end
- steps
- completed_deliveries
- total_deliveries
- total_discount
GET /v1/borzo/loyalty/tiers HTTP/1.1 X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890{ "is_successful": true, "state": { "period": { "start": "2026-09-01", "end": "2026-09-30" }, "steps": [ { "completed_deliveries": 18, "total_deliveries": 25, "total_discount": "40.00" } ] } }Rate order
POST
/v1/borzo/jobs/feedbackopendataSubmits a post-delivery rating (oid, rating, comment, rating_ground_ids) after the post-delivery prompt.
Auth: Session token from person login plus a device-id header on every call.
- oid
- rating
- comment
- rating_ground_ids
- is_successful
- errors
- session
- server_time
POST /v1/borzo/jobs/feedback HTTP/1.1 Content-Type: application/json X-Session: dv-sess-7f21c0a4 X-Device-Id: a1b2c3d4-e5f6-7890-abcd-ef1234567890 { "oid": 91827364, "rating": 5, "comment": "On time", "rating_ground_ids": ["punctual"] }{ "is_successful": true, "errors": [], "parameter_errors": null, "session": "dv-sess-7f21c0a4", "server_time": "2026-10-05T16:40:02Z" }
Data categories
- identity
- orders
- quotes
- courier tracking
- bank cards
- wallet top-up
- addresses
- geocoding
- order statistics
- vehicle types
- promo codes
- volume discounts
Where teams use this data
Same-day quote vs booked fare
A shipping desk posts the same address list to the quote preview, stores payment_amount and undiscounted_payment_amount, then diffs those strings against the booked job so promo and back-payment drift is visible before the courier is assigned.
Live courier board
Dispatch screens poll active orders with status_category=undelivered, join each job to the couriers list, and plot masked_phone, vehicle_number, latitude and longitude until status_category flips.
Wallet and card ops
Finance bots list bank_card_number_mask rows, keep is_last_used in sync, open the binding_url from card enrollment for a new card, and hit the payment_url from wallet credit when in-app balance cannot cover the next quote.
City spend and volume tiers
Monthly spend totals (orders_count, total_orders_price, average_address_price) sit next to volume-discount steps (completed_deliveries, total_discount) so an SMB dashboard can compare this sender's volume against the address book without scraping the stats screen.
Frequently asked questions
What sender objects does Borzo expose?
A session-backed profile (user_id, phone, balance), calculated and booked jobs with payment_amount and status_category, a couriers list with masked_phone and live coordinates, saved client_addresses, place autocomplete, vehicle_types, promo_code rows, bank_cards, volume-discount steps and monthly spend totals.
How does a Borzo sender session authenticate?
Person login returns a session string that later calls send as a session header, together with a stable device-id header. SMS login posts phone, force_sms and push_token before that session exists.
Can quotes be reconciled against booked jobs?
Yes. Quote-preview and book-job share filling_id, form_type and the addresses list; the booked job keeps payment_amount, undiscounted_payment_amount and is_user_created so a desk can diff quote versus capture.
Where do card and wallet fields live?
Saved instruments list bank_card_id, bank_card_number_mask, expiration_date and is_last_used. Card enrollment returns binding_url, success_url and fail_url. Wallet credit takes bill_provider plus amount and returns payment_url, success_url, failure_url and callback_url.
Apps similar to Borzo: Courier Delivery App
- Porter - Logistics Service App — India intra-city goods booking with vehicle-class quotes and a customer wallet; the closest catalog sender app to Borzo.
- Dostavista — работа курьером — INCRIN/Dostavista's Russia courier (rider) client — same family, payouts and batches rather than sender quotes.
- Lalamove — Same-day van and bike booking across several Asian cities, overlapping Borzo's sender flow.
- Dunzo — India hyperlocal sender app for parcels and store runs, a frequent alternative on the same desk as Borzo.
- Shadowfax — India last-mile marketplace used by D2C brands that also book ad-hoc same-day couriers.
Topics
- borzo api
- borzo courier data
- incrin limited
- same-day courier sender
- payment_amount
- status_category
- bank_card_number_mask
- total_orders_price
- masked_phone
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use