canonical: https://jentic.com/apis/openpayments.io/openpayments

# Open Payments API

Jentic publishes the only available OpenAPI specification for Open Payments API, keeping it validated and agent-ready. Open Payments is an open-banking API based on the Berlin Group NextGenPSD2 specification, exposing ASPSP discovery, consent management, account information, and payment initiation in one surface. It is intended for fintechs and account-aggregation tools that need PSD2-aligned access to European bank data and payment rails.

## For AI agents

Discover ASPSPs, manage user consent, fetch account and transaction data, and initiate PSD2 payments under the Berlin Group standard.

## Scope

Does not handle card acquiring, KYC verification, or merchant settlement reconciliation - use for PSD2 account information and payment initiation only.

## Capabilities

- List supported ASPSPs (Account Servicing Payment Service Providers) for a market
- Create and revoke consents that scope account or payment access
- List accounts a consent grants access to and retrieve their balances
- Pull historical transactions for a consented account
- Initiate a payment under one of the Berlin Group payment products
- Authenticate using bearer JWTs or OAuth 2.0 authorization-code flow with accounts and payments scopes

## Use cases

### Account aggregation for personal finance apps

A personal finance application uses Open Payments to enrol the user's bank, capture explicit PSD2 consent, and pull balances and transactions across accounts. The Berlin Group alignment means the same integration works across many EU banks without per-bank custom code.

Example prompt: Create a consent for accounts scope, list accounts via `/v1/accounts`, then call `/v1/accounts/{accountId}/transactions` for the last 30 days.

### Pay-by-bank checkout via PSD2 payment initiation

An e-commerce checkout offers a pay-by-bank option that uses Open Payments to initiate a SEPA credit transfer rather than charging a card. This avoids card fees and gives the merchant a near-instant settlement signal under the PSD2 framework.

Example prompt: Call `/v1/payments/{payment-product}` with payment-product=sepa-credit-transfers and amount, debtor, and creditor fields populated.

### Consent lifecycle management for compliance

A regulated financial product needs to track every consent given by a user, refresh expiring consents, and revoke them when the user disconnects an account. Open Payments exposes consent CRUD endpoints to make this auditable and PSD2-aligned, with consent identifiers tying back to subsequent data access.

Example prompt: List active consents, identify the one with consentId X, and call DELETE `/v1/consents/{consentId}` to revoke it.

### Agent-driven open-banking flows through Jentic

An AI financial-assistant agent calls Open Payments via Jentic to fetch a user's recent transactions and reason over them. Jentic isolates the OAuth client credentials and bearer tokens, so the agent works with scoped access tokens rather than raw banking credentials and the consent ID is the only state the agent has to track.

Example prompt: Search Jentic for 'fetch bank account transactions', load the `/v1/accounts/{accountId}/transactions` operation, and execute it with the user's consented accountId.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/v1/aspsps` | List supported ASPSPs |
| POST | `/v1/consents` | Create a new PSD2 consent |
| GET | `/v1/consents/{consentId}` | Retrieve a consent by ID |
| GET | `/v1/accounts` | List accounts under a consent |
| GET | `/v1/accounts/{accountId}/balances` | Get balances for an account |
| GET | `/v1/accounts/{accountId}/transactions` | Pull transactions for an account |
| POST | `/v1/payments/{payment-product}` | Initiate a payment under a Berlin Group payment product |

## Key resources

- **ASPSPs** — Discover supported account-servicing institutions
- **Consents** — Create, retrieve, and revoke PSD2 consents
- **Accounts** — List accounts under a consent and fetch balances
- **Transactions** — Pull historical transactions for an account
- **Payments** — Initiate payments under Berlin Group payment products

## Why Jentic

- **Setup:** Wiring the Open Payments API by hand means running its OAuth authorization-code flow, managing per-user tokens alongside bearer auth, and following the Berlin Group consent, account, and payment sequence for PSD2 access. Through Jentic you install once, import the Open Payments API from the API Directory, store the credentials once, and your agent calls it.
- **Permission scoping:** Open Payments puts the account id in the URL path (`/accounts/{accountId}/balances`), so a rule can pin your agent to reads for one account: it can fetch that account's balances and transactions and nothing else. You choose the operations it may call, so payment initiation is not included unless you add it.
- **Credential handling:** Your Open Payments OAuth client credentials and per-user tokens are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'fetch bank account transactions' or 'initiate a SEPA credit transfer', and Jentic returns the matching consent, account, or payment operation with its Berlin Group-aligned schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Plaid API** — Account aggregation and bank data with strong US coverage
- **TrueLayer API** — UK and EU open-banking aggregation and pay-by-bank
- **GoCardless API** — Direct debit collection alongside open-banking initiation

## FAQ

### Why is there no official OpenAPI spec for Open Payments API?

Open Payments does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Open Payments API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Open Payments API use?

Open Payments supports both bearer JWTs and OAuth 2.0 authorization-code flow with accounts and payments scopes. Through Jentic the client credentials and refresh tokens stay in the vault, and Jentic injects the appropriate bearer header per call.

### Can I initiate payments with the Open Payments API?

Yes. POST `/v1/payments/{payment-product}` initiates a payment under a Berlin Group payment product such as sepa-credit-transfers. The user must have an active payments-scoped consent before the call succeeds.

### What are the rate limits for the Open Payments API?

Rate limits are governed by the underlying ASPSP and the deployment behind api.openpayments.io rather than by a single global quota. Treat per-consent and per-account limits as the binding constraint and back off on 429 responses from upstream banks.

### How do I pull a user's transactions through Jentic?

Run pip install jentic, search 'fetch bank account transactions', load the `/v1/accounts/{accountId}/transactions` operation, and execute it with the consented accountId. Jentic supplies the bearer token derived from the user's authorization-code flow.

### Is Open Payments the same as the Interledger Open Payments standard?

No. This API is built on the Berlin Group NextGenPSD2 specification for European open banking. The Interledger Open Payments protocol is a separate effort focused on Web Monetization-style interoperability and is not what this spec describes.

### Can I limit what my agent is allowed to do with the Open Payments API?

Yes. Jentic One is self-hosted, so your own rules decide which Open Payments operations and credentials the agent may use. Because the API puts the account id in the URL path, such as `/accounts/{accountId}/balances`, you can pin the agent to reads for a single consented account so it fetches only that account's balances and transactions. You choose the operations it may call, so payment initiation through POST `/v1/payments/{payment-product}` is excluded unless you explicitly allow it.
