Above the free per‑customer, per‑day threshold each LFI sets its own per‑call rate for continued data‑sharing requests. The rates below are read live from the Open Finance directory (ApiMetadata.OverLimitFees). LFIs that have not published a rate charge nothing above the threshold.
The rates above come from ApiMetadata.OverLimitFees on each LFI’s account-information API resource, returned by the directory’s /participants endpoint. One call gives you the rate for every LFI.
GET https://data.directory.openfinance.ae/participantsGET https://data.sandbox.directory.openfinance.ae/participantsparticipants[]
.AuthorisationServers[]
.ApiResources[] // ApiFamilyType === "account-information"
.ApiMetadata.OverLimitFees // string in AED, e.g. "0.50"
// missing or empty → 0 (free above threshold)const res = await fetch('https://data.directory.openfinance.ae/participants')
const participants = await res.json()
const rates = []
for (const org of participants) {
for (const server of org.AuthorisationServers || []) {
const ds = (server.ApiResources || [])
.find(r => r.ApiFamilyType === 'account-information')
if (!ds) continue
const raw = ds.ApiMetadata?.OverLimitFees
const aedPerCall = raw && String(raw).trim() !== '' ? Number(raw) : 0
rates.push({
server: server.CustomerFriendlyName || org.OrganisationName,
aedPerCall,
})
}
}Cache the response. The directory is the source of truth, but rates change rarely — refreshing daily is plenty.