bank · 3 min read

How to Verify a Bank of Abyssinia (BOA) Receipt

Verify Bank of Abyssinia transactions for free with cheki. No Selenium needed, just the reference number and last 5 digits of your account. QR codes supported for inter-bank transfers.

Bank of Abyssinia (BOA) is one of Ethiopia's largest private banks. BOA publishes receipt data as JSON via a public API endpoint. cheki uses this API directly, without requiring Selenium or a headless browser like some other libraries.

What you need

  • Transaction reference number (required for API lookup), alphanumeric, typically starts with 2 letters
  • Last 5 digits of your receiving BOA account number (required for API lookup)
  • QR code payload (alternative for inter-bank transfers), the encrypted string shown when scanning the QR code

Step-by-step verification

1

Get the transaction reference

Ask the customer for the reference number from their BOA receipt.

2

Get your account's last 5 digits

You need the last 5 digits of your receiving BOA account. For example, if your account is 1234567890, the last 5 digits are 67890.

3

Enter both in cheki

Select BOA from the bank dropdown, enter the reference, and enter the account digits.

4

Click Verify

cheki calls BOA's JSON API and returns structured payment data in 1-2 seconds.

5

For inter-bank transfers, use the QR code

If BOA's API returns 'Invalid reference number' (common for transfers sent to CBE or other banks), scan the QR code on the receipt. cheki auto-detects BOA QR payloads and decrypts them server-side: the QR supplies the reference and receiving account, and BOA confirms the receipt. No account number to type. If BOA cannot be reached, the result is marked as decoded only, not verified. See our BOA QR code breakdown for the full technical details.

💡

No Selenium required

Unlike the ethiobank_receipts Python library which requires Chrome WebDriver for BOA, cheki uses BOA's JSON API directly. This works in serverless environments without browser dependencies.

💡

QR codes work for inter-bank transfers

BOA's online slip API does not recognize inter-bank transfer references (e.g., FT... sent to CBE). The QR code on the receipt is an AES-256-CBC encrypted payload that carries the reference and the full receiving account. cheki decrypts it server-side and confirms the receipt with BOA using those values. If BOA cannot be reached, the result is marked as decoded only, not verified. Read the BOA QR code breakdown for encryption details.

Verifying via API

Use the reference and account digits for normal BOA-to-BOA transfers:

bash
curl -X POST https://cheki.et/api/verify \
  -H "Content-Type: application/json" \
  -d '{"bank":"boa","reference":"AB12345678","accountNumber":"67890"}'

For inter-bank transfers, pass the QR code payload instead (reference is optional):

bash
curl -X POST https://cheki.et/api/verify \
  -H "Content-Type: application/json" \
  -d '{"bank":"boa","qrData":"3cHRaxVjn/pySp..."}'

What the receipt contains

  • Source account name (sender)
  • Source account number
  • Receiver's name
  • Receiver's account
  • Transferred amount in ETB
  • Transaction date
  • Transaction reference

Two verification methods

MethodWhen to useNeeds account digitsSpeed
JSON API (reference + account)BOA-to-BOA transfersYes (last 5)~1-2s
QR code decryptionInter-bank transfers (BOA to CBE/Dashen/etc.)No~500ms

For a full technical breakdown of how BOA QR codes work (AES-256-CBC encryption, CryptoJS format, key derivation, security implications), see our BOA QR code breakdown.

Frequently asked questions

Edit this article on GitHubReport an issue →

Continue reading