Skip to content

Billing and pricing

How a third-party app is paid today: wallet charges with the billing scope, the per-charge cap, the revenue split and what is not open to outside apps.

On this page

Status, 2026-10-25. Third-party apps have one way to earn: charging the store's wallet with POST /charge. Subscription plans, free trials, upgrades, downgrades and one-time purchases exist in the platform for Hekana's own apps only. There is no API for outside apps to define them, and no price is shown for a third-party app in the app list. If you need recurring billing, your app has to decide when to call /charge itself.

Pricing models

ModelFirst-party appsThird-party apps
FreeYesYes. A third-party app is listed as free with no price.
UsageYesThrough POST /charge with type: "usage", one call per billable event.
SubscriptionTiers per 30-day period, a 14-day trial on the first paid tier, proration on upgrade, a 3-day grace on a failed renewalNot available as a platform feature. type: "subscription" is only a label on a charge you make yourself.
One-time purchaseMechanism built, nothing on sale yetNot available.
Charging a shopper's saved cardFoundations only, cannot chargeNot available.

Charge a store

POST https://api.hekana.com/api/v1/apps-api/charge, scope billing. The scope spends the store's wallet, so ask for it only if you charge. 30 requests a minute.

POST /charge (request body)JSON
{
  "amountCents": 2500,
  "reference": "invoice:2026-11:store-abc",
  "description": "November usage",
  "type": "usage"
}
  • amountCents: a whole number of piastres, at least 1, at most 50,000 (500 EGP) per charge. For more, make several charges.
  • reference: your own id, up to 128 characters. It makes the charge idempotent: sending it again returns the first charge instead of charging twice.
  • description: optional, up to 200 characters.
  • type: usage (default) or subscription. A label only.

The reply:

reply (data)JSON
{
  "chargeId": "<id>",
  "amountCents": 2500,
  "hekanaCutCents": 500,
  "developerNetCents": 2000,
  "idempotentReplay": false
}

Each charge is split: Hekana's share is a percentage stored per app (20 percent by default), rounded, and your net is the remainder, so the two always add up to the amount.

Errors:

StatusmessageMeaning
400amount_must_be_positive_integer, amount_exceeds_per_charge_capThe amount is not valid or is over 50,000.
403insufficient_fundsThe wallet could not cover it. Nothing was charged and the reference can be used again after a top-up.
403app_unavailableThe app is not approved.
409charge_in_progressThe same reference is mid-charge. Retry shortly.

Earnings

GET /earnings (scope billing) returns { earnedCents }: the sum of your settled net amounts across all of your apps. Only settled charges count.

Payouts are not covered here. The Apps API reports what you have earned. How and when earnings are paid out is not part of the API and is not documented on this site yet; contact Hekana before you build a paid app.

Prices are in EGP

Every amount is in piastres. The wallet is the store's Hekana wallet, in EGP.

Next steps