GoFood Merchant 数据 API
GoFood Merchant 是 Gojek 在印尼 GoFood 网络的餐厅控制台。首页收件箱与钱包界面背后,它调用私有 HTTPS 端点——/v1/wallet/balance 返回 overall / effectiveBalance / cuttoffBalance,/v1/orders 返回带 shoppingPrice、otpCode 与 secondsToAccept 的实时工单。
结算走 /v1/payouts 与 /v1/payout-settings 指向收款银行。目录 SKU 在 /v1/menus/{mg_id}/items/{common_id},质量卡片在 /v1/quality/scores,菜单照片经 /v1/catalog/ocr。每次调用都携带商户身份签发的 Bearer access_token 以及 Gojek-Country-Code。
GoFood Merchant 是 Gojek 为印尼餐厅准备的 GoFood 门店控制台:接收实时工单、维护菜单库存,并把 GoPay 商户钱包结算打款。首页收件箱、目录、质量分与钱包界面背后是一套商户数据接口——钱包余额(overall、effectiveBalance、cuttoffBalance)、流水搜索与银行打款、带 shoppingPrice 与 otpCode 的工单、接单/拒单、以 commonId 为键的菜单 SKU、质量分卡片,以及从照片预测菜单的 OCR。
应用截图
API 端点一览
门店钱包余额
GET
/v1/wallet/balanceopenbanking读取已登录门店的 GoPay 商户钱包:总余额 overall、可动用 effectiveBalance,以及过结算截止后冻结的 cuttoffBalance。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- data.overall
- data.effectiveBalance
- data.cuttoffBalance
依据应用界面重构的示意示例,并非实时抓包。
GET /v1/wallet/balance?merchant_id=MCH-88100214 HTTP/1.1 Authorization: Bearer eyJhbGciOi... X-AppVersion: 5.51 X-UniqueId: 7c2a9f11-4b8e-4d21 Gojek-Country-Code: ID X-User-Locale: id_ID{ "data": { "overall": 18425000.0, "effectiveBalance": 17240000.0, "cuttoffBalance": 1185000.0 } }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据门店钱包首页的 overall / effectiveBalance / cuttoffBalance 卡片重建字段集与商户控制台钱包余额卡一致
钱包余额窗口汇总
GET
/v1/wallet/summaryopenfinance返回一个时间窗口内钱包的期初与期末余额,拆成 nett / pending / reserve / overall / effective 等印尼盾金额,供钱包首页图表使用。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- merchantId
- currency
- startTime
- endTime
- startBalance.nett
- startBalance.pending
- startBalance.reserve
- startBalance.overall
- startBalance.effective
- endBalance.nett
- endBalance.pending
- endBalance.reserve
- endBalance.overall
- endBalance.effective
依据应用界面重构的示意示例,并非实时抓包。
GET /v1/wallet/summary?merchant_id=MCH-88100214&start_time=2026-09-21T00:00:00Z&end_time=2026-09-28T00:00:00Z HTTP/1.1 Authorization: Bearer eyJhbGciOi... Gojek-Country-Code: ID{ "data": { "merchantId": "MCH-88100214", "currency": "IDR", "startTime": "2026-09-21T00:00:00Z", "endTime": "2026-09-28T00:00:00Z", "startBalance": {"nett": 15120000.0, "pending": 840000.0, "reserve": 250000.0, "overall": 16210000.0, "effective": 15120000.0}, "endBalance": {"nett": 17240000.0, "pending": 935000.0, "reserve": 250000.0, "overall": 18425000.0, "effective": 17240000.0} } }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据钱包首页期初/期末余额图表重建SummaryBalance 字段 nett / pending / reserve / overall / effective
发起商户结算打款
POST
/v1/payoutsopenbanking把门店钱包结算打到已登记银行账户,返回 payoutId、referenceNo、source 与 amount。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- payouts.payoutId
- payouts.referenceNo
- payouts.source
- payouts.amount
- merchantId
依据应用界面重构的示意示例,并非实时抓包。
POST /v1/payouts HTTP/1.1 Authorization: Bearer eyJhbGciOi... Content-Type: application/json Gojek-Country-Code: ID {"merchantId": "MCH-88100214"}{ "payouts": [ { "payoutId": "PO-20260928-4419", "referenceNo": "REF-GOFOOD-992188", "source": "GOPAY_WALLET", "amount": 17240000.0 } ] }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据商户控制台钱包提现/打款操作重建PayoutResponse 字段 payoutId / referenceNo / source / amount
搜索钱包流水
POST
/v1/ledger/searchopenfinance分页返回钱包余额历史所用的门店账本:每笔含 id、amount、time、status、type、category,以及 aggregations.total。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- activitiesResponse.id
- activitiesResponse.amount
- activitiesResponse.time
- activitiesResponse.status
- activitiesResponse.type
- activitiesResponse.category
- activitiesResponse.metadata
- aggregations
- total
- timeRange
- from
- size
依据应用界面重构的示意示例,并非实时抓包。
POST /v1/ledger/search HTTP/1.1 Authorization: Bearer eyJhbGciOi... Content-Type: application/json {"timeRange":{"from":"2026-09-21T00:00:00Z","to":"2026-09-28T23:59:59Z"},"sort":{"time":"desc"},"from":0,"size":20,"includedCategories":{"include":["PAYOUT","ORDER_SETTLEMENT","ADJUSTMENT"]}}{ "activitiesResponse": [ { "id": "JNL-88912001", "amount": 48500.0, "time": "2026-09-27T14:22:11Z", "status": "POSTED", "type": "CREDIT", "category": "ORDER_SETTLEMENT", "metadata": { "orderNo": "F-1234567890", "gopayMetadata": {"channel": "GOPAY"} } } ], "aggregations": {"aggregationsResponse": {"total": {"sum": 17240000.0}}}, "total": 86 }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据商户控制台钱包余额历史列表重建流水行字段 id / amount / time / status / type / category
自动结算银行设置
POST
/v1/payout-settingsopenbanking查询门店自动结算节奏与收款银行账户(bankName、bankCode、accountName、accountNumber),对应结算设置页。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- query.ownerId
- query.ownerType
- data.bankAccount.id
- data.bankAccount.bankName
- data.bankAccount.bankCode
- data.bankAccount.accountName
- data.bankAccount.accountNumber
- data.option
- data.meta
依据应用界面重构的示意示例,并非实时抓包。
POST /v1/payout-settings HTTP/1.1 Authorization: Bearer eyJhbGciOi... Content-Type: application/json {"query":{"ownerId":"MCH-88100214","ownerType":"MERCHANT"}}{ "data": { "bankAccount": { "id": "BA-44012", "bankName": "Bank Central Asia", "bankCode": "014", "accountName": "Warung Nasi Padang Sederhana", "accountNumber": "1234567890" }, "option": "DAILY", "meta": {"payoutTime": "15:00"} } }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据结算设置页上的收款银行账户重建BankAccount 字段 bankName / accountNumber / accountName / bankCode
列出进行中的 GoFood 订单
GET
/v1/ordersopendata分页返回商户订单收件箱(进行中与预约单),含 orderNo、价格、状态、顾客与骑手字段,对应首页工单列表。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- orders.orderNo
- orders.restaurantId
- orders.currency
- orders.shoppingPrice
- orders.finalPrice
- orders.takeawayCharges
- orders.status
- orders.statusType
- orders.orderType
- orders.customerName
- orders.customerPhone
- orders.secondsToAccept
- orders.otpCode
- currentPage
- nextPage
- previousPage
依据应用界面重构的示意示例,并非实时抓包。
GET /v1/orders?restaurant_id=RST-77a1c2&page=1&per_page=20 HTTP/1.1 Authorization: Bearer eyJhbGciOi... X-User-Type: merchant Gojek-Country-Code: ID{ "orders": [ { "orderNo": "F-1234567890", "restaurantId": "RST-77a1c2", "currency": "IDR", "shoppingPrice": 48500, "finalPrice": 45200, "takeawayCharges": 2000, "status": "AWAITING_ACCEPTANCE", "statusType": "ACTIVE", "orderType": "DELIVERY", "customerName": "Budi S.", "customerPhone": "+62812****901", "secondsToAccept": 45, "otpCode": "4421" } ], "currentPage": "1", "nextPage": "2", "previousPage": null }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据商户控制台首页工单收件箱重建OrderResponse 字段 orderNo / shoppingPrice / finalPrice / status / customerName
GoFood 订单详情
GET
/v1/orders/{order_number}opendata加载单张工单:菜品行(itemUUID、name、quantity、price、note)、顾客/骑手联系方式、OTP 交接码与 estimatedDriverPickupAt。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- orderNo
- restaurantId
- currency
- shoppingPrice
- finalPrice
- netPrice
- status
- orderType
- orderedAt
- customerName
- customerPhone
- driverName
- driverPhone
- driverPhotoUrl
- otpCode
- estimatedDriverPickupAt
- paymentMethods
- orderItems.itemId
- orderItems.itemUUID
- orderItems.name
- orderItems.quantity
- orderItems.price
- orderItems.note
依据应用界面重构的示意示例,并非实时抓包。
GET /v1/orders/F-1234567890 HTTP/1.1 Authorization: Bearer eyJhbGciOi... Gojek-Country-Code: ID{ "orderNo": "F-1234567890", "restaurantId": "RST-77a1c2", "currency": "IDR", "shoppingPrice": 48500, "finalPrice": 45200, "netPrice": 41000, "status": "DRIVER_ASSIGNED", "orderType": "DELIVERY", "orderedAt": "2026-09-28T07:14:02Z", "customerName": "Budi S.", "customerPhone": "+62812****901", "driverName": "Agus W.", "driverPhone": "+62813****220", "driverPhotoUrl": "https://cdn.example.com/driver.jpg", "otpCode": "4421", "estimatedDriverPickupAt": "2026-09-28T07:28:00Z", "paymentMethods": ["GOPAY"], "orderItems": [ {"itemId": 9011, "itemUUID": "mi-nasi-padang", "name": "Nasi Padang Komplit", "quantity": 2, "price": 22000, "note": "Pedas sedang"} ] }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据工单详情页(菜品行、顾客/骑手、OTP)重建OrderItem 字段 itemId / itemUUID / name / quantity / price
接单
POST
/v1/orders/{order_id}/acceptopendata在 acceptanceDeadlineSecs 倒计时结束前接受待接工单,转入备餐。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- success
- orderNo
- status
- secondsToPrepare
依据应用界面重构的示意示例,并非实时抓包。
POST /v1/orders/F-1234567890/accept HTTP/1.1 Authorization: Bearer eyJhbGciOi... X-AppVersion: 5.51 Gojek-Country-Code: ID{ "success": true, "orderNo": "F-1234567890", "status": "MERCHANT_ACCEPTED", "secondsToPrepare": 900 }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据待接工单上的「接单」控件重建状态变为 MERCHANT_ACCEPTED,并返回 secondsToPrepare
拒单
POST
/v1/orders/{order_id}/rejectopendata按原因码拒单(含缺货菜品与规格),该记录会进入商户质量评分。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- cancelReasonCode
- cancelReasonText
- outOfStockItemList
- outOfStockVariants
- success
- orderNo
- status
依据应用界面重构的示意示例,并非实时抓包。
POST /v1/orders/F-1234567890/reject HTTP/1.1 Authorization: Bearer eyJhbGciOi... Content-Type: application/json {"cancelReasonCode":"OUT_OF_STOCK","cancelReasonText":"Nasi Padang habis","outOfStockItemList":[{"itemUUID":"mi-nasi-padang"}],"outOfStockVariants":[]}{ "success": true, "orderNo": "F-1234567890", "status": "MERCHANT_REJECTED", "cancelReasonCode": "OUT_OF_STOCK" }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据待接工单上的拒单面板重建拒单请求字段 cancelReasonCode / outOfStockItemList
餐厅资料
GET
/v1/outlets/{restaurant_uuid}/profileopendata返回对外餐厅卡片:名称、图片、地址、菜系、品牌与 operationalHoursJson,对应「我的门店」编辑页。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- name
- image
- address
- collections
- shareableMessage
- brand
- cuisineJson
- operationalHoursJson
依据应用界面重构的示意示例,并非实时抓包。
GET /v1/outlets/RST-77a1c2/profile HTTP/1.1 Authorization: Bearer eyJhbGciOi... Gojek-Country-Code: ID{ "name": "Warung Nasi Padang Sederhana", "image": "https://cdn.example.com/resto.jpg", "address": "Jl. Sabang No. 12, Jakarta Pusat", "collections": "PADANG,HALAL", "shareableMessage": "Pesan di GoFood: Warung Nasi Padang Sederhana", "brand": {"id": "BR-padang-sederhana", "name": "Sederhana"}, "cuisineJson": [{"id": "padang", "name": "Padang"}], "operationalHoursJson": [ {"day": "MON", "open": "10:00", "close": "22:00"} ] }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据「我的门店」资料编辑页重建资料字段 name / image / address / cuisineJson / operationalHoursJson
切换餐厅营业状态
PUT
/v1/outlets/{id}/open-statusopendata在营业与暂停之间切换门店,使消费者端停止或恢复派发新的 GoFood 工单。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- id
- open_status
- status_type
依据应用界面重构的示意示例,并非实时抓包。
PUT /v1/outlets/RST-77a1c2/open-status HTTP/1.1 Authorization: Bearer eyJhbGciOi... Content-Type: application/json {"open_status": true}{ "id": "RST-77a1c2", "open_status": true, "status_type": "OPEN" }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据首页/设置里的营业开关重建门店卡片字段 open_status / status_type
菜单组内的菜品
GET
/v1/menus/{mg_id}/items/{common_id}opendata读取跨门店共享的一条目录 SKU:commonId、price、image、招牌标记、规格类目与按餐厅的 catalogAvailabilities。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- active
- commonId
- menuCommonId
- name
- description
- price
- image
- signature
- weight
- variantCategoryCommonIds
- ids
- catalogAvailabilities
依据应用界面重构的示意示例,并非实时抓包。
GET /v1/menus/MG-88/items/mi-nasi-padang HTTP/1.1 Authorization: Bearer eyJhbGciOi... Gojek-Country-Code: ID{ "active": true, "commonId": "mi-nasi-padang", "menuCommonId": "cat-nasi", "name": "Nasi Padang Komplit", "description": "Nasi, rendang, gulai ayam, sambal", "price": 22000.0, "image": "https://cdn.example.com/menu.jpg", "signature": true, "weight": 10, "variantCategoryCommonIds": ["vc-level-pedas"], "ids": [{"restaurantId": "RST-77a1c2", "menuItemId": "9011"}], "catalogAvailabilities": [{"restaurantId": "RST-77a1c2", "available": true}] }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据多门店目录菜品编辑页重建FoodItem 字段 active / commonId / name / price / catalogAvailabilities
商户质量分
GET
/v1/quality/scoresopendata返回 GoFood 质量看板:header.level 徽章以及接单率、取消率、备餐时长等分项卡片,这些分数会影响促销资格。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- data.header.level
- data.header.cta
- data.cards.qualityType
- data.cards.score
- data.cards.target
- data.cards.status
依据应用界面重构的示意示例,并非实时抓包。
GET /v1/quality/scores?restaurant_id=RST-77a1c2 HTTP/1.1 Authorization: Bearer eyJhbGciOi... Gojek-Country-Code: ID{ "data": { "header": {"level": "GOLD", "cta": {"text": "See how to improve", "deeplink": "gofoodmerchant://food/analytics/reviews"}}, "cards": [ {"qualityType": "acceptance_rate", "score": 97.2, "target": 95.0, "status": "HEALTHY"}, {"qualityType": "cancellation_rate", "score": 1.4, "target": 5.0, "status": "HEALTHY"}, {"qualityType": "preparation_time", "score": 11.5, "target": 15.0, "status": "HEALTHY"} ] } }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据商户质量分看板重建header.level 徽章与接单率 / 取消率 / 备餐时长卡片
从照片 OCR 识别菜单
POST
/v1/catalog/ocropendata对上传的菜单照片(imageLinks)做目录 OCR,返回预测的 menus/menuItems(name、price、description),用于批量上架。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- imageLinks
- llmTime
- loadTime
- menus.name
- menus.menuItems.name
- menus.menuItems.price
- menus.menuItems.description
依据应用界面重构的示意示例,并非实时抓包。
POST /v1/catalog/ocr HTTP/1.1 Authorization: Bearer eyJhbGciOi... Content-Type: application/json {"imageLinks":["https://cdn.example.com/menu-scan/2026-09-28/page1.jpg"]}{ "llmTime": 1.84, "loadTime": 0.42, "menus": [ { "name": "Nasi", "menuItems": [ {"name": "Nasi Padang Komplit", "price": 22000.0, "description": "Nasi, rendang, gulai"} ] } ] }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据「拍菜单上架」引导流程重建扫描响应字段 llmTime / menus
堂食券订单
GET
/v1/dine-in/ordersopendata列出已核销的堂食券工单(套餐 + 券面额/售价与活动窗口),对应自助/堂食收件箱。
认证方式: 商户身份登录签发的 Bearer access_token;另附 X-AppVersion、X-UniqueId、X-User-Locale、Gojek-Country-Code、X-User-Type
- orders.orderNumber
- orders.createdAt
- orders.bundleId
- orders.bundleName
- orders.voucherId
- orders.voucherName
- orders.voucherValue
- orders.voucherPrice
- orders.benefitsDescriptions
- orders.campaignStartDate
- orders.campaignEndDate
- orders.tnc
依据应用界面重构的示意示例,并非实时抓包。
GET /v1/dine-in/orders?restaurant_id=RST-77a1c2&limit=20 HTTP/1.1 Authorization: Bearer eyJhbGciOi... Gojek-Country-Code: ID{ "orders": [ { "orderNumber": "DI-20260928-019", "createdAt": "2026-09-28T11:05:00Z", "bundleId": "BND-lunch", "bundleName": "Paket Makan Siang", "voucherId": "VCH-9981", "voucherName": "Diskon 20%", "voucherValue": 15000.0, "voucherPrice": 12000.0, "benefitsDescriptions": "Potongan 20% max Rp15.000", "campaignStartDate": "2026-09-01T00:00:00Z", "campaignEndDate": "2026-09-30T23:59:59Z", "tnc": "Berlaku dine-in saja" } ] }依据应用界面推导;端点细节为示意说明,并非实际抓包。
依据堂食/自助券收件箱重建已核销工单字段 orderNumber / voucherName / voucherValue
数据类别
- 钱包余额
- 结算打款
- 订单工单
- 菜单
- 餐厅资料
- 质量分
- 堂食券
数据使用场景与案例
门店账本夜间对账
财务机器人拉取 GET /v1/wallet/balance 与 /v1/wallet/summary,再 POST /v1/ledger/search 取 ORDER_SETTLEMENT 与 PAYOUT 行,把实时工单上的 shoppingPrice 对到流水 amount,赶在 15:00 自动结算前找出未入账的 GoFood 营业日。
从实时收件箱驱动厨显
厨显轮询 GET /v1/orders,打开 /v1/orders/{order_number} 读取 itemUUID / quantity / note,并在 secondsToAccept 归零前 POST /v1/orders/{order_id}/accept,把 otpCode 交给出餐口与骑手交接。
多门店目录同步
总部菜单服务读取 /v1/menus/{mg_id}/items/{common_id}(price、catalogAvailabilities、variantCategoryCommonIds),也可通过 POST /v1/catalog/ocr 从纸质菜单照片预填新 SKU。
用质量卡片判断促销资格
增长工具盯着 GET /v1/quality/scores(header.level 以及接单率 / 取消率卡片),一旦 OUT_OF_STOCK 拒单潮可能让门店掉出 GOLD,就暂停广告花费。
常见问题
GoFood Merchant 暴露哪些钱包字段?
GET /v1/wallet/balance 返回 data.overall、data.effectiveBalance 与 data.cuttoffBalance。汇总端点再给出时间窗口内的 nett / pending / reserve 拆分;POST /v1/ledger/search 按 id、amount、status、type、category 分页流水。
实时 GoFood 工单在接口里长什么样?
GET /v1/orders 分页返回 OrderResponse(orderNo、shoppingPrice、finalPrice、status、customerName、otpCode)。详情是 GET /v1/orders/{order_number};商户经 /v1/orders/{order_id}/accept 与 /reject(含 cancelReasonCode)接单或拒单。
菜单目录在哪个路径?
每条 SKU 是 GET /v1/menus/{mg_id}/items/{common_id},含 commonId、price、image、variantCategoryCommonIds 与 catalogAvailabilities。纸质菜单可先经 POST /v1/catalog/ocr 预测。
应用如何鉴权?
商户身份登录之后,每个数据调用发送 Authorization: Bearer,以及 X-AppVersion、X-UniqueId、X-User-Locale、X-User-Type 和 Gojek-Country-Code: ID。这些是第一方商户端点,不是公开开发者 API。
相关主题
- gofood merchant api
- gobiz 钱包余额
- gofood 商户订单
- 商户结算
- gofood 菜单
- 商户质量分
- 印尼外卖商户
需要集成这个 App 的数据 API?
我们可为任意指定 App 交付定制集成——源码交付 USD 500 起,或托管 API 按调用计费。告诉我们您需要的数据即可。
- 每个项目均签 NDA 与 SOW
- 3–7 天交付
- 验收通过后才付款
- 仅在授权范围内作业