inyad Konnash: Bookkeeping App icon

Konnash bookkeeping data API: ledgers, wallet, bills

inyad Inc. · Payments

inyad Konnash: Bookkeeping App is the merchant ledger from Moroccan fintech inyad Inc., built to replace the paper credit notebook that small shops in Morocco use to track what customers owe them. Its credit book keeps a running balance for every debtor and every supplier, logs each credit or repayment with an optional receipt photo, lets the owner tag customers and set a collection date with automatic reminders, and keeps working offline, syncing once the network returns. A separate cashbook reconciles the till by named cash drawer and expense category, independently of customer credit, and one merchant account can hold several users and stores. The built-in inyad Pay wallet puts money movement next to the books: a wallet home screen showing the balance and linked bank account behind a wallet password, fee-quoted transfers confirmed with an operation PIN, including sends a recipient collects as cash with a pickup code, wallet top-ups, and shareable payment links that let a customer settle an outstanding balance remotely. A bill-pay counter lets the shopkeeper look up and pay utility bills from a catalog of billers and keep a commission on each payment, while identity-document verification unlocks wallet and bill-pay services for larger amounts. Konnash serves Moroccan merchants who sell on credit and turns the shop into both a bookkeeping desk and a local payment point; in its home market it competes with Karny from CHARI.MA, and more broadly with digital credit ledgers such as OkCredit, Khatabook and DigiKhata.

Debtor and supplier records anchor the books: each customer row carries a running totalAmount, an isSupplier flag, a collectionDate with its autoReminder switch, contact fields such as phone and city, and offline-sync markers isSynchronized and modificationDate. Credit-book lines hang off that row by customerUuid, each with an amount, an isIn direction, a date, the storeUuid it was recorded in, archival state and a receipt photo returned as imageUrl. Cashbook movements use the same amount-and-direction shape but key on drawerUuid and cashbookCategoryUuid, giving a till ledger kept apart from customer credit.

The inyad Pay records add money in motion: the wallet's balanceInCents, currency and linked bankAccountNumber; a quoted feesAmountInCents per send; a reserved walletTransactionReference that resolves into a transactionId and, for cash pickup, a cashPickUpCode against the beneficiary's beneficiary.cin; top-ups tracked by cashInReference; and payment links with paymentLinkUrl, expirationDate and areFeesOnPayer. Bill-pay adds a biller catalog with kycLevel and countryCode, unpaid bills itemised by bills.amountInCents, bills.dueDate and bills.customerName with an isPartialPayment rule, and settlements returning operationStatus, merchantCommissionAmountInCents and a billsReceipt. Identity checks report documents.status per financial_service_type and amount.

Accounting and ERP integrators use the customer and credit-line records to mirror a shop's credit book into its books every night. Collections tools chain the fee quote, the reserved transfer reference and the executed payout to pay a beneficiary out of the wallet when a customer settles. Point-of-sale builders run a utility bill desk at the counter that looks up a subscriber's unpaid bills, settles them and posts the merchant commission to the till, and compliance flows hold large wallet sends until every required document reads APPROVED. openData Studio turns these credit-book, cashbook, wallet and bill-pay records into callable open data.

Screenshots

  • inyad Konnash: Bookkeeping App screenshot 1
  • inyad Konnash: Bookkeeping App screenshot 2
  • inyad Konnash: Bookkeeping App screenshot 3
  • inyad Konnash: Bookkeeping App screenshot 4
  • inyad Konnash: Bookkeeping App screenshot 5
  • inyad Konnash: Bookkeeping App screenshot 6
  • inyad Konnash: Bookkeeping App screenshot 7
  • inyad Konnash: Bookkeeping App screenshot 8

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • Connect merchant session

    POST /v1/session/bootstrap openfinance

    Opens a Konnash mobile session and returns the merchant snapshot used to hydrate local books: tokens, account, customers, credit-book transactions, cashbook rows, drawers, wallet accounts, billers and payment links.

    Auth: Authorization Bearer token (Firebase/session) plus Accept-Language; response issues accessToken and refreshToken used on later calls.

    • 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": []
    }
  • Synchronize credit-book customers

    POST /v1/ledger/customers/sync opendata

    Pushes offline-created credit-book customers (debtors and suppliers) and receives server ids, running totalAmount and sync flags so the merchant ledger can work without a constant network.

    Auth: Bearer accessToken from 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
        }
      ]
    }
  • Synchronize credit-book transactions

    POST /v1/ledger/entries/sync openfinance

    Uploads credit/debit lines against a customer (multipart so receipt photos can ride along) and returns server ids plus imageUrl for the credit book.

    Auth: Bearer accessToken from 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
        }
      ]
    }
  • Synchronize cashbook transactions

    POST /v1/cashbook/movements/sync openfinance

    Syncs cash in/out against a named drawer and cashbook category so the till can be reconciled independently of the credit book.

    Auth: Bearer accessToken from 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
        }
      ]
    }
  • Unlock inyad Pay wallet

    POST /v1/wallet/unlock openbanking

    Gates inyad Pay operations behind the merchant wallet password before pay, withdraw or topup can run.

    Auth: Bearer accessToken from session bootstrap, plus wallet password in the body.

    • password
    • status
    POST /v1/wallet/unlock HTTP/1.1
    Authorization: Bearer <accessToken>
    Content-Type: application/json
    
    {
      "password": "********"
    }
    {
      "status": "OK"
    }
  • Read wallet account

    GET /v1/wallet/account openbanking

    Reads the merchant inyad Pay wallet: balanceInCents, currency, phone, status and linked bankAccountNumber shown on the wallet home screen.

    Auth: Bearer accessToken from 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
    }
  • Initiate wallet transaction

    POST /v1/wallet/transfers/prepare openbanking

    Reserves a wallet movement and returns walletTransactionReference that subsequent pay or withdraw calls must present with the operation PIN.

    Auth: Bearer accessToken from session bootstrap; wallet unlock required first.

    • 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"
    }
  • Pay from inyad Pay wallet

    POST /v1/wallet/transfers/execute openbanking

    Executes a previously initiated inyad Pay send to a beneficiary (national id, name, phone) and returns status, transactionId and optional cash-pickup codes.

    Auth: Bearer accessToken from session bootstrap, plus pin and operationPin in the body.

    • 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"
    }
  • Top up inyad Pay wallet

    POST /v1/wallet/deposits openbanking

    Starts a cash-in for the merchant wallet and returns cashInReference plus a paymentLink the payer can open to fund the account.

    Auth: Bearer accessToken from 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"
      }
    }
  • Quote wallet transfer fees

    POST /v1/wallet/transfers/quote openbanking

    Quotes feesAmountInCents and currency for an inyad Pay send before the merchant confirms pay or withdraw.

    Auth: Bearer accessToken from 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
    }
  • Create payment link

    POST /v1/checkout/links openbanking

    Creates a shareable payment link for a credit-book balance so the customer can pay remotely; returns paymentLinkUrl, reference and status.

    Auth: Bearer accessToken from 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
    }
  • List billers

    GET /v1/billpay/providers opendata

    Returns the bill-pay catalog (utilities and similar) with code, displayName, kycLevel and countryCode used to start an unpaid-bill lookup.

    Auth: Bearer accessToken from 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"
      }
    ]
  • Fetch unpaid bills

    POST /v1/billpay/invoices/lookup openfinance

    Looks up unpaid utility bills for a biller account and returns each bill's amountInCents, dueDate, customerName and fee fields before payment.

    Auth: Bearer accessToken from 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
        }
      ]
    }
  • Pay unpaid bills

    POST /v1/billpay/invoices/settle openbanking

    Pays selected unpaid bills and returns operationStatus, merchantCommissionAmountInCents and a billsReceipt for the merchant copy.

    Auth: Bearer accessToken from 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"
      }
    }
  • Read KYC verification status

    POST /v1/identity/verification/status openfinance

    Checks which KYC documents are approved or pending for a financial_service_type and amount so wallet and bill-pay features can be gated.

    Auth: Bearer accessToken from 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"}
      ]
    }

Data categories

  • balances
  • transactions
  • customers
  • bills
  • kyc

Where teams use this data

  • Credit-book to ERP reconciliation

    Nightly jobs pull customers and credit-book lines from /v1/ledger/customers/sync and /v1/ledger/entries/sync (uuid, totalAmount, isIn, customerUuid) and post them into the merchant's accounting system.

  • Wallet payout from the ledger

    A collections bot quotes /v1/wallet/transfers/quote, reserves /v1/wallet/transfers/prepare, then posts /v1/wallet/transfers/execute with beneficiary cin/phone and walletTransactionReference when a customer settles in cash-out.

  • Utility bill desk for the shop

    A counter flow lists /v1/billpay/providers, looks up /v1/billpay/invoices/lookup for the subscriber account, and settles via /v1/billpay/invoices/settle, recording merchantCommissionAmountInCents on the till.

  • KYC gate before large transfers

    Before a high amountInCents send, the app calls /v1/identity/verification/status with financial_service_type WALLET and blocks pay until documents[].status is APPROVED.

Frequently asked questions

What data does the Konnash API expose?

A session bootstrap call hydrates the merchant snapshot: customers, credit-book transactions, cashbook rows, drawers, walletAccounts, billers and paymentLinks. Incremental sync endpoints then push local edits for those same entities.

How does inyad Pay send money?

After wallet unlock, the client quotes fees, calls /v1/wallet/transfers/prepare for a walletTransactionReference, then POST /v1/wallet/transfers/execute with beneficiary cin, names, phoneNumber, pin and operationPin.

Can Konnash look up utility bills?

Yes. /v1/billpay/providers lists the catalog; /v1/billpay/invoices/lookup returns bills[].amountInCents, dueDate and customerName; /v1/billpay/invoices/settle settles the selected bills.

Does the ledger work offline?

Entities carry uuid, deleted, isSynchronized and modificationDate. The app writes locally then POSTs /v1/ledger/customers/sync, /v1/ledger/entries/sync and /v1/cashbook/movements/sync when the network is back.

Apps similar to inyad Konnash: Bookkeeping App

  • Karny — Karny is a free digital credit-book app built in Morocco by CHARI.MA for merchants to record customer credit on Android.
  • OkCredit — OkCredit is a digital ledger for small shops: the basic plan records unlimited customers and credit entries, sends payment reminders, and backs entries up online.
  • Khatabook — Khatabook is an app-based bookkeeping tool for small businesses, listed alongside Konnash as a digital ledger for recording customer credit and debit.
  • DigiKhata — DigiKhata is a bookkeeping app for individuals and small businesses, with unlimited customer and supplier ledger accounts plus a cash book for income and expenses.
  • Daftra — Daftra is a cloud accounting suite for SMEs that combines invoicing, payments, accounts, inventory and cashflow in one place.
  • Qoyod — Qoyod is all-in-one cloud accounting software for business owners and accountants, covering invoices, inventory and financial reports.
  • FreshBooks — FreshBooks is accounting software for invoicing, billing, payments and payroll, listed as a fuller-featured alternative to simple merchant ledgers.

Topics

  • Konnash data API
  • inyad Konnash endpoints
  • Konnash customer ledger sync
  • inyad Pay wallet pay
  • Konnash cashbook transactions
  • Konnash unpaid bills
  • Konnash payment links
  • Konnash KYC verification status

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

Get a quote