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, decrypts them server-side with AES-256-CBC, and returns the full transaction details. No account number needed. 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 containing the full transaction details. cheki decrypts it server-side, so QR-based verification works even when the API lookup fails. 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://chekiapp.vercel.app/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://chekiapp.vercel.app/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