Receipt Verification
Paste a reference, upload a screenshot, scan a QR code, or send an SMS. Tuna handles every input format and verifies it against the bank's live endpoint.
Verify
Tuna accepts receipts in any format — text references, screenshot images, QR codes, SMS messages, or receipt URLs.
How it works
Tuna sits between you and Ethiopian bank endpoints. You send a receipt in any format — reference number, screenshot, QR code, SMS text, or URL — and Tuna parses it, identifies the bank, fetches the receipt data, and returns structured verification results.
Reference number, screenshot, QR code, SMS text, receipt URL. Tuna accepts all formats. No need to figure out which bank — auto-detection handles it.
The input adapter extracts the bank and reference. If it's an image, OCR reads the text and QR detection pulls the receipt link. The manifest routes to the correct parser.
Tuna calls the bank's live endpoint — CBE's JSON API, Telebirr's HTML page, BOA's API — and returns structured receipt data: amount, payer, date, status.
Text reference
FT numbers, receipt IDs, transaction references
Screenshot / image
OCR extracts text, QR detection pulls receipt URLs
QR code
Camera scan or image upload — reads embedded receipt links
SMS text
Paste bank SMS — auto-detects bank and extracts reference
Receipt URL
Direct bank receipt links — auto-detects bank from domain
Supported Banks
Manifest-driven architecture. Add a bank by writing a parser and adding one entry to banks.toml. No framework changes needed.
API
REST API with auto-generated Swagger docs. Use it in your app, your bot, your backend.
Contribute
Tuna's parsers are only as good as the data they're tested against. Contribute sample receipts, QR codes, screenshots, SMS messages, or bank endpoint discoveries to help us support more banks and handle edge cases.
PDFs, images, or text of real receipts (with sensitive data redacted). Helps us test parsers against actual bank output formats.
Screenshots or photos of QR codes from receipts. Especially BOA, CBE, and Telebirr QR formats.
Forwarded bank SMS notifications. Helps us improve SMS parsing for CBE, Awash, BOA, and other banks.
Found a bank receipt endpoint we don't support? Share the URL pattern, auth headers, and response format.
Redact sensitive data. Before sharing any receipt, blur or remove: account numbers, full names, phone numbers, PINs. We only need the receipt structure, not personal info.
Choose the right type. Screenshots go in "Full screenshot." QR code photos go in "QR code." SMS text goes in "SMS text." Receipt PDFs go in "Sample receipt."
Include context. If you found a new endpoint, share the URL pattern, required headers, and response format. If a parser fails on a receipt, share the failing receipt so we can fix it.
Open source. All contributions are used to improve Tuna's open-source parsers. Your samples help every developer using the API.
For developers
Tuna is fully open source with official SDKs for Python and TypeScript, plus a CLI for quick terminal access.
pip install tuna-sdk
Async support, typed dataclasses, auto bank detection. Verify from any Python app.
npm install tuna-sdk
Full TypeScript types, ESM + CJS, zero dependencies. Verify from Node, Deno, or browser.
tuna verify CBE FT25211G11JQ
Verify receipts, batch process files, parse images, check bank health — all from terminal.