CashBook 员工 UPI 钱包与账本数据 API
CashBook 把共享现金账变成面向印度中小企业的员工 UPI 钱包:店主掌管账簿,外勤员工在手机上领取备用金、用 Scan & Pay 向供应商付款并申请充值。它立足于印度小企业支付市场,在这里,手机 OTP 登录与预付费员工钱包正在取代零用金箱和报销字条。
作为数据源,该应用同时呈现资金及其周围的票据信息:钱包快照如 walletBalance、closingBalance 与 perTransactionLimit,账目行携带 utr、rrn、payeeName 以及每行归档所用的 bookId,GSTIN 核验结果如 tradeName 与 mcc,以及以 rechargeRequestId 和 approvalStatus 标识的充值申请。集成方在此基础上构建面向 Tally 或 Zoho Books 的对账、放款的店主审批队列,以及员工 UPI 支出的审计轨迹。
CashBook 是 Obopay 推出的印度中小企业现金账应用,把共享账本与员工 UPI 钱包组合在一起,服务外勤团队。印度各地的小商家用它记录谁花了什么钱、从哪本账支出,并通过 UPI 结算。界面背后是一套丰富的数据:员工钱包余额与消费限额、带 UPI 参考号的账目记录、经 GSTIN 核验的企业资料、关联往来方以及充值审批。这些数据供会计、运营团队与放贷方使用,为印度中小企业构建对账、放款与支出审计集成。
应用截图
API 端点一览
以下端点与请求/响应示例均依据应用界面推导重构,为示意说明,并非实际抓包。
发送员工钱包 OTP
POST
/v1/wallet/auth/otp/startopenfinance启动员工钱包登录,是任何余额、账本或 UPI 调用之前的第一步。它发送的短信 OTP 由 OTP 校验调用消费,用于开启会话。
认证方式: 无需认证的引导调用。手机号用于标识员工或店主钱包;登录后的调用会附带 Authorization Bearer 身份令牌。
- phoneNumber
- deviceId
- sessionId
- status
- phoneAuthRequestId
POST /v1/wallet/auth/otp/start HTTP/1.1 Content-Type: application/json { "phoneNumber": "9876543210", "deviceId": "a1b2c3d4e5f6" }{ "status": "SENT", "sessionId": "otp-sess-9f2a", "phoneNumber": "9876543210", "phoneAuthRequestId": "par-44120" }依据应用的手机号优先钱包登录流程重构与注册引导期间请求的短信自动读取能力一致
校验 OTP 并开启钱包会话
POST
/v1/wallet/auth/otp/verifyopenfinance消费短信 OTP,返回会话令牌、KYC 标志与 digitalAccount id,这些共同管控员工钱包余额与 UPI 付款/收款。
认证方式: 无需认证。请求体携带 phoneNumber 与短信 otp;返回的 accessToken 与 refreshToken 在后续钱包调用中作为 Authorization Bearer 发送。
- accessToken
- refreshToken
- idToken
- kycStatus
- minKyc
- fullKyc
- walletStatus
- digitalAccount
- role
POST /v1/wallet/auth/otp/verify HTTP/1.1 Content-Type: application/json { "phoneNumber": "9876543210", "otp": "482913", "deviceId": "a1b2c3d4e5f6" }{ "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.example", "refreshToken": "rt_7c11ab", "idToken": "id-token-example", "kycStatus": "MIN_KYC", "minKyc": true, "fullKyc": false, "walletStatus": "ACTIVE", "digitalAccount": "CBW-998877", "role": "STAFF" }依据 OTP 校验与会话初始化流程重构KYC 标志与注册引导中的企业 KYC 步骤对应
读取员工 UPI 钱包余额
GET
/v1/wallets/staff/balanceopenbanking返回钱包首页展示的已登录员工(或店主)预付费钱包快照:实时余额、结账余额以及按日/按笔的消费限额。
认证方式: Authorization Bearer 使用 OTP 校验调用返回的 accessToken。
- digitalAccount
- walletBalance
- accountBalance
- closingBalance
- currency
- walletStatus
- dailyLimit
- perTransactionLimit
- limitAmount
- staffWallet
GET /v1/wallets/staff/balance HTTP/1.1 Authorization: Bearer <accessToken>{ "digitalAccount": "CBW-998877", "walletBalance": "12500.00", "accountBalance": "12500.00", "closingBalance": "11840.50", "currency": "INR", "walletStatus": "ACTIVE", "dailyLimit": "50000.00", "perTransactionLimit": "10000.00", "limitAmount": "50000.00", "staffWallet": true }依据钱包首页的余额卡片重构限额字段与钱包开通引导中引入的消费上限一致
读取企业钱包余额
GET
/v1/business/account/balanceopenbanking读取公司级数字账户,该账户为员工钱包与批量放款注资,返回内容含用于消费管控的商户类别码(MCC)。
认证方式: Authorization Bearer 使用 OTP 校验调用返回的 accessToken;作用域限定于当前 businessId。
- businessId
- businessName
- walletBalance
- accountBalance
- currency
- walletStatus
- mcc
GET /v1/business/account/balance?businessId=biz-10482 HTTP/1.1 Authorization: Bearer <accessToken>{ "businessId": "biz-10482", "businessName": "Noida Packers", "walletBalance": "842300.00", "accountBalance": "842300.00", "currency": "INR", "walletStatus": "ACTIVE", "mcc": "4214", "checkPaymentsEnabled": true }依据企业切换器与公司钱包界面重构
列出员工钱包账目交易
GET
/v1/wallet/ledger/entriesopenbanking分页返回支撑现金流入/流出登记簿的员工钱包账目,包括 UPI UTR/RRN、收款方 VPA、类别以及每行抄入的账簿。
认证方式: Authorization Bearer 使用 OTP 校验调用返回的 accessToken。
- txnId
- transactionId
- txnAmount
- amount
- currency
- txnStatus
- entryType
- paymentMode
- payeeName
- upiId
- utr
- rrn
- remarks
- categoryId
- bookId
- bookName
- cashIn
- cashOut
GET /v1/wallet/ledger/entries?page=1&pageSize=20 HTTP/1.1 Authorization: Bearer <accessToken>{ "items": [ { "txnId": "TXN-1789965001", "transactionId": "OBP-889900", "txnAmount": "499.00", "amount": "499.00", "currency": "INR", "txnStatus": "SUCCESS", "entryType": "CASH_OUT", "paymentMode": "UPI", "payeeName": "Metro Cash & Carry", "upiId": "metro@okicici", "utr": "609912345678", "rrn": "609912345678", "remarks": "Packaging material", "categoryId": "cat-ops", "bookId": "book-22", "bookName": "Petty cash — North" } ], "summary": { "cashIn": "15000.00", "cashOut": "499.00" } }依据账目列表及其现金流入/流出合计重构抄入账簿的行为与应用内提供的账目操作一致
获取单笔钱包交易
GET
/v1/wallet/ledger/entryopenbanking返回单条账目的完整凭证——UPI 标识、审批状态、关联往来方以及详情页展示的任何虚拟账户付款信息。
认证方式: Authorization Bearer 使用 OTP 校验调用返回的 accessToken。
- txnId
- transactionId
- txnAmount
- txnStatus
- paymentMode
- payeeName
- upiId
- utr
- rrn
- remarks
- approvalStatus
- categoryId
- partyId
- partyName
- virtualAccountDetails
- accountNumber
- ifsc
- bankName
GET /v1/wallet/ledger/entry?txnId=TXN-1789965001 HTTP/1.1 Authorization: Bearer <accessToken>{ "txnId": "TXN-1789965001", "transactionId": "OBP-889900", "txnAmount": "499.00", "txnStatus": "SUCCESS", "paymentMode": "UPI", "payeeName": "Metro Cash & Carry", "upiId": "metro@okicici", "utr": "609912345678", "rrn": "609912345678", "remarks": "Packaging material", "approvalStatus": "AUTO_APPROVED", "categoryId": "cat-ops", "partyId": "pty-441", "partyName": "Metro Cash & Carry", "virtualAccountDetails": { "accountNumber": "502000112233", "ifsc": "HDFC0000123", "bankName": "HDFC Bank" } }依据账目详情与附件查看界面重构
读取 UPI PPI 账户余额
POST
/v1/ppi/accounts/balanceopenbanking读取发行方侧预付费(PPI)台账,即应用中显示的员工 UPI 钱包,区别于现金账的账面余额,返回含 KYC 与账户状态标志。
认证方式: Bearer 来自设备绑定后的 PPI 令牌调用;与钱包会话配合用于预付费账户。
- accountBalance
- walletBalance
- currency
- walletStatus
- custbalanceStatus
- kycStatus
- digitalAccount
POST /v1/ppi/accounts/balance HTTP/1.1 Authorization: Bearer <ppi-token> Content-Type: application/json { "digitalAccount": "CBW-998877", "deviceId": "a1b2c3d4e5f6" }{ "accountBalance": "12500.00", "walletBalance": "12500.00", "currency": "INR", "walletStatus": "ACTIVE", "custbalanceStatus": "ACTIVE", "kycStatus": "MIN_KYC" }依据 UPI 钱包余额刷新流程重构状态标志与钱包界面的 KYC 横幅一致
UPI 交易历史
POST
/v1/ppi/upi/transactionsopenbanking返回绑定设备的发行方侧 UPI 历史(付款与收款),包括用于把记录匹配回账目的 UTR/RRN。
认证方式: Bearer 来自设备绑定后的 PPI 令牌调用。
- txnId
- txnAmount
- txnStatus
- upiId
- payeeName
- utr
- rrn
- remarks
- collectRequest
POST /v1/ppi/upi/transactions HTTP/1.1 Authorization: Bearer <ppi-token> Content-Type: application/json { "digitalAccount": "CBW-998877", "pageNo": 1, "pageSize": 20 }{ "txns": [ { "txnId": "UPI-609912345678", "txnAmount": "499.00", "txnStatus": "SUCCESS", "upiId": "metro@okicici", "payeeName": "Metro Cash & Carry", "utr": "609912345678", "rrn": "609912345678", "remarks": "Packaging material", "collectRequest": false } ] }依据 UPI 历史界面重构UTR/RRN 字段与账目行上展示的参考号一致
读取已绑定的 UPI 资料
POST
/v1/ppi/upi/profileopenfinance返回在发行方 UPI 桥接页完成 PIN 设置后,设备绑定员工钱包的 VPA、KYC 等级与 UPI 消费限额。
认证方式: Bearer 来自设备令牌生成并完成绑定校验后的 PPI 令牌调用。
- vpa
- upiId
- kycStatus
- minKyc
- fullKyc
- walletStatus
- digitalAccount
- perTransactionLimit
- dailyLimit
- deviceId
- deviceToken
POST /v1/ppi/upi/profile HTTP/1.1 Authorization: Bearer <ppi-token> Content-Type: application/json { "deviceId": "a1b2c3d4e5f6", "deviceToken": "dev-tok-88" }{ "vpa": "staff.neha@wallet", "upiId": "staff.neha@wallet", "kycStatus": "MIN_KYC", "minKyc": true, "fullKyc": false, "walletStatus": "ACTIVE", "digitalAccount": "CBW-998877", "perTransactionLimit": "10000.00", "dailyLimit": "50000.00" }依据设备绑定与 UPI PIN 设置流程重构
核验企业 GSTIN
POST
/v1/business/kyc/gstin/verifyopendata在企业注册过程中查询 GSTIN,使应用在钱包激活与员工放款前附上法定名称、商号与商户类别。
认证方式: Authorization Bearer 使用 OTP 校验调用返回的 accessToken。
- gstin
- businessName
- tradeName
- mcc
- kycStatus
POST /v1/business/kyc/gstin/verify HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "gstin": "07AABCU9603R1ZX", "businessId": "biz-10482" }{ "gstin": "07AABCU9603R1ZX", "businessName": "Noida Packers Private Limited", "tradeName": "Noida Packers", "mcc": "4214", "kycStatus": "MIN_KYC" }依据企业注册的 GSTIN 步骤重构与企业 KYC 证件上传流程配套
列出企业往来方
GET
/v1/business/partiesopendata返回已关联到企业的供应商与员工——VPA、银行账户与 GSTIN——Scan & Pay 与充值申请无需重复输入即可选择交易对手。
认证方式: Authorization Bearer 使用 OTP 校验调用返回的 accessToken。
- partyId
- partyName
- upiId
- phoneNumber
- gstin
- ifsc
- accountNumber
- bankName
- beneficiaryName
GET /v1/business/parties?businessId=biz-10482 HTTP/1.1 Authorization: Bearer <accessToken>{ "parties": [ { "partyId": "pty-441", "partyName": "Metro Cash & Carry", "upiId": "metro@okicici", "phoneNumber": "9810012345", "gstin": "07AABCU9603R1ZX", "ifsc": "HDFC0000123", "accountNumber": "502000112233", "bankName": "HDFC Bank", "beneficiaryName": "Metro Cash And Carry India" } ] }依据 Scan & Pay 背后的往来方选择器重构银行账户字段与收款人表单一致
列出员工充值申请
GET
/v1/wallet/topupsopenfinance列出店主审批或驳回的待处理与历史员工钱包充值;同一流程驱动向预付费钱包的放款。
认证方式: Authorization Bearer 使用 OTP 校验调用返回的 accessToken。审批需要店主/管理员角色。
- rechargeRequestId
- memberId
- digitalAccount
- amount
- currency
- approvalStatus
- remarks
- bookId
- bookName
GET /v1/wallet/topups?businessId=biz-10482&status=PENDING HTTP/1.1 Authorization: Bearer <accessToken>{ "requests": [ { "rechargeRequestId": "RR-77881", "memberId": "usr-neha", "digitalAccount": "CBW-998877", "amount": "5000.00", "currency": "INR", "approvalStatus": "PENDING", "remarks": "Site visit — Gurugram", "bookId": "book-22", "bookName": "Petty cash — North" } ] }依据店主的员工充值审批队列重构
处理 UPI 收款请求
POST
/v1/ppi/upi/collectopenfinance针对员工钱包接受或支付一笔 UPI 收款请求——即 Scan & Pay / 请求收款路径,UTR 确认后记入账目。
认证方式: Bearer 来自 PPI 令牌调用;UPI PIN 在发行方桥接页输入。
- upiId
- txnAmount
- remarks
- deviceId
- txnId
- txnStatus
- utr
- rrn
- collectRequest
- payeeName
POST /v1/ppi/upi/collect HTTP/1.1 Authorization: Bearer <ppi-token> Content-Type: application/json { "upiId": "vendor@okhdfcbank", "txnAmount": "2500.00", "remarks": "Invoice 8821", "deviceId": "a1b2c3d4e5f6", "collectRequest": true }{ "txnId": "UPI-609998877665", "txnStatus": "SUCCESS", "txnAmount": "2500.00", "utr": "609998877665", "rrn": "609998877665", "collectRequest": true, "payeeName": "Noida Packers" }依据请求收款与 Scan & Pay 流程重构与应用内置的扫码组件一致
签发 UPI PPI API 令牌
POST
/v1/ppi/auth/tokenopenfinance在员工钱包 OTP 会话建立后,签发供 UPI 资料、历史、余额与付款/收款调用使用的预付费账户令牌。
认证方式: 在 OTP 钱包登录之后调用。请求体携带 deviceId;返回的 Bearer 是 UPI 与账户管理调用的必备凭证。
- accessToken
- tokenType
- digitalAccount
- deviceId
POST /v1/ppi/auth/token HTTP/1.1 Content-Type: application/json Authorization: Bearer <accessToken> { "deviceId": "a1b2c3d4e5f6", "digitalAccount": "CBW-998877" }{ "accessToken": "ppi-tok-88", "tokenType": "Bearer", "digitalAccount": "CBW-998877", "deviceId": "a1b2c3d4e5f6" }依据钱包登录之后的令牌交换流程重构
读取员工钱包消费限额
GET
/v1/wallet/limitsopenbanking返回员工钱包限额界面展示的按日与按笔预付费上限,独立于实时余额快照。
认证方式: Authorization Bearer 使用 OTP 校验调用返回的 accessToken。
- digitalAccount
- dailyLimit
- perTransactionLimit
- limitAmount
- currency
- walletStatus
GET /v1/wallet/limits HTTP/1.1 Authorization: Bearer <accessToken>{ "digitalAccount": "CBW-998877", "dailyLimit": "50000.00", "perTransactionLimit": "10000.00", "limitAmount": "50000.00", "currency": "INR", "walletStatus": "ACTIVE" }依据钱包限额界面重构
发起员工钱包 UPI 付款
POST
/v1/ppi/upi/payopenfinance从员工预付费钱包向一个 VPA 扣款(Scan & Pay 或手动输入的 UPI ID),返回随后落入账目的 UTR/RRN。
认证方式: Bearer 来自设备绑定后的 PPI 令牌调用;UPI PIN 在发行方桥接页输入。
- upiId
- txnAmount
- remarks
- deviceId
- digitalAccount
- txnId
- txnStatus
- payeeName
- utr
- rrn
POST /v1/ppi/upi/pay HTTP/1.1 Authorization: Bearer <ppi-token> Content-Type: application/json { "upiId": "metro@okicici", "txnAmount": "499.00", "remarks": "Packaging material", "deviceId": "a1b2c3d4e5f6", "digitalAccount": "CBW-998877" }{ "txnId": "UPI-609912345678", "txnStatus": "SUCCESS", "txnAmount": "499.00", "upiId": "metro@okicici", "payeeName": "Metro Cash & Carry", "utr": "609912345678", "rrn": "609912345678" }依据 Scan & Pay 确认流程重构VPA 校验与收款方输入界面一致
向员工钱包放款
POST
/v1/wallet/topups/disburseopenfinance在充值申请获批后,将公司钱包备付金划入员工预付费钱包——这是充值申请列表的店主侧对应操作。
认证方式: Authorization Bearer 使用 OTP 校验调用返回的 accessToken。需要店主/管理员角色。
- businessId
- memberId
- digitalAccount
- amount
- currency
- rechargeRequestId
- remarks
- txnStatus
- approvalStatus
POST /v1/wallet/topups/disburse HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "businessId": "biz-10482", "memberId": "usr-neha", "digitalAccount": "CBW-998877", "amount": "5000.00", "currency": "INR", "rechargeRequestId": "RR-77881", "remarks": "Site visit — Gurugram" }{ "rechargeRequestId": "RR-77881", "txnStatus": "SUCCESS", "amount": "5000.00", "currency": "INR", "digitalAccount": "CBW-998877", "approvalStatus": "APPROVED", "memberId": "usr-neha" }依据已批充值背后的店主放款流程重构
数据类别
- 余额
- 交易
- UPI
- KYC
- 往来方
- 钱包
- 充值申请
数据使用场景与案例
将员工 UPI 支出对账入账
夜间任务读取员工钱包余额并分页拉取账目记录,再把 utr、rrn、txnId 与 Tally 或 Zoho Books 的账目行逐笔匹配,零用金账簿无需截图传话即可结账。
开通经 GSTIN 核验的企业钱包
企业 KYC 流程提交 gstin 进行核验,随后持续关注 minKyc、fullKyc 与公司钱包余额,财务只有在 GSTIN 与 MCC 备案后才发放员工钱包。
审批外勤员工充值申请
运营看板列出仍待审批(PENDING)的充值申请(rechargeRequestId、memberId、amount),并将同一批 id 推送至放款流程,现场工程师不经手现金即可收到 UPI 备用金。
为审计同步 NPCI UPI 历史
合规团队从预付费账户端点拉取设备绑定的 UPI 历史与钱包资料(vpa、dailyLimit、kycStatus),用于对照账本核实员工支出凭证。
常见问题
哪些 CashBook 端点返回钱包余额?
GET /v1/wallets/staff/balance 返回员工预付费钱包(walletBalance、closingBalance、dailyLimit、perTransactionLimit)。GET /v1/business/account/balance 是为这些钱包注资的公司数字账户。POST /v1/ppi/accounts/balance 读取同一预付费账户的发行方侧台账,包括 kycStatus 与 custbalanceStatus。
CashBook 如何认证支付调用?
客户端先把 phoneNumber 提交到 POST /v1/wallet/auth/otp/start,再在 POST /v1/wallet/auth/otp/verify 确认短信验证码。返回的 accessToken 作为 Authorization Bearer 随钱包与企业调用发送。UPI 付款与收款还额外使用 POST /v1/ppi/auth/token 签发的设备绑定预付费令牌。
能否获取 UPI 交易历史,而不仅是账目记录?
可以。POST /v1/ppi/upi/transactions 返回绑定设备的发行方侧记录(txnId、utr、rrn、upiId、collectRequest)。GET /v1/wallet/ledger/entries 是同一支出的账本视图,额外提供 bookName、categoryId 与现金流入/流出合计。
GSTIN 核验在哪个环节进行?
在企业注册过程中,应用将 gstin 提交到 POST /v1/business/kyc/gstin/verify,并在钱包激活前存下 businessName、tradeName、mcc 与 kycStatus,因此员工放款只会在企业身份备案后才开始。
与 CashBook - Balance & Expense 相似的应用
- Khatabook — Khatabook 是印度的数字记账应用,小商家用手机就能记录客户赊账(udhaar)、开票和收款,取代纸质账本。
- OkCredit — OkCredit 是面向印度商家的免费数字账本应用,用手机跟踪赊账余额和还款提醒,替代纸质赊账登记簿。
- Vyapar Invoice GST Billing App — Vyapar 为印度中小企业提供 GST 开票、记账和库存管理,与 OkCredit 一起被列为 Khatabook 在数字记账领域的竞争对手。
- BharatPe for Business — BharatPe for Business 是面向印度商户的收款应用,提供 UPI 收款码,方便商家接收顾客付款并跟踪到账记录。
- Paytm — Paytm 是印度主要的 UPI 支付应用之一,在个人和商户支付市场与 PhonePe、Google Pay、BharatPe 同台竞争。
- TallyPrime — TallyPrime 是印度中小企业长期使用的会计软件,用于管理现金账、分类账和 GST 记录。
相关主题
- CashBook API
- 员工 UPI 钱包
- Obopay PPI
- 账本交易
- GSTIN 核验
- 充值申请
- 印度中小企业现金账
需要集成这个 App 的数据 API?
我们可为任意指定 App 交付定制集成——源码交付 USD 500 起,或托管 API 按调用计费。告诉我们您需要的数据即可。
- 每个项目均签 NDA 与 SOW
- 3–7 天交付
- 验收通过后才付款
- 仅在授权范围内作业