Quickstart
From zero to your first test sale in five minutes.
1. Enable Developer Mode
JamiDev lives behind Developer Mode, which requires a KYC-verified Jami account. Go to Settings → Developer Mode and flip the switch — if it's disabled, complete KYC verification first.
A "JamiDev" entry appears in the sidebar under Monetization.
2. Create a sandbox organization
Open JamiDev and use the organization switcher in the header → New organization…. New organizations start in sandbox: checkouts are fully simulated and no real money moves, so you can test the entire flow safely. (Your default organization is production.)
3. Create and publish a product
Store → Products → New product, then walk the wizard:
- Basics — title, description, images.
- Pricing — pick
fixed,pwyworfree. The pricing model is locked after creation (only the amount of a fixed product can change later). - Extras — metadata key/values, checkout fields, benefits (e.g. a license key).
Hit Publish. Prices are entered in ETB and buyers pay exactly that price — taxes (30% government + 5% Jami) are deducted later, when you withdraw your earnings.
4. Share the checkout
On the product page, copy the checkout link (an opaque /jamidev/p_… URL), or create a
Checkout Link to sell several products from one URL or embed
checkout on your own site.
5. Make a test purchase
Open the checkout link. Because the org is sandbox you'll see an amber Test mode banner. Use the magic phone number:
251900000001→ instant success251900000002→ instant failure- any other number → an interactive gateway simulator with Approve / Fail buttons
A successful test creates a real order: benefits are granted, webhooks fire
(with livemode: false), the dashboard Overview updates, and you—as the org owner—get a
[TEST]-prefixed sale email. Buyer receipts are suppressed in sandbox.
6. Integrate from code (the SDK)
Everything above also works from your own backend through the official
jami-sdk — zero dependencies, Node 18+/edge/browser:
npm install jami-sdkimport { Jami } from 'jami-sdk';
const jami = new Jami({ token: process.env.JAMI_TOKEN! }); // jamidev_test_… for sandbox
const checkout = await jami.createCheckout({
productId: '<your product id>',
customer: { email: 'buyer@example.com', phone: '251900000001' }, // magic success number
gateway: 'telebirr',
});
if (!('orderId' in checkout)) {
const status = await jami.waitForCheckout(checkout.sessionId);
console.log(status.status, status.orderId); // 'completed', '665f…'
}See the SDK page for orders, webhook verification, and error handling.
7. Go live
Settings → Environment → Switch to production. New checkouts now charge real money through ArifPay via Telebirr, M-Pesa or CBE Birr. Remember to:
- register your production webhook endpoints — subscriptions are per-organization;
- issue fresh
jamidev_live_API tokens — test tokens stop working when the environment changes.
