Skip to content

OAuth 2.0 Scopes

Scopes define what your application is requesting permission to do on behalf of the user. They are declared in the scope field of your Request JWT and echoed back in the access token issued by the Authorization Server.

In UAE Open Finance, scopes are consent-bound — the scope alone does not grant access. The authorization_details in your request object describes the specific consent (account access permissions, payment details, etc.), and the scope indicates which API family the consent belongs to.

Available Scopes

ScopeAPIDescription
openidAllActivates OpenID Connect support. Required on every request — enables the Authorization Server to return an ID Token alongside the access token
accountsBank Data SharingGrants access to account information APIs (/accounts, /balances, /transactions, etc.). The access token is bound to the account-access-consent from authorization_details
paymentsService InitiationGrants access to payment initiation APIs (/payments). The access token is bound to the payment consent from authorization_details. Also grants read access to account information required for payment context
productsProducts & LeadsGrants access to product discovery and leads APIs. Does not require a user consent flow

Combining Scopes

Scopes are space-separated in the scope field. Always include openid.

Use CaseScope Value
Bank Data Sharingaccounts openid
Payment Initiationpayments openid
Products (public data)products openid

Consent-bound access tokens

For accounts and payments, the access token issued by the Authorization Server is cryptographically bound to the specific consent created in your authorization_details. The token cannot be used to access resources outside that consent's permissions.

Using Scopes in the Request JWT

Scopes are declared in the scope claim of the Request JWT payload:

json
{
  "aud": "https://auth1.[LFICode].apihub.openfinance.ae",
  "iss": "your-client-id",
  "client_id": "your-client-id",
  "scope": "accounts openid",
  "redirect_uri": "https://yourapp.com/callback",
  "response_type": "code",
  "code_challenge_method": "S256",
  "code_challenge": "E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM",
  "nonce": "n-0S6_WzA2Mj",
  "state": "af0ifjsldkj",
  "authorization_details": [
    {
      "type": "urn:openfinanceuae:account-access-consent:v2.1",
      "consent": { "..." : "..." }
    }
  ]
}

Scope Validation Errors

If the scope in your Request JWT does not match any of the supported values, or is inconsistent with the authorization_details type, the Authorization Server will reject the request with:

ErrorDescription
invalid_scopeThe requested scope is unknown or not supported by this Authorization Server
AccessToken.InvalidScopeThe access token presented to a resource endpoint does not have the scope required for that operation

Parameterized Scopes

The accounts and payments scopes are described in the OpenAPI specifications as parameterized with the ConsentId. This means the issued access token internally encodes the consent it was granted against. When presenting the token to a resource endpoint, the server validates that the requested resource falls within the permissions of the bound consent — this is handled automatically by the Authorization Server and is transparent to your application.