Developers

API documentation

Authenticate with an API key and verify Ethiopian payments over HTTPS from any language.

Authentication

Create a key in the dashboard (jc_…), then send it on every request. Either header works; sending both is the most reliable:

Authorization: Bearer jc_••••••••
X-Api-Key: jc_••••••••

Prefer Authorization: Bearer <key>. Some hosts (especially Apache) strip the Authorization header before PHP — if you get 401 Unauthorized with a valid key, also send X-Api-Key: <key> (same value). Do not send the raw key alone in Authorization without the Bearer prefix.

Endpoints

MethodPathDescription
GET/healthHealth check
GET/v1/meKey + entitlements + usage
GET/v1/providersSupported banks & wallets
GET/v1/usageQuota remaining
POST/v1/verifyVerify one payment
POST/v1/verify/batchVerify many payments
POST/v1/ocrOCR a receipt image (multipart)

Verify example

Same POST /v1/verify call in common languages. Replace the key and reference with your own.

curl -X POST https://justverify.et/v1/verify \
  -H "Authorization: Bearer jc_YOUR_API_KEY" \
  -H "X-Api-Key: jc_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "telebirr",
    "reference": "CE12345678",
    "expected_amount": 1500
  }'

Tips

  • Send Authorization: Bearer and X-Api-Key with the same key so auth works even if a proxy strips Authorization.
  • Prefer an explicit provider (e.g. cbe, telebirr) when you know the bank.
  • For modern CBE receipts, pass the full receipt_url (mbreciept.cbe.com.et/v2-…).
  • Only successful verifies count against your monthly quota.
  • Response headers include X-Quota-Remaining and rate-limit counters.
Create free account