Konnash 记账数据 API:账本、钱包与账单
inyad Konnash: Bookkeeping App 是摩洛哥金融科技公司 inyad Inc. 推出的商户记账应用,用来取代摩洛哥小店记录顾客赊欠的纸质赊账本。它的赊账本为每位欠款客户和每家供应商维护滚动余额,逐笔记下赊出或还款并可附上收据照片,店主可以给客户打标签、设定收款日期并自动发送提醒;断网时照常记账,联网后自动同步。独立的现金账按具名钱箱和支出类别核对收银台,与客户赊账分开管理,一个商户账号下还可容纳多名用户和多家门店。内置的 inyad Pay 钱包把资金往来放到账本旁边:钱包首页在钱包密码之后显示余额和绑定的银行账户,转账先报出手续费、再用操作 PIN 确认,也支持收款人凭取现码领取现金的汇款,此外还有钱包充值,以及可分享的支付链接,让客户远程结清欠款。缴费柜台让店主从账单机构目录中查询并代缴水电等公用事业账单,每笔缴费可赚取佣金;身份证件审核通过后,才会开放更大金额的钱包与缴费服务。Konnash 面向摩洛哥以赊销为主的商户,把小店变成记账台兼本地收付点;在本土市场它与 CHARI.MA 的 Karny 竞争,放眼更大范围则与 OkCredit、Khatabook、DigiKhata 等电子赊账本同台。
欠款客户与供应商档案是这套账本的骨架:每条客户记录带有滚动余额 totalAmount、供应商标记 isSupplier、收款日期 collectionDate 及其自动提醒开关 autoReminder、phone 与 city 等联系字段,以及离线同步标记 isSynchronized 和 modificationDate。赊账分录通过 customerUuid 挂在客户名下,每笔都有金额 amount、收支方向 isIn、日期 date、记账门店 storeUuid、归档状态,收据照片以 imageUrl 返回。现金账流水沿用同样的金额加方向结构,但以 drawerUuid 和 cashbookCategoryUuid 为键,形成与客户赊账分开的收银台流水。
inyad Pay 记录补上了流动中的资金:钱包的 balanceInCents、currency 与绑定的 bankAccountNumber;每笔汇款报出的 feesAmountInCents;先预留的 walletTransactionReference,执行后得到 transactionId,取现汇款还会针对收款人 beneficiary.cin 生成 cashPickUpCode;充值以 cashInReference 跟踪;支付链接带有 paymentLinkUrl、expirationDate 和 areFeesOnPayer。缴费部分包括带 kycLevel 与 countryCode 的账单机构目录,按 bills.amountInCents、bills.dueDate、bills.customerName 逐张列出、并附 isPartialPayment 规则的未缴账单,以及返回 operationStatus、merchantCommissionAmountInCents 和 billsReceipt 的缴费结果。身份核验则按 financial_service_type 与金额报告 documents.status。
会计与 ERP 集成商用客户和赊账分录记录,每晚把小店的赊账本镜像进它的财务系统。收款工具把手续费报价、预留转账编号和执行结果串起来,在客户结清时从钱包向收款人付款。收银系统开发者在柜台搭建公用事业缴费台:查询用户的未缴账单、完成缴费,并把商户佣金记入收银台;合规流程则在每份必需证件都显示 APPROVED 之前拦住大额钱包汇款。openData Studio 把这些赊账、现金账、钱包与缴费记录变成可调用的开放数据。
应用截图
API 端点一览
以下端点与请求/响应示例均依据应用界面推导重构,为示意说明,并非实际抓包。
建立商户会话
POST
/v1/session/bootstrapopenfinance开启 Konnash 移动会话,返回用于水合本地账簿的商户快照:令牌、账户、客户、赊账分录、现金账行、抽屉、钱包账户、缴费机构与支付链接。
认证方式: Authorization Bearer 令牌(Firebase/会话)加 Accept-Language 请求头;响应签发后续调用所用的 accessToken 与 refreshToken。
- accessToken
- refreshToken
- newAccount
- account.id
- account.accountReference
- account.name
- account.subscriptionPlanId
- customers
- transactions
- cashbookTransactions
- drawers
- walletAccounts
- billers
- paymentLinks
- payoutChannels
- users
POST /v1/session/bootstrap HTTP/1.1 Authorization: Bearer <firebase-or-prior-accessToken> Accept-Language: en{ "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example", "refreshToken": "rt_8c21f0ab", "newAccount": false, "account": { "id": 10482, "accountReference": "ACC-EG-10482", "name": "Cairo Grocery", "creationDate": 1719926400000, "modificationDate": 1758960000000, "expirationDate": 1790496000000, "subscriptionPlanId": 3 }, "customers": [{"uuid": "c-1a2b", "firstName": "Mona", "lastName": "Said", "phone": "+201001111111", "totalAmount": 1250.5}], "transactions": [{"uuid": "t-9c3d", "amount": 250.0, "isIn": true, "customerUuid": "c-1a2b"}], "cashbookTransactions": [], "drawers": [{"uuid": "d-aa01", "name": "Front till", "status": "OPEN"}], "walletAccounts": [{"phone": "+201000000001", "balanceInCents": 540000, "currency": "EGP", "status": "ACTIVE"}], "billers": [{"code": "EEHC", "displayName": "Electricity", "countryCode": "EG"}], "paymentLinks": [], "payoutChannels": [], "users": [] }同步赊账客户
POST
/v1/ledger/customers/syncopendata推送离线创建的赊账客户(欠款人与供应商),并接收服务端 id、滚动 totalAmount 与同步标记,使商户账本无需持续联网也能工作。
认证方式: Bearer accessToken,来自 POST /v1/session/bootstrap。
- uuid
- firstName
- lastName
- phone
- emailAddress
- address
- city
- country
- notes
- totalAmount
- isSupplier
- autoReminder
- collectionDate
- situationReference
- customerTagUuids
- userUuid
- deleted
- isSynchronized
- modificationDate
POST /v1/ledger/customers/sync HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json [ { "uuid": "c-1a2b3c4d", "firstName": "Mona", "lastName": "Said", "phone": "+201001111111", "emailAddress": "[email protected]", "address": "12 Tahrir St", "city": "Cairo", "country": "EG", "notes": "Weekly bread account", "totalAmount": 1250.5, "isSupplier": false, "autoReminder": true, "collectionDate": "2026-10-01", "situationReference": "SIT-88", "customerTagUuids": ["tag-retail"], "userUuid": "u-merchant-1", "deleted": false, "isSynchronized": false, "modificationDate": 1758960000000 } ]{ "items": [ { "id": 55120, "uuid": "c-1a2b3c4d", "firstName": "Mona", "lastName": "Said", "phone": "+201001111111", "emailAddress": "[email protected]", "city": "Cairo", "country": "EG", "totalAmount": 1250.5, "isSupplier": false, "situationReference": "SIT-88", "userId": 10482, "userUuid": "u-merchant-1", "isSynchronized": true, "modificationDate": 1758960120000 } ] }同步赊账分录
POST
/v1/ledger/entries/syncopenfinance上传针对某客户的赊/借分录行(multipart 形式,可随附收据照片),并返回服务端 id 与赊账账本所用的 imageUrl。
认证方式: Bearer accessToken,来自 POST /v1/session/bootstrap。
- uuid
- amount
- isIn
- date
- notes
- customerId
- customerUuid
- storeId
- storeUuid
- isArchived
- archivalDate
- imageBody
- imageUrl
- deleted
- isSynchronized
POST /v1/ledger/entries/sync HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: multipart/form-data { "uuid": "t-9c3d", "amount": 250.0, "isIn": true, "date": "2026-09-27", "notes": "Partial collection", "customerUuid": "c-1a2b3c4d", "storeUuid": "st-main", "isArchived": false, "imageUrl": null, "deleted": false, "isSynchronized": false }{ "items": [ { "id": 88011, "uuid": "t-9c3d", "amount": 250.0, "isIn": true, "date": "2026-09-27", "notes": "Partial collection", "customerId": 55120, "customerUuid": "c-1a2b3c4d", "storeId": 12, "storeUuid": "st-main", "isArchived": false, "imageUrl": "https://cdn.example/tx/t-9c3d.jpg", "isSynchronized": true, "modificationDate": 1758960400000 } ] }同步现金账交易
POST
/v1/cashbook/movements/syncopenfinance按指定抽屉与现金账分类同步现金收支,使收银抽屉可独立于赊账账本来对账。
认证方式: Bearer accessToken,来自 POST /v1/session/bootstrap。
- uuid
- amount
- isIn
- date
- notes
- drawerId
- drawerUuid
- cashbookCategoryId
- cashbookCategoryUuid
- deleted
- isSynchronized
- modificationDate
POST /v1/cashbook/movements/sync HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: multipart/form-data { "uuid": "cb-44ee", "amount": 80.0, "isIn": false, "date": "2026-09-27", "notes": "Change float", "drawerUuid": "d-aa01", "cashbookCategoryUuid": "cat-opex", "deleted": false, "isSynchronized": false }{ "items": [ { "id": 22019, "uuid": "cb-44ee", "amount": 80.0, "isIn": false, "date": "2026-09-27", "notes": "Change float", "drawerId": 3, "drawerUuid": "d-aa01", "cashbookCategoryId": 7, "cashbookCategoryUuid": "cat-opex", "isSynchronized": true, "modificationDate": 1758960500000 } ] }解锁 inyad Pay 钱包
POST
/v1/wallet/unlockopenbanking在付款、提现或充值执行前,用商户钱包密码为 inyad Pay 操作把关。
认证方式: Bearer accessToken 来自会话引导,请求体另附钱包密码。
- password
- status
POST /v1/wallet/unlock HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "password": "********" }{ "status": "OK" }读取钱包账户
GET
/v1/wallet/accountopenbanking读取商户 inyad Pay 钱包:钱包首页展示的 balanceInCents、currency、phone、status 与绑定的 bankAccountNumber。
认证方式: Bearer accessToken,来自 POST /v1/session/bootstrap。
- id
- phone
- type
- status
- balanceInCents
- currency
- customerFullName
- customerFirstName
- customerLastName
- bankAccountNumber
- creationDate
- modificationDate
GET /v1/wallet/account HTTP/1.1 Authorization: Bearer <accessToken>{ "id": 9001, "phone": "+201000000001", "type": "MERCHANT", "status": "ACTIVE", "balanceInCents": 540000, "currency": "EGP", "customerFullName": "Cairo Grocery", "customerFirstName": "Cairo", "customerLastName": "Grocery", "bankAccountNumber": "000123456789", "creationDate": 1719926400000, "modificationDate": 1758960000000 }发起钱包交易
POST
/v1/wallet/transfers/prepareopenbanking预留一笔钱包划转并返回 walletTransactionReference,后续付款或提现调用必须随操作 PIN 一并出示。
认证方式: Bearer accessToken 来自会话引导;需先完成钱包解锁。
- amountInCents
- customerUuid
- destinationAccountNumber
- destinationBankCode
- inyadPayReceptionMode
- inyadPayService
- notes
- paymentRequestReference
- walletTransactionReference
POST /v1/wallet/transfers/prepare HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "amountInCents": 150000, "customerUuid": "c-1a2b3c4d", "destinationAccountNumber": "000123456789", "destinationBankCode": "NBE", "inyadPayReceptionMode": "WALLET", "inyadPayService": "P2P", "notes": "Settle Mona ledger", "paymentRequestReference": null }{ "walletTransactionReference": "wtx-9f2a1c" }从 inyad Pay 钱包付款
POST
/v1/wallet/transfers/executeopenbanking执行先前发起的 inyad Pay 转账,付给收款人(身份证件号、姓名、手机号),并返回 status、transactionId 与可选的现金自取码。
认证方式: Bearer accessToken 来自会话引导,请求体另附 pin 与 operationPin。
- beneficiary.cin
- beneficiary.firstName
- beneficiary.lastName
- beneficiary.phoneNumber
- operationPin
- pin
- walletTransactionReference
- status
- transactionId
- cashPickUpCode
- cashPickUpReference
POST /v1/wallet/transfers/execute HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "beneficiary": { "cin": "A123456789", "firstName": "Ahmed", "lastName": "Hassan", "phoneNumber": "+201009998887" }, "operationPin": "2580", "pin": "1470", "walletTransactionReference": "wtx-9f2a1c" }{ "status": "COMPLETED", "transactionId": 4412901, "walletTransactionReference": "wtx-9f2a1c", "cashPickUpCode": "CP-8821", "cashPickUpReference": "CPR-8821" }inyad Pay 钱包充值
POST
/v1/wallet/depositsopenbanking为商户钱包发起一笔入金,返回 cashInReference 及付款人可打开为账户充值的 paymentLink。
认证方式: Bearer accessToken,来自 POST /v1/session/bootstrap。
- amountInCents
- status
- cashInReference
- paymentLink.reference
- paymentLink.amountInCents
- paymentLink.currency
- paymentLink.status
- paymentLink.paymentLinkUrl
POST /v1/wallet/deposits HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "amountInCents": 200000 }{ "status": "PENDING", "cashInReference": "CIN-4402", "paymentLink": { "reference": "PL-topup-4402", "amountInCents": 200000, "currency": "EGP", "status": "OPEN", "paymentLinkUrl": "https://pay.example/pl/PL-topup-4402" } }钱包转账手续费询价
POST
/v1/wallet/transfers/quoteopenbanking在商户确认付款或提现前,为 inyad Pay 转账报出 feesAmountInCents 与 currency。
认证方式: Bearer accessToken,来自 POST /v1/session/bootstrap。
- amountInCents
- InyadPayReceptionMode
- recipientPhoneNumber
- walletService
- currency
- feesAmountInCents
POST /v1/wallet/transfers/quote HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "amountInCents": 150000, "InyadPayReceptionMode": "WALLET", "recipientPhoneNumber": "+201009998887", "walletService": "P2P" }{ "currency": "EGP", "feesAmountInCents": 750 }创建支付链接
POST
/v1/checkout/linksopenbanking为赊账余额创建可分享的支付链接,让客户远程付款;返回 paymentLinkUrl、reference 与 status。
认证方式: Bearer accessToken,来自 POST /v1/session/bootstrap。
- id
- reference
- amountInCents
- currency
- countryCode
- language
- status
- paymentLinkUrl
- customerId
- areFeesOnPayer
- isInactive
- deleted
- expirationDate
- paymentRequestType
- paymentRequestId
POST /v1/checkout/links HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "reference": "PL-mona-1250", "amountInCents": 125000, "currency": "EGP", "countryCode": "EG", "language": "ar", "expirationDate": 1760553600000, "customerId": 55120, "areFeesOnPayer": true, "isInactive": false, "deleted": false, "paymentRequestType": "PAYMENT_LINK", "status": "OPEN" }{ "id": 33108, "reference": "PL-mona-1250", "amountInCents": 125000, "currency": "EGP", "countryCode": "EG", "language": "ar", "status": "OPEN", "paymentLinkUrl": "https://pay.example/pl/PL-mona-1250", "customerId": 55120, "areFeesOnPayer": true, "isInactive": false, "expirationDate": 1760553600000 }列出缴费机构
GET
/v1/billpay/providersopendata返回账单缴费目录(公用事业等),含 code、displayName、kycLevel 与 countryCode,用于发起未缴账单查询。
认证方式: Bearer accessToken,来自 POST /v1/session/bootstrap。
- code
- displayName
- displayNameCode
- fullName
- category
- countryCode
- description
- kycLevel
- logoUrl
- status
- websiteUrl
GET /v1/billpay/providers HTTP/1.1 Authorization: Bearer <accessToken>[ { "code": "EEHC", "displayName": "Electricity", "displayNameCode": "biller.eehc", "fullName": "Egyptian Electricity Holding Company", "category": "UTILITIES", "countryCode": "EG", "description": "Electricity bills", "kycLevel": "L1", "logoUrl": "https://cdn.example/billers/eehc.png", "status": "ACTIVE", "websiteUrl": "https://www.eehc.gov.eg" } ]查询未缴账单
POST
/v1/billpay/invoices/lookupopenfinance按缴费机构账户查询未缴公用事业账单,并在缴费前返回每张账单的 amountInCents、dueDate、customerName 与手续费字段。
认证方式: Bearer accessToken,来自 POST /v1/session/bootstrap。
- billingRequestId
- requestId
- billRefNumber
- billSelectType
- billsPaymentRule
- status
- totalAmountInCents
- feesAmountInCents
- feeType
- isPartialPayment
- bills.billNumber
- bills.amountInCents
- bills.currency
- bills.customerName
- bills.dueDate
- bills.deadlineDate
POST /v1/billpay/invoices/lookup HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "billingRequestId": "8f14e45f-ea52-4c6b-9b1b-1c9a4d2e7a01", "formWizard": { "billerCode": "EEHC", "accountNumber": "314159265" } }{ "requestId": "br-4401", "billingRequestId": "8f14e45f-ea52-4c6b-9b1b-1c9a4d2e7a01", "billRefNumber": "EEHC-314159265", "billSelectType": "MULTI", "billsPaymentRule": "ANY", "status": "OK", "totalAmountInCents": 48500, "feesAmountInCents": 250, "feeType": "FLAT", "feePercentage": 0.0, "isPartialPayment": false, "additionalMessage": null, "bills": [ { "billNumber": "2026-09-01", "billRefNumber": "EEHC-314159265-09", "label": "September electricity", "type": "ELECTRICITY", "amountInCents": 48500, "currency": "EGP", "customerName": "Cairo Grocery", "customerAddress": "12 Tahrir St", "dueDate": "2026-10-05", "deadlineDate": "2026-10-15", "issueDate": "2026-09-01", "feesAmountInCents": 250, "penaltyAmountInCents": 0, "isRequired": true } ] }缴纳未缴账单
POST
/v1/billpay/invoices/settleopenbanking缴纳选中的未缴账单,并返回 operationStatus、merchantCommissionAmountInCents 与商户留存的 billsReceipt。
认证方式: Bearer accessToken,来自 POST /v1/session/bootstrap。
- billingRequestId
- billRefNumber
- totalAmountInCents
- feesAmountInCents
- bills
- operationStatus
- status
- merchantCommissionAmountInCents
- billsReceipt
POST /v1/billpay/invoices/settle HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "billingRequestId": "8f14e45f-ea52-4c6b-9b1b-1c9a4d2e7a01", "billRefNumber": "EEHC-314159265", "totalAmountInCents": 48500, "feesAmountInCents": 250, "bills": [ { "billNumber": "2026-09-01", "billRefNumber": "EEHC-314159265-09", "amountInCents": 48500, "currency": "EGP" } ] }{ "billingRequestId": "8f14e45f-ea52-4c6b-9b1b-1c9a4d2e7a01", "operationStatus": "SUCCESS", "status": "OK", "merchantCommissionAmountInCents": 150, "billsReceipt": { "receiptNumber": "RCPT-9912" } }读取 KYC 核验状态
POST
/v1/identity/verification/statusopenfinance按 financial_service_type 与金额检查哪些 KYC 证件已通过或仍在审核,以便对钱包与账单缴费功能设限。
认证方式: Bearer accessToken,来自 POST /v1/session/bootstrap。
- financial_service_type
- amountInCents
- currency
- documents.type
- documents.status
POST /v1/identity/verification/status HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "financial_service_type": "WALLET", "amountInCents": 150000, "currency": "EGP" }{ "documents": [ {"type": "NATIONAL_ID_FRONT", "status": "APPROVED"}, {"type": "NATIONAL_ID_BACK", "status": "APPROVED"}, {"type": "SELFIE", "status": "PENDING"} ] }
数据类别
- 账户余额
- 交易记录
- 客户
- 账单
- KYC 核验
数据使用场景与案例
赊账账本与 ERP 对账
夜间任务从 /v1/ledger/customers/sync 与 /v1/ledger/entries/sync 拉取客户与赊账分录(uuid、totalAmount、isIn、customerUuid),并写入商户的会计系统。
从账本发起钱包付款
收款机器人先调用 /v1/wallet/transfers/quote 询价,再调用 /v1/wallet/transfers/prepare 预留转账;当客户以提现方式结清时,携带收款人 cin/手机号与 walletTransactionReference 提交 /v1/wallet/transfers/execute。
店内公用事业缴费柜台
柜台流程先列出 /v1/billpay/providers,再按缴费账户查询 /v1/billpay/invoices/lookup,最后经 /v1/billpay/invoices/settle 完成缴纳,并把 merchantCommissionAmountInCents 记入收银抽屉。
大额转账前的 KYC 闸门
在进行高金额 amountInCents 转账前,应用以 financial_service_type 为 WALLET 调用 /v1/identity/verification/status,在 documents[].status 变为 APPROVED 前阻止付款。
常见问题
Konnash API 暴露哪些数据?
会话引导调用会水合商户快照:customers、赊账分录、现金账行、drawers、walletAccounts、billers 与 paymentLinks。随后的增量同步端点再把这些实体的本地修改推送上去。
inyad Pay 如何转账?
钱包解锁后,客户端先查询手续费,调用 /v1/wallet/transfers/prepare 获取 walletTransactionReference,再向 /v1/wallet/transfers/execute 提交收款人 cin、姓名、phoneNumber、pin 与 operationPin。
Konnash 能查询公用事业账单吗?
可以。/v1/billpay/providers 列出缴费目录;/v1/billpay/invoices/lookup 返回 bills[].amountInCents、dueDate 与 customerName;/v1/billpay/invoices/settle 则缴纳选中的账单。
账本支持离线使用吗?
实体携带 uuid、deleted、isSynchronized 与 modificationDate。应用先本地写入,待网络恢复后再提交 /v1/ledger/customers/sync、/v1/ledger/entries/sync 与 /v1/cashbook/movements/sync。
与 inyad Konnash: Bookkeeping App 相似的应用
- Karny — Karny 是 CHARI.MA 在摩洛哥做的免费数字赊账本,供商户在安卓上记录客户欠款。
- OkCredit — OkCredit 是面向小店的电子账本,基础版可记录不限数量的客户与赊账分录、发送收款提醒,并把分录备份到网上。
- Khatabook — Khatabook 是面向小微商户的记账应用,常与 Konnash 一同被列为记录客户赊欠与还款的电子账本。
- DigiKhata — DigiKhata 面向个人和小微商户,可建立不限数量的客户/供应商分户账,并用现金日记账记录收支。
- Daftra — Daftra 是面向中小企业的云会计套件,把开票、收款、账务、库存和现金流放在同一平台。
- Qoyod — Qoyod 是面向企业主和会计的一体化云会计软件,覆盖发票、库存和财务报表。
- FreshBooks — FreshBooks 是用于开票、账单、收款和工资的会计软件,常被当作比简易商户账本功能更完整的替代。
相关主题
- Konnash 数据 API
- inyad Konnash 端点
- Konnash 客户账本同步
- inyad Pay 钱包付款
- Konnash 现金账交易
- Konnash 未缴账单
- Konnash 支付链接
- Konnash KYC 核验状态
需要集成这个 App 的数据 API?
我们可为任意指定 App 交付定制集成——源码交付 USD 500 起,或托管 API 按调用计费。告诉我们您需要的数据即可。
- 每个项目均签 NDA 与 SOW
- 3–7 天交付
- 验收通过后才付款
- 仅在授权范围内作业