Citizens Financial Group · Authentication Profile
Citizens Financial Group Authentication
Authentication
Citizens Financial Group secures its APIs with oauth2, apiKey, and mutualTLS across 5 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the clientCredentials flow(s).
BankingBuy Now Pay LaterFinancial-ServicesFDXLocatorOpen BankingPayments
Methods: oauth2, apiKey, mutualTLS
Schemes: 5
OAuth flows: clientCredentials
API key in: header
Security Schemes
OAuth2 oauth2
client-id apiKey
· in: header (X-IBM-Client-Id)
x-fapi-financial-id apiKey
· in: header (x-fapi-financial-id)
x-client-id apiKey
· in: header (x-client-id)
Partner Id apiKey
· in: header (Partner-ID)
Source
Authentication Profile
generated: '2026-09-05'
method: searched
source: >-
https://developer.citizensbank.com/content/qut/CitizensPaymentAPIUserGuide.pdf (v1.3, updated
2025-12-11) section 3 "AUTHENTICATION"; the same section appears in the Account Transfer (v1.0,
2026-05-29), Account Validation (v1.6, 2026-04-30) and Information Reporting (v1.6, 2026-07-22)
user guides. Scheme detail derived from the harvested specs in openapi/.
docs: https://developer.citizensbank.com/content/qut/CitizensPaymentAPIUserGuide.pdf
provider: Citizens Financial Group
providerId: citizens-financial-group
summary:
model: >-
Two-legged OAuth 2.0 client-credentials with a private_key_jwt client assertion over mutual TLS,
stated by Citizens to follow the Financial-grade API (FAPI) Security Profile 1.0 - Part 2:
Advanced. Every commercial-banking call additionally carries an IBM API Connect client id header
(X-IBM-Client-Id) issued by the developer portal, and a required x-fapi-trace-id correlation
header. The FDX account/statement surface and the ATM/branch locator surface are key-header only
in the published contracts.
types:
- oauth2
- apiKey
- mutualTLS
api_key_in:
- header
oauth2_flows:
- clientCredentials
token_endpoints:
- environment: production
url: https://apis.citizensbank.com/as/token.oauth2
source: CitizensPaymentAPIUserGuide.pdf section 3.1.3
- environment: sandbox
url: https://sandboxapis.citizensbank.com/as/token.oauth2
source: CitizensPaymentAPIUserGuide.pdf section 3.1.3
- environment: production (JWT `aud` claim value)
url: https://pf-fam.citizensbank.com
source: CitizensPaymentAPIUserGuide.pdf section 3.1.2
- environment: sandbox (JWT `aud` claim value)
url: https://pf-fam-sb.internal.citizensbank.com
source: CitizensPaymentAPIUserGuide.pdf section 3.1.2
- environment: as published in the OpenAPI securitySchemes
url: https://pf-fam.internal.citizensbank.com/as/token.oauth2
source: openapi/_original/citizens-payments-v3.json
note: >-
The tokenUrl carried in the specs' oauth2 securityScheme names an .internal. host that does not
resolve publicly; the user guides publish apis.citizensbank.com / sandboxapis.citizensbank.com
as the callable token endpoints. Recorded as-published, not reconciled.
flow:
name: OAuth 2.0 JWT client assertion (private_key_jwt) over mTLS
grant_type: client_credentials
client_assertion_type: urn:ietf:params:oauth:client-assertion-type:jwt-bearer
steps:
- Client and Citizens authorization server present certificates validated against a shared CA (mTLS).
- Client builds a JWT assertion with iss = sub = Client ID from the developer portal, aud = the
token endpoint URL, exp <= 3600 seconds, and a unique jti to prevent replay.
- JWT is signed with the client private key (RS256); the client hosts a JWKS URL exposing the
public key for Citizens to verify.
- Client POSTs client_id, grant_type, client_assertion_type, client_assertion and scope to the
token endpoint over the mTLS channel.
- Citizens validates the assertion and the client certificate and issues a Bearer access token.
- Client calls the resource server with the Bearer token plus X-IBM-Client-Id and x-fapi-trace-id.
jwt_claims:
- iss (Client ID from the developer portal)
- sub (same as iss)
- aud (token endpoint URL)
- exp (must not exceed 3600 seconds)
- jti (unique, to prevent replay)
signing_algorithm: RS256
client_key_distribution: JWKS endpoint hosted by the client, or a key store supplied at onboarding
mutual_tls: true
ip_allowlisting: >-
Client IPs are provisioned by the Citizens Implementation Manager during onboarding
(CitizensPaymentAPIUserGuide.pdf section 2).
schemes:
- name: OAuth2
type: oauth2
flow: clientCredentials
applies_to:
- Payments
- Account Transfer
- Account Validation
- Information Reporting
sources:
- openapi/citizens-financial-group-payments-openapi.yml
- openapi/citizens-financial-group-account-transfer-openapi.yml
- openapi/citizens-financial-group-account-validation-openapi.yml
- openapi/citizens-financial-group-information-reporting-openapi.yml
- name: client-id
type: apiKey
in: header
parameter: X-IBM-Client-Id
description: >-
IBM API Connect application client id (called "API Key" in the portal). Retrieved from
Apps > your application > Subscriptions in the developer portal.
applies_to:
- Payments
- Account Transfer
- Account Validation
- Information Reporting
- name: x-fapi-financial-id
type: apiKey
in: header
parameter: x-fapi-financial-id
description: Identifies the desired financial institution or partners.
applies_to:
- Accounts (FDX v1.0 and v2.1)
- Statements (FDX v1.0 and v2.1)
- name: x-client-id
type: apiKey
in: header
parameter: x-client-id
description: Identifies the desired financial institution or partners.
applies_to:
- Authorize (IDP v1.0 / v2.0)
- name: Partner Id
type: apiKey
in: header
parameter: Partner-ID
description: Used for differentiating the registered vendors/partners.
applies_to:
- ATM Locator
- Branch Locator
required_headers:
- name: x-fapi-trace-id
required: true
max_length: 36
description: Unique request id (UUID) for each request to make it traceable.
- name: x-fapi-channel-id
required: false
max_length: 20
description: Distinguishes communication channels or data streams within a client system.
- name: Authorization
required: true
description: OAuth 2.0 Bearer access token.
- name: X-IBM-Client-Id
required: true
description: Developer-portal application client id.
- name: requestid
required: false
max_length: 36
description: >-
Consumer-assigned request identifier echoed back as requestId for tracking, logging and
correlation (Payments user guide 5.1.2 / 5.1.5).
onboarding:
process: >-
Access is not self-service. A Citizens Implementation Manager runs a kickoff, collects authorized
security contacts, the client IPs to allowlist, the public key for the mTLS certificate and a
private key via JWKS endpoint or key store. All testing happens in the sandbox; message signing
and sandbox sign-off are required before a production date is agreed and the application is
registered by the Citizens API team.
portal_roles:
- Owner - manages organization settings, applications and credentials; may invite additional users.
- Administrator - same permissions as owner.
- Developer - view/manage organization settings, application settings/credentials, subscriptions, analytics.
- Viewer - view-only access to organization, applications and analytics.
source: https://developer.citizensbank.com/content/qut/CitizensPaymentAPIUserGuide.pdf
notes:
- No public OpenID Connect discovery document is served; /.well-known/openid-configuration on every
Citizens host probed on 2026-09-05 either 404s or returns the portal search page (see well-known/).
maintainers:
- FN: Kin Lane
email: kin@apievangelist.com
Work with this as data
Every security artifact here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for security posture
4 MCP tools reach this
find_securityBrowse and filter every security artifact in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This security artifact
curl "https://apis.io/api/v1/security/citizens-financial-group-authentication"
All security posture
curl "https://apis.io/api/v1/security?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.