inyad Konnash: Bookkeeping App icon

Konnash bookkeeping data API: ledgers, wallet, bills

inyad Inc. · Payments

inyad Konnash is an offline-first merchant bookkeeping app whose data API syncs credit-book customers and cash drawers, then moves money through inyad Pay. A session starts at /v1/session/bootstrap, which returns accessToken, refreshToken, customers, ledger entries, drawers and walletAccounts. Later writes go to paths such as /v1/ledger/customers/sync and /v1/wallet/transfers/execute.

inyad Konnash is a merchant bookkeeping app for credit ledgers, cash drawers and inyad Pay wallet transfers. After a session bootstrap the client syncs customers, credit-book entries and cashbook in/out offline, then calls wallet pay/top-up, payment-link collection, unpaid-bill lookup and KYC status when the merchant needs to move money or settle utilities.

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

  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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": []
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's merchant sign-in and first-run account hydration
    • field set mirrors the dashboard snapshot: tokens, account, customers, ledger entries, drawers, wallet accounts, billers and payment links
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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
        }
      ]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's credit-book customer list and its offline-first sync
    • field set mirrors the debtor/supplier edit form and the running-balance column
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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
        }
      ]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's credit-book entry flow with receipt-photo attachment
    • field set mirrors the per-customer in/out ledger rows
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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
        }
      ]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's cash drawer in/out flow
    • field set mirrors the till reconciliation rows grouped by drawer and category
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

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

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's inyad Pay lock screen shown before wallet operations
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's wallet home screen showing balance, currency, phone and linked bank account
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's send-money confirmation step that reserves a transfer reference before PIN entry
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's beneficiary send flow and its cash-pickup result codes
    • field set mirrors the beneficiary form (national id, name, phone) plus PIN confirmation
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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"
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's wallet cash-in flow that returns a funding payment link
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's pre-send fee quote shown before confirming a transfer
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's share-payment-link flow for collecting credit-book balances remotely
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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"
      }
    ]

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's bill-pay catalog listing utilities with their KYC level
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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
        }
      ]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's unpaid-bill lookup for a biller account before payment
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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"
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's bill settlement flow returning a merchant receipt and commission
  • 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

    Illustrative example reconstructed from the app's interface — not a live capture.

    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"}
      ]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • documented from the app's identity verification gate before higher-value wallet and bill-pay operations

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.

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.

Get a quote