canonical: https://jentic.com/apis/openbankingproject.ch/openbankingproject

# Openbankingproject Ch Swiss NextGen Banking API-Framework

The Swiss NextGen Banking API-Framework is the Swiss edition of the Berlin Group NextGenPSD2 specification, defining a harmonised XS2A interface that banks (ASPSPs) and Third Party Providers can use to exchange payment, account, and consent data. It covers Payment Initiation Service (PIS), Account Information Service (AIS), Confirmation of Funds Service (PIIS), and Signing Baskets, plus shared common services for consent and authorisation. Strong Customer Authentication is supported through Redirect, Decoupled, Embedded, and OAuth approaches, though the obp.ch community recommends Redirect SCA. The framework underpins open banking interoperability for Swiss banks while remaining compatible with the wider Berlin Group ecosystem.

## For AI agents

Initiate Swiss bank payments, access account and balance information, and manage signing baskets through Berlin Group NextGenPSD2-compliant XS2A endpoints with redirect SCA.

## Scope

Does not handle card processing, in-store POS payments, or non-EEA jurisdictions - use for Berlin Group NextGenPSD2 XS2A flows in Switzerland and compatible markets only.

## Capabilities

- Initiate a single payment with payment-service and payment-product path parameters covering SEPA, instant, and cross-border instructions
- Retrieve a list of accounts the customer has authorised through an AIS consent
- Fetch balances and transaction history for a specific authorised account
- Create and authorise a Signing Basket grouping multiple payment instructions for joint authorisation
- Confirm whether sufficient funds exist on an account for a specified amount
- Manage payment cancellation authorisations for in-flight payments

## Use cases

### Swiss XS2A Payment Initiation

Initiate Swiss SEPA, instant, and cross-border payments from customer accounts through a single Berlin Group NextGenPSD2 interface. The /v1/{payment-service}/{payment-product} endpoint accepts the payment service (e.g. payments, periodic-payments) and product (e.g. sepa-credit-transfers, instant-sepa-credit-transfers) as path segments, with Redirect SCA handling the customer authorisation step.

Example prompt: POST /v1/payments/sepa-credit-transfers with debtor IBAN CH9300762011623852957 and creditor IBAN DE89370400440532013000 for EUR 250, then redirect the user to the SCARedirect link returned in _links.

### Account Aggregation

Aggregate balances and transactions across Swiss bank accounts after the customer authorises an AIS consent. The /v1/accounts, /v1/accounts/{account-id}, and /v1/accounts/{account-id}/balances endpoints expose the structured fields needed for personal finance dashboards and SME bookkeeping integrations without screen-scraping each bank's e-banking portal.

Example prompt: Read the active AIS consent ID, GET /v1/accounts to list authorised accounts, then GET /v1/accounts/{account-id}/balances for each to surface a unified balance view.

### Signing Basket Approvals

Group multiple payment instructions into a Signing Basket so the customer authorises them in a single SCA flow rather than approving each payment individually. This streamlines bulk supplier payments and treasury batches in corporate banking integrations, with the basket lifecycle tracked through dedicated authorisation and status endpoints.

Example prompt: Create a signing basket referencing five pending sepa-credit-transfer payment IDs, then trigger authorisation and poll status until the basket is finalised.

### AI Agent Cross-Bank Treasury

Through Jentic, an AI treasury agent can initiate payments and pull balances from any Swiss ASPSP that implements the obp.ch framework without learning each bank's portal. The agent searches for the right Berlin Group operation, loads the schema, and executes the call with bank-specific base URLs supplied via the catalogue.

Example prompt: Through Jentic, search for 'list Swiss bank accounts under an AIS consent', load GET /v1/accounts, and execute it with the active Consent-ID header to return all authorised accounts.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /v1/{payment-service}/{payment-product} | Initiate a payment by service and product |
| GET | /v1/{payment-service}/{payment-product}/{paymentId} | Retrieve a payment and its content |
| GET | /v1/{payment-service}/{payment-product}/{paymentId}/status | Get the status of a payment |
| GET | /v1/accounts | List accounts authorised under an AIS consent |
| GET | /v1/accounts/{account-id} | Read details for a specific account |
| GET | /v1/accounts/{account-id}/balances | Retrieve balances for an account |
| POST | /v1/{payment-service}/{payment-product}/{paymentId}/authorisations | Start an authorisation sub-resource for a payment |

## Key resources

- **Payments** — Initiate single, scheduled, and periodic payments by service and product
- **Accounts** — List authorised accounts and retrieve balances and transactions
- **Consents** — Create and manage AIS, PIS, and PIIS consents and their authorisations
- **Signing Baskets** — Group multiple payments into a single authorisation
- **Funds Confirmations** — Verify whether an account has sufficient funds for a given amount
- **Authorisations** — Drive the SCA flow for payments, consents, and baskets

## Why Jentic

- **Setup:** Wiring the Swiss NextGen Banking framework by hand means managing bearer tokens, eIDAS QWAC certificates, and per-ASPSP client credentials, then threading the Consent-ID, PSU-ID, and TPP-Redirect-URI headers through every Berlin Group XS2A call. Through Jentic you install once, import the Swiss NextGen Banking API from the API Directory, store the bearer and certificate credentials once, and your agent calls it.
- **Permission scoping:** The framework puts the account id and payment id in the URL path (/v1/accounts/{account-id}, /v1/{payment-service}/{payment-product}/{paymentId}), so a rule can pin your agent to one account or one payment: it can read that account's balances or track that payment's status. You choose the operations it may call, so payment initiation and authorisation are not included unless you add them.
- **Credential handling:** Your OAuth bearer tokens, eIDAS QWAC certificates, and per-ASPSP client credentials are stored once, encrypted, by your own Jentic One instance and applied at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'fetch account balances under an AIS consent' or 'initiate a Swiss payment', and Jentic returns the matching Berlin Group operation with the Consent-ID and PSU-ID header schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Payment Initiation API** — UK Open Banking PISP equivalent for CMA9 banks, not based on Berlin Group.
- **Open Data API** — Public product and branch data, useful alongside cross-border bank flows.
- **Plaid API** — Aggregator-style account access for cross-jurisdiction coverage outside Berlin Group.

## FAQ

### What authentication does the Swiss NextGen Banking API use?

The spec declares an HTTP Bearer scheme (BearerAuthOAuth) - the TPP obtains an OAuth 2.0 access token and presents it in the Authorization header. On top of that, ASPSPs require eIDAS QWAC mTLS at the transport layer and the customer SCA flow (Redirect, Decoupled, Embedded, or OAuth) for payment and consent authorisations. Through Jentic, the access token and certificates stay isolated in your Jentic One instance.

### Can I initiate a SEPA instant credit transfer with this API?

Yes. POST /v1/payments/instant-sepa-credit-transfers initiates an instant SEPA credit transfer; the same path pattern accepts other payment products such as sepa-credit-transfers, target-2-payments, and cross-border-credit-transfers. The Swiss edition refines message formats and adds Switzerland-specific examples while remaining compatible with Berlin Group v1.3.4.

### What are the rate limits for the Swiss NextGen Banking API?

The framework itself does not mandate a single rate limit - each implementing Swiss ASPSP defines its own quotas, typically published in its developer portal. AIS reads of balances and transactions are usually limited to four unattended pulls per day per consent under PSD2 norms; PIS calls are limited per TPP rather than per consent.

### How do I list authorised accounts through Jentic?

Search Jentic for 'list authorised Swiss bank accounts', load GET /v1/accounts, and execute it with the active Consent-ID header from the AIS consent flow. Jentic returns the structured account list so the agent can iterate through each account-id and call /balances or /transactions without parsing the obp.ch sandbox responses.

### Is the Swiss NextGen Banking API free?

The framework specification is open and free to consume. Calling live ASPSP endpoints requires TPP authorisation under PSD2/equivalent Swiss regulation, eIDAS QWAC certificates, and per-bank onboarding - costs sit with that registration and certificate process rather than with the spec itself.

### Can I cancel a payment after submission?

Yes for payments that have not yet executed: the spec exposes /v1/{payment-service}/{payment-product}/{paymentId}/cancellation-authorisations to start a cancellation authorisation sub-resource. Once an instant SEPA payment has settled it cannot be reversed through this API - settlement is irrevocable and any reversal requires an out-of-band recall.

### Can I limit what my agent is allowed to do with the Swiss NextGen Banking API?

Yes. Because you run Jentic One yourself, your own rules decide which Berlin Group XS2A operations and credentials the agent may use. Since the account id and payment id sit in the URL path (/v1/accounts/{account-id}, /v1/{payment-service}/{payment-product}/{paymentId}), a rule can pin the agent to one account or one payment so it only reads that account's balances or tracks that payment's status. You choose the operations it may call, so payment initiation and authorisation endpoints stay off limits unless you explicitly add them.
