1. Create an app and product
In the dashboard, create an app, then add a fixed or dynamic product under Pricing. Also add a bank account under Bank accounts.
2. Create an API key
Open the app → API keys tab. Keys are app-scoped. Use them only on your server with Authorization: Bearer pk_live_… on /api/v1/*.
3. Create a checkout
curl -X POST https://verifyitet.duckdns.org/api/v1/checkouts/ \
-H "Authorization: Bearer pk_live_..." \
-H "Content-Type: application/json" \
-d '{
"app_id": 1,
"product_id": 1,
"customer_ref": "user_42",
"success_url": "https://yoursite.com/thanks",
"cancel_url": "https://yoursite.com/cart"
}'For dynamic one-time products, include amount_etb. For fixed products, omit it.
4. Share the pay page
Redirect the customer to your website host + pay_url (for example /pay/cs_…). They transfer the expected amount to a listed account and include the reference_code in the transfer remark.
5. Verify the receipt
On the hosted page the customer uploads the receipt. You can also verify from your server:
curl -X POST https://verifyitet.duckdns.org/api/v1/checkouts/cs_.../verify/ \
-H "Authorization: Bearer pk_live_..." \
-F "images[]=@receipt.jpg"6. Listen for the outcome
Prefer webhooks (guide). Events like checkout.verified or subscription.activated confirm success. Live updates also stream on wss://…/ws/gateway/checkouts/{public_id}/.