JamiDev

Products & Benefits

Pricing models, checkout fields, metadata and automatic benefit grants.

Pricing models

ModelBehavior
fixedOne price, set by you. The amount can be edited later; everything else about pricing is locked.
pwywPay-what-you-want with an optional minimumAmount and a pre-filled defaultAmount. The API rejects anything below the minimum.
freeNo payment step — checkout immediately creates a paid order and grants benefits.

The pricing model (and product type) is immutable after creation — enforced at the database layer, not just the UI. This protects grandfathering: every checkout session snapshots the price at the moment it's created, so orders always reflect what the buyer actually saw, even if you change the price a minute later.

All prices are in ETB minor units in the API (santim; 10000 = 100.00 ETB). Buyers pay exactly your listed price; withdrawal-time taxes (30% government + 5% Jami) come out of your balance, never out of the buyer's pocket.

Checkout URLs

Every published product gets an opaque checkout token (p_…) and a hosted checkout page:

https://jami.bio/jamidev/p_x7Kf3mQz9aBc

Raw product IDs are deliberately not accepted in URLs. Draft and archived products return a branded "not available" page.

Checkout fields

Collect custom information at checkout (text, number, date, checkbox, select). Fields are defined once per organization (Developer → Checkout Fields) and attached to products with a required flag. Collected values are stored on the order and echoed in webhook payloads via the session's collected fields.

Metadata

Products carry a free-form metadata map (string → string). It's snapshotted onto every order at completion and included in order.* webhook events — useful for SKUs, internal IDs, or plan names. Checkout links can add their own metadata, which wins over product keys on conflict.

Benefits

Benefits are granted automatically when an order is paid:

  • License key — a unique key generated per order, shown on the buyer's success page, included in the receipt email, and delivered in the benefit.granted webhook payload.
  • Discord roles, GitHub access, file downloads, feature flags and custom benefits are scaffolded and dispatch through the same grant pipeline.

Grants are idempotent per order — replayed payment notifications never double-grant.

On this page