We use tracking technologies for site analytics and, if you allow it, for non-personalized advertising. These are two separate choices and neither one is required to use the site.Analytics and advertising cookies are optional and separate. Privacy Policy
No eligible rate right now
Public provenance index for collected exchange-rate data, including collection URLs and timing metadata. Sources include direct publications and third-party mirrors.
Use this page to audit Ethiopian bank exchange rate sources, compare capture freshness, and confirm whether the rate day and collection timestamp are aligned.
A bank or reference label identifies the rate being reported. A third-party mirror is a separate collection source and does not imply collection from, or endorsement by, that bank. Each collection URL below applies to the rows obtained from it.
31 banks with live rates
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
728 of 734 runs collected data (99%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
708 of 734 runs collected data (96%)
Recent 7d rate: 95%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Sep 30, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
728 of 734 runs collected data (99%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: TRANSACTIONAL
Reliability
661 of 721 runs collected data (92%)
13 runs where we did not attempt this source
Recent 7d rate: 81%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
729 of 734 runs collected data (99%)
Recent 7d rate: 98%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 5, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
734 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak, quality
Third-party mirror
https://kehulum.com/exchange-rate/lion--anbesa-international-bank-sc-114Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
692 of 726 runs collected data (95%)
8 runs where we did not attempt this source
Recent 7d rate: 99%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak, quality
Collection method: post
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: TRANSACTIONAL
Reliability
694 of 727 runs collected data (95%)
7 runs where we did not attempt this source
Recent 7d rate: 98%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak, quality
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
734 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
727 of 733 runs collected data (99%)
1 runs where we did not attempt this source
Recent 7d rate: 96%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
680 of 727 runs collected data (94%)
7 runs where we did not attempt this source
Recent 7d rate: 89%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Collection method: get
Latest captured at: Oct 6, 2026, 09:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
734 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: TRANSACTIONAL
Reliability
734 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: MARKET
Reliability
8475 of 8524 runs collected data (99%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 11:24
Last collected successfully: Oct 6, 2026, 11:24
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 12:15 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
733 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
706 of 728 runs collected data (97%)
6 runs where we did not attempt this source
Recent 7d rate: 97%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak, quality
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: TRANSACTIONAL
Reliability
731 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
734 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak, quality
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Collection method: scrape
Latest captured at: Sep 29, 2026, 13:25 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
734 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak, quality
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: INDICATIVE
Reliability
60 of 60 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 09:00
Last collected successfully: Oct 6, 2026, 09:00
Components used collection, freshness, streak · quality (not measured)
Collection method: API
Latest captured at: Oct 6, 2026, 09:00 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
734 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 5, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
734 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 5, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
726 of 734 runs collected data (99%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: TRANSACTIONAL
Reliability
730 of 734 runs collected data (99%)
Recent 7d rate: 99%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak, quality
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 5, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
734 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak, quality
Third-party mirror
https://kehulum.com/exchange-rate/shabelle-bank-sc-129Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
733 of 734 runs collected data (100%)
Recent 7d rate: 99%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: TRANSACTIONAL
Reliability
734 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
729 of 734 runs collected data (99%)
Recent 7d rate: 99%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
729 of 734 runs collected data (99%)
Recent 7d rate: 99%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
732 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak, quality
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 1, 2026
Rate types: INDICATIVE
Reliability
60 of 60 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 09:00
Last collected successfully: Oct 6, 2026, 09:00
Components used collection, freshness, streak · quality (not measured)
Collection method: DIRECT
Latest captured at: Oct 6, 2026, 09:00 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
610 of 702 runs collected data (87%)
32 runs where we did not attempt this source
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 1, 2026
Rate types: INDICATIVE
Reliability
60 of 60 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 09:00
Last collected successfully: Oct 6, 2026, 09:00
Components used collection, freshness, streak · quality (not measured)
Collection method: API
Latest captured at: Oct 6, 2026, 09:00 EAT
Latest effective date: Oct 5, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
734 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak, quality
Collection method: get
Latest captured at: Oct 6, 2026, 11:33 EAT
Latest effective date: Oct 6, 2026
Rate types: CASH, TRANSACTIONAL
Reliability
732 of 734 runs collected data (100%)
Recent 7d rate: 100%
Last attempted: Oct 6, 2026, 10:33
Last collected successfully: Oct 6, 2026, 10:33
Components used collection, freshness, streak · quality (not measured)
Collection method: post
Latest captured at: Oct 6, 2026, 11:33 EAT
The list above is built from the rates currently being served, so a source that is failing is the one thing it cannot show. Every source the collection ledger attempted is listed here instead, whether or not it produced a quote on the latest poll.
Ammann Forex Bureaucollection scope: bureausCollected successfully on most attempts, with some failures
495 of 498 runs collected data (99%)
Last collected successfully: Oct 6, 2026, 10:33
Last attempted: Oct 6, 2026, 10:33
AYOTAN Forex Bureaucollection scope: bureausCollected successfully on most attempts, with some failures
497 of 498 runs collected data (100%)
Last collected successfully: Oct 6, 2026, 10:33
Last attempted: Oct 6, 2026, 10:33
ERCAcollection scope: referenceWe could not collect this source. This is our collection failing, not the source publishing bad numbers
0 of 9 runs collected data (0%)
Last collected successfully: never
Last attempted: Sep 10, 2026, 15:00
Ethio Black Marketcollection scope: parallel_marketWe could not collect this source. This is our collection failing, not the source publishing bad numbers
0 of 1189 runs collected data (0%)
Last collected successfully: never
Last attempted: Sep 10, 2026, 15:29
Haron Forex Bureaucollection scope: bureausCollected successfully on most attempts, with some failures
A per-source reliability score built only from collection outcomes we already record. It is a measurement of our collection, not a judgement of the bank.
Reliability
43 of 43 sources scored over the last 30 days
Mean score
92.9 of 100
Window: the last 30 days of collection runs, from Sep 6, 2026.
Components: collection success rate (multiplier), freshness of the newest stored quote (0.50), current consecutive-failure streak (0.30), and the share of rows that are not aggregator mirrors or quarantined (0.20).
Formula
100 * collection_success * (0.50*freshness + 0.30*streak + 0.20*quality_share) / (sum of the inner weights present); collection_success is None below min_attempts, which yields no score at allA component we cannot measure from recorded data is left out and its weight is shared across the others. Each card names the components it used.
Sparse is not unreliable. A source that publishes rarely still succeeds on every run we make, and runs where we did not ask (alert back-off, or no worker free) are excluded rather than counted as failures.
The recent rate covers the last 30 days and is shown for context. It is not part of the score.
collection_success multiplies the other components rather than adding to them, so a source we could not collect at all scores 0 however good its other signals look.
Runs where a source was not attempted (cooldown back-off, or no worker reached it) are excluded from the rate, not counted as failures: we did not ask, so we may not judge.
497 of 498 runs collected data (100%)
Last collected successfully: Oct 6, 2026, 10:33
Last attempted: Oct 6, 2026, 10:33
Hijracollection scope: banksCollected successfully on every attempt in the window
734 of 734 runs collected data (100%)
Last collected successfully: Oct 6, 2026, 10:33
Last attempted: Oct 6, 2026, 10:33
Rooha Forex Bureaucollection scope: bureausCollected successfully on most attempts, with some failures
497 of 498 runs collected data (100%)
Last collected successfully: Oct 6, 2026, 10:33
Last attempted: Oct 6, 2026, 10:33
Taypay Forex Bureaucollection scope: bureausCollected successfully on every attempt in the window
498 of 498 runs collected data (100%)
Last collected successfully: Oct 6, 2026, 10:33
Last attempted: Oct 6, 2026, 10:33
A source with fewer than the minimum attempted runs has no score. Sparse publication is not unreliability.
quality is dropped (and its weight redistributed) when no row carries provenance: NULL acquisition_method means "not recorded", never "official".
Unknown provenance is not treated as a mirror. Only rows we positively identified as an aggregator mirror or quarantined by our own pipeline count against a source. The quality component is therefore a floor on trust, not a claim that every row is the source's own first-party quote.
recent_success_rate is reported alongside the score but is NOT part of it: the published number always uses the stated window.
last_attempted_at and last_success_at are reported separately: for an intermittent source they answer different questions. A recent last_attempted_at with an old last_success_at means we are still asking and still getting nothing back.
This covers collection reliability only. Monitoring gaps that are not measured anywhere are listed on the Integrity section of /data-sources.
What this page does not measure
A page about data integrity has to name its own blind spots. These failure modes have no monitoring at all, so nothing on this site can tell you they happened.
Backend latency
The published target is a 95th-percentile response under 800 ms. No alert fires when it is breached, and the last field measurement was above it.
Database unavailability
If the database becomes unreachable, nothing pages an operator. Readiness reports it when asked, but nothing asks on a schedule.
Scheduler death
If the in-process scheduler stops, collection stops silently. The readiness signal would turn stale, but no alert is wired to that transition.
Alert delivery
Every alert channel is opt-in and off by default. Until one is switched on, a scraper failure is recorded here but nobody is told.
External uptime monitoring
Critical-path endpoints (/api/v1/latest-rates and the public rates feed) are now called every 10 minutes by the backend's own probe and the results published on the status page, so an API that fails while the process stays healthy is no longer invisible. What is still missing is an OUTSIDE vantage point. An outage that takes the box, its probe and its tunnel down together is still first noticed by users.
Continuous integration
The automated test gate cannot currently run. A red check does not mean a code failure, and a green check cannot be produced.
None of the above is visible in the scores on this page. They measure collection reliability only.