Porter Logistics Service App Data API
Porter - Logistics Service App is the customer app of Porter, the Bengaluru-based intra-city goods-transport platform founded in 2014 and run by SmartShift Logistics Solutions Private Limited. Customers set a pickup and a drop point on the map, add extra stops along the route, pick the type of goods, and get upfront fares for every vehicle class on one review-and-book screen — two-wheelers for parcels, three-wheelers, Tata Ace mini-trucks and larger trucks — alongside nearby vehicles and an estimated trip time. Beyond spot bookings, the app sells hour/km rental packages that keep a vehicle and driver for a set block of time, takes part-load requests for smaller consignments, and lets customers enter coupon codes or have reward discounts applied automatically on the fare screen. Payment runs through a wallet that combines Porter credits with a linked Paytm balance, online payment, or cash, and outstanding cash dues have to be cleared before the next booking. After booking, a live-trip screen follows the order to delivery, with one-tap rebooking and a post-trip driver rating that asks for reasons. Available in India, it is used by households shifting furniture and electronics, shops and traders moving stock across town, and businesses running city freight, and it competes with Blowhorn, LetsTransport, TruckGuru, BlackBuck, Borzo, Delhivery Direct and Vahak.
Vehicle-wise fare quotes are the core record: for a pickup/drop pair keyed by geo_region_id and the from_address_lat/to_address_long coordinates, each vehicle class returns a quotation_uuid with a fare_info block — fare, fare_before_discount, total_discount, applied_coupon and the min_paytm_amount needed to pay by wallet — plus a trip estimate in porter_duration_in_mins, a route_polyline and the nearby_vehicle_drivers around the pickup. Coupon and auto-applied reward re-pricing adds applied_discounts against the same quote, and hour/km rental packages list each vehicle's bundle as fare, time, distance and totalDiscount.
A confirmed booking becomes an order_crn with order_status, order_created_at, is_cod_order and cash_payable. The signed-in account snapshot holds porter_wallet (amount, payable) and paytm_wallet (login_status, balance), the customer's dues_amount and blacklisting_info, their default_goods_types, and the open_or_live_order_ids and unrated_order_ids that feed post-trip rating_reasons. Geo regions resolve any lat/long to a Porter city record whose pickup_polygon and drop_polygon mark where pickups and drops are served.
3PLs and marketplaces use those quotes to benchmark two-wheeler against tempo fares on the same lane, coupon-adjusted totals and Porter-duration minutes included, before committing freight; finance bots reconcile Porter-credit and Paytm balances against outstanding dues to flag customers who cannot book until cash is cleared; ops consoles poll live and unrated orders after booking and post rating reasons once a trip ends; and booking widgets refuse quotes for pickups outside Porter's serviceable polygons. openData Studio turns these quote, wallet, order and geo-region records into callable open data for those integrations.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
On-demand vehicle quotations
POST
/v1/quotes/on-demandopendataReturns per-vehicle on-demand fare quotes (quotation_uuid, fare_info, route_polyline) for a pickup/drop pair — the review-and-book screen.
Auth: Customer session: JSON body fields mobile and auth_token.
- vehicle_ids
- selected_vehicle_id
- service_type
- part_load_only_request
- customer_mobile
- geo_region_id
- from_address_lat
- from_address_long
- to_address_lat
- to_address_long
- waypoints_attributes
- payment_mode
- use_porter_credits
- vehicle_wise_quotations
- quotation_uuid
- vehicle_id
- fare_info
- fare
- min_paytm_amount
- total_discount
- applied_coupon
- fare_before_discount
- nearby_vehicle_drivers
- route_polyline
- select_vehicle_id
- wallet_info
- porter_duration_in_mins
POST /v1/quotes/on-demand HTTP/1.1 Content-Type: application/json { "mobile": "9876543210", "auth_token": "<auth_token>", "vehicle_ids": [1, 2, 5], "selected_vehicle_id": 2, "service_type": "spot", "part_load_only_request": false, "order": { "customer_mobile": "9876543210", "geo_region_id": 3, "from_address_lat": 12.9716, "from_address_long": 77.5946, "to_address_lat": 12.9352, "to_address_long": 77.6245, "waypoints_attributes": [], "value_added_services": [], "payment_mode": "online", "business_order_info": null, "use_porter_credits": true } }{ "vehicle_wise_quotations": [{ "quotation_uuid": "q-9f3a1c", "vehicle_id": 2, "fare_info": { "fare": 412.0, "min_paytm_amount": 50.0, "min_paytm_amount_with_credits": 0.0, "total_discount": 40.0, "applied_coupon": null, "description": "2-wheeler", "applied_discounts": [], "fare_before_discount": 452.0 }, "book_cta_info_text": "Book now", "value_added_services": [], "bill_details": {}, "porter_duration_in_mins": 28, "price_differential_percentage": 0, "outstation_tag": null }], "nearby_vehicle_drivers": [], "route_polyline": "enc:polyline", "select_vehicle_id": 2, "wallet_info": { "paytm_wallet": {"login_status": true, "balance": 120.5, "balance_api_status": "ok"}, "porter_wallet": {"amount": 80.0, "payable": true} }, "partload_vehicle_wise_quotations": [] }Apply on-demand coupon
POST
/v1/quotes/coupons/applyopendataRe-prices an on-demand quotation after applying coupon_code for a vehicle_id, returning fare_info with applied_coupon and total_discount.
Auth: Customer session: JSON body fields mobile and auth_token.
- coupon_code
- vehicle_id
- quotations_request
- applied_coupon
- total_discount
- applied_discounts
- fare
- fare_before_discount
- quotation_uuid
POST /v1/quotes/coupons/apply HTTP/1.1 Content-Type: application/json { "mobile": "9876543210", "auth_token": "<auth_token>", "coupon_code": "PORTER40", "vehicle_id": 2, "quotations_request": { "vehicle_ids": [2], "selected_vehicle_id": 2, "service_type": "spot", "part_load_only_request": false, "order": { "customer_mobile": "9876543210", "geo_region_id": 3, "from_address_lat": 12.9716, "from_address_long": 77.5946, "to_address_lat": 12.9352, "to_address_long": 77.6245, "waypoints_attributes": [], "value_added_services": [], "payment_mode": "online", "use_porter_credits": false } } }{ "vehicle_wise_quotations": [{ "quotation_uuid": "q-9f3a1c", "vehicle_id": 2, "fare_info": { "fare": 372.0, "min_paytm_amount": 50.0, "min_paytm_amount_with_credits": 0.0, "total_discount": 80.0, "applied_coupon": "PORTER40", "description": "2-wheeler", "applied_discounts": [{"value": "PORTER40"}], "fare_before_discount": 452.0 } }], "select_vehicle_id": 2, "wallet_info": { "paytm_wallet": {"login_status": true, "balance": 120.5, "balance_api_status": "ok"}, "porter_wallet": {"amount": 80.0, "payable": true} } }Apply on-demand discounts
POST
/v1/quotes/discounts/applyopendataApplies coupon and rewards discounts (should_use_auto_apply, requested_discounts) against a quotations_request and returns the updated fare_info.
Auth: Customer session: JSON body fields mobile and auth_token.
- discounts_request
- should_use_auto_apply
- requested_discounts
- value
- vehicle_id
- quotations_request
- applied_discounts
- applied_coupon
- total_discount
POST /v1/quotes/discounts/apply HTTP/1.1 Content-Type: application/json { "mobile": "9876543210", "auth_token": "<auth_token>", "vehicle_id": 2, "discounts_request": { "should_use_auto_apply": true, "requested_discounts": [{"value": "PORTER40"}] }, "quotations_request": { "vehicle_ids": [2], "selected_vehicle_id": 2, "service_type": "spot", "part_load_only_request": false, "order": { "customer_mobile": "9876543210", "geo_region_id": 3, "from_address_lat": 12.9716, "from_address_long": 77.5946, "to_address_lat": 12.9352, "to_address_long": 77.6245, "waypoints_attributes": [], "value_added_services": [], "payment_mode": "online", "use_porter_credits": true } } }{ "vehicle_wise_quotations": [{ "quotation_uuid": "q-9f3a1c", "vehicle_id": 2, "fare_info": { "fare": 372.0, "total_discount": 80.0, "applied_coupon": "PORTER40", "applied_discounts": [{"value": "PORTER40"}], "fare_before_discount": 452.0 } }], "select_vehicle_id": 2 }Remove on-demand coupon
POST
/v1/quotes/coupons/removeopendataClears a previously applied coupon_code from an on-demand quotation and returns the undiscounted fare_info.
Auth: Customer session: JSON body fields mobile and auth_token.
- coupon_code
- vehicle_id
- quotations_request
- applied_coupon
- total_discount
- fare
POST /v1/quotes/coupons/remove HTTP/1.1 Content-Type: application/json { "mobile": "9876543210", "auth_token": "<auth_token>", "coupon_code": "PORTER40", "vehicle_id": 2, "quotations_request": { "vehicle_ids": [2], "selected_vehicle_id": 2, "service_type": "spot", "part_load_only_request": false, "order": { "customer_mobile": "9876543210", "geo_region_id": 3, "from_address_lat": 12.9716, "from_address_long": 77.5946, "to_address_lat": 12.9352, "to_address_long": 77.6245, "waypoints_attributes": [], "value_added_services": [], "payment_mode": "online", "use_porter_credits": false } } }{ "vehicle_wise_quotations": [{ "quotation_uuid": "q-9f3a1c", "vehicle_id": 2, "fare_info": { "fare": 452.0, "total_discount": 0.0, "applied_coupon": null, "applied_discounts": [], "fare_before_discount": 452.0 } }], "select_vehicle_id": 2 }Rental packages
POST
/v1/rentals/packagesopendataLists hour/km rental packages per vehicle (uuid, fare, time, distance) for the rental booking flow.
Auth: Customer session: JSON body fields mobile and auth_token.
- n_waypoints
- vehicle_ids
- order
- rentalVehicleData
- uuid
- fare
- totalDiscount
- time
- distance
- minPaytmBalance
- vehicleInfoList
- initSelectedVehicleId
- description
- walletInfo
POST /v1/rentals/packages HTTP/1.1 Content-Type: application/json { "mobile": "9876543210", "auth_token": "<auth_token>", "n_waypoints": 0, "vehicle_ids": [4, 5], "order": { "customer_mobile": "9876543210", "geo_region_id": 3, "from_address_lat": 19.0760, "from_address_long": 72.8777, "to_address_lat": 19.1136, "to_address_long": 72.8697, "waypoints_attributes": [], "value_added_services": [], "payment_mode": "online", "use_porter_credits": false } }{ "rentalVehicleData": [{ "uuid": "rp-8h", "fare": 1499.0, "totalDiscount": 0.0, "time": "8 hrs", "distance": "80 km", "minPaytmBalance": 0.0 }], "vehicleInfoList": [], "initSelectedVehicleId": 4, "description": "Full-day rental", "walletInfo": { "paytm_wallet": {"login_status": true, "balance": 120.5, "balance_api_status": "ok"}, "porter_wallet": {"amount": 80.0, "payable": true} } }Apply rental coupon
POST
/v1/rentals/coupons/applyopendataRe-prices rental packages after applying couponCode for selectedVehicleId.
Auth: Customer session: JSON body fields mobile and auth_token.
- couponCode
- selectedVehicleId
- rentalPackagesRequest
- uuid
- fare
- totalDiscount
- initSelectedVehicleId
POST /v1/rentals/coupons/apply HTTP/1.1 Content-Type: application/json { "mobile": "9876543210", "auth_token": "<auth_token>", "couponCode": "RENTAL100", "selectedVehicleId": 4, "rentalPackagesRequest": { "mobile": "9876543210", "auth_token": "<auth_token>", "n_waypoints": 0, "vehicle_ids": [4], "order": { "customer_mobile": "9876543210", "geo_region_id": 3, "from_address_lat": 19.0760, "from_address_long": 72.8777, "to_address_lat": 19.1136, "to_address_long": 72.8697, "waypoints_attributes": [], "value_added_services": [], "payment_mode": "online", "use_porter_credits": false } } }{ "rentalVehicleData": [{ "uuid": "rp-8h", "fare": 1399.0, "totalDiscount": 100.0, "time": "8 hrs", "distance": "80 km", "minPaytmBalance": 0.0 }], "initSelectedVehicleId": 4, "description": "Full-day rental", "walletInfo": { "porter_wallet": {"amount": 80.0, "payable": true} } }Create on-demand booking
POST
/v1/bookings/createopendataPlaces an on-demand booking from a quotation_uuid and returns order_crn plus order_status for the live-trip screen.
Auth: Customer session: JSON body fields mobile and auth_token.
- quotation_uuid
- vehicle_id
- customer_mobile
- geo_region_id
- from_address_lat
- from_address_long
- to_address_lat
- to_address_long
- payment_mode
- use_porter_credits
- order_crn
- order_created_at
- order_status
- rebooking_enabled
- pay_online_enabled
- is_cod_order
- amount
- cash_payable
POST /v1/bookings/create HTTP/1.1 Content-Type: application/json { "mobile": "9876543210", "auth_token": "<auth_token>", "quotation_uuid": "q-9f3a1c", "vehicle_id": 2, "customer_mobile": "9876543210", "geo_region_id": 3, "from_address_lat": 12.9716, "from_address_long": 77.5946, "to_address_lat": 12.9352, "to_address_long": 77.6245, "waypoints_attributes": [], "value_added_services": [], "payment_mode": "online", "use_porter_credits": true }{ "order_crn": "CRN240918001", "order_created_at": 1726632000000, "geo_region_id": 3, "order_status": {"name": "finding_driver"}, "rebooking_enabled": false, "pay_online_enabled": true, "is_cod_order": false, "total_amount": {"amount": 372.0, "cash_payable": 0.0} }Account history, wallet and dues
POST
/v1/account/snapshotopenfinanceLoads the signed-in home snapshot: Porter/Paytm wallet balances, dues_amount, live order ids, unrated trips and blacklisting_info.
Auth: Customer session: JSON body fields mobile and auth_token.
- for_blacklisting
- blacklisting_info
- is_blacklisted
- wallet_info
- paytm_wallet
- login_status
- balance
- balance_api_status
- porter_wallet
- amount
- payable
- category
- unrated_order_ids
- open_or_live_order_ids
- goods_type_info
- all_goods_types
- default_goods_types
- dues_info
- dues_amount
POST /v1/account/snapshot HTTP/1.1 Content-Type: application/json { "mobile": "9876543210", "auth_token": "<auth_token>", "for_blacklisting": false }{ "blacklisting_info": { "is_blacklisted": false, "skip_blacklisting": false, "type": null, "message": null, "balance": 0.0 }, "wallet_info": { "paytm_wallet": {"login_status": true, "balance": 120.5, "balance_api_status": "ok"}, "porter_wallet": {"amount": 80.0, "payable": true} }, "category": "retail", "unrated_order_ids": ["CRN240917014"], "open_or_live_order_ids": ["CRN240918001"], "app_update_data": {}, "goods_type_info": { "all_goods_types": ["Household", "Electronics"], "default_goods_types": ["Household"] }, "share_app": {}, "dues_info": {"message": "", "dues_amount": 0.0} }Fetch geo region
POST
/v1/regions/resolveopendataResolves a lat/long pair to a Porter geo_region (id, name, pickup_polygon, drop_polygon) used by quotations and booking.
Auth: Optional customer session (mobile, auth_token). Request body is lat/long.
- lat
- long
- geo_region
- id
- name
- pickup_polygon
- drop_polygon
POST /v1/regions/resolve HTTP/1.1 Content-Type: application/json { "lat": 12.9716, "long": 77.5946 }{ "geo_region": { "id": 3, "name": "Bengaluru", "pickup_polygon": "12.97,77.59 ...", "drop_polygon": "12.97,77.59 ..." } }Save driver rating
POST
/v1/trips/ratingopendataSubmits post-trip driver feedback (rating_reasons with id/name) for an order_crn from unrated_order_ids.
Auth: Customer session: JSON body fields mobile and auth_token.
- order_crn
- rating_reasons
- id
- name
- unrated_order_ids
POST /v1/trips/rating HTTP/1.1 Content-Type: application/json { "mobile": "9876543210", "auth_token": "<auth_token>", "order_crn": "CRN240917014", "rating_reasons": [{"id": 11, "name": "On time"}] }{ "order_crn": "CRN240917014", "unrated_order_ids": [] }
Data categories
- quotations
- fares
- coupons
- wallets
- geo-regions
- orders
- ratings
Where teams use this data
Shipper fare intelligence
A 3PL or marketplace can snapshot vehicle-wise fare quotes, coupon-adjusted totals and Porter-duration minutes before committing a lane, then compare two-wheeler vs tempo quotes for the same pickup/drop.
Wallet and dues reconciliation
Finance bots can pull Porter-wallet amount/payable plus Paytm login_status and balance alongside dues_amount to flag customers who cannot book until outstanding cash is cleared.
Live-order ops desk
An ops console can poll open_or_live_order_ids and unrated_order_ids after booking, then close the loop by posting rating_reasons once the trip ends.
Serviceable-city gate
A booking widget can resolve pickup coordinates to a geo region (id, name, pickup/drop polygons) and refuse quotes outside Porter's coverage before showing vehicle options.
Frequently asked questions
What data does the Porter customer API expose?
On-demand quotations (quotation_uuid, fare, vehicle_id), coupon and discount adjustments, rental hour/km packages, Porter and Paytm wallet balances, geo-region polygons, live/unrated order ids, dues, and post-trip rating reasons.
How does Porter authenticate customer calls?
Signed-in requests send the customer's mobile and auth_token in the JSON request body, as issued by the login flow. Geo-region lookup is keyed by lat/long and does not require those fields on the body.
Does the Porter customer API cover rentals as well as on-demand bookings?
Yes. The rental flow lists hour/km packages per vehicle (uuid, fare, time, distance) and re-prices them after coupon application, separately from the on-demand quotation and booking flow used for immediate trips.
Which endpoint powers the Porter home-screen wallet and dues card?
POST /v1/account/snapshot returns the signed-in snapshot: wallet_info with paytm_wallet.balance and porter_wallet.amount, dues_info.dues_amount, plus open_or_live_order_ids and unrated_order_ids that drive the live-trip and rating prompts.
Apps similar to Porter - Logistics Service App
- Blowhorn — Bengaluru-based intracity logistics service offering mini-truck bookings and same-day delivery, named as a direct Porter rival in the trucks segment.
- LetsTransport — Bengaluru-based intra-city road-logistics platform for enterprise shippers, listed among Porter's main rivals in city trucking.
- TruckGuru — Digital truck-booking app focused on full-truckload freight, compared side-by-side with Porter in Indian trucking-app roundups.
- BlackBuck — Online trucking marketplace that matches shippers with truck operators across India, frequently compared with Porter in the freight-booking category.
- Delhivery Direct — On-demand intracity shipping app launched by Delhivery in Delhi-NCR and Bengaluru to compete with Porter's city-delivery business.
- Borzo — Courier delivery app operating in India for on-demand intracity parcels, part of the same crowded city-delivery space as Porter.
- Vahak — Online truck-booking marketplace for full-load and part-load freight, grouped with Porter in comparisons of Indian trucking apps.
Topics
- Porter API
- Porter quotations API
- Porter wallet balance
- Porter customer data API
- on-demand logistics API India
- Porter coupon fare
- Porter geo region
- Porter order CRN
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