From 1e140904dee06265fd112318300ab03590e3ff17 Mon Sep 17 00:00:00 2001 From: Maxence Busson Date: Mon, 11 May 2026 15:08:22 +0200 Subject: [PATCH 1/6] Initial draft --- docs/glossary.mdx | 74 ++++++++ docs/topics/definitions/_ais.mdx | 2 + docs/topics/definitions/_aisp.mdx | 2 + docs/topics/definitions/_berlin-group.mdx | 2 + docs/topics/definitions/_bulk-pis.mdx | 2 + docs/topics/definitions/_consent-token.mdx | 2 + docs/topics/definitions/_open-banking.mdx | 2 + docs/topics/definitions/_pis.mdx | 2 + docs/topics/definitions/_pisp.mdx | 2 + docs/topics/definitions/_psd2.mdx | 2 + docs/topics/definitions/_salt-edge.mdx | 2 + docs/topics/definitions/_sca.mdx | 2 + docs/topics/definitions/_tpp.mdx | 2 + docs/topics/open-banking/ais.mdx | 102 ++++++++++ docs/topics/open-banking/index.mdx | 207 +++++++++++++++++++++ docs/topics/open-banking/pis.mdx | 53 ++++++ sidebars.js | 18 ++ 17 files changed, 478 insertions(+) create mode 100644 docs/topics/definitions/_ais.mdx create mode 100644 docs/topics/definitions/_aisp.mdx create mode 100644 docs/topics/definitions/_berlin-group.mdx create mode 100644 docs/topics/definitions/_bulk-pis.mdx create mode 100644 docs/topics/definitions/_consent-token.mdx create mode 100644 docs/topics/definitions/_open-banking.mdx create mode 100644 docs/topics/definitions/_pis.mdx create mode 100644 docs/topics/definitions/_pisp.mdx create mode 100644 docs/topics/definitions/_psd2.mdx create mode 100644 docs/topics/definitions/_salt-edge.mdx create mode 100644 docs/topics/definitions/_sca.mdx create mode 100644 docs/topics/definitions/_tpp.mdx create mode 100644 docs/topics/open-banking/ais.mdx create mode 100644 docs/topics/open-banking/index.mdx create mode 100644 docs/topics/open-banking/pis.mdx diff --git a/docs/glossary.mdx b/docs/glossary.mdx index 4e00526196c..f4cbd9a39ef 100644 --- a/docs/glossary.mdx +++ b/docs/glossary.mdx @@ -160,6 +160,80 @@ import MerchantsDefinition from './topics/definitions/_merchants.mdx'; *** +import OpenBankingDefinition from './topics/definitions/_open-banking.mdx'; + +import AisDefinition from './topics/definitions/_ais.mdx'; + +import AispDefinition from './topics/definitions/_aisp.mdx'; + +import BerlinGroupDefinition from './topics/definitions/_berlin-group.mdx'; + +import BulkPisDefinition from './topics/definitions/_bulk-pis.mdx'; + +import ConsentTokenDefinition from './topics/definitions/_consent-token.mdx'; + +import PisDefinition from './topics/definitions/_pis.mdx'; + +import PispDefinition from './topics/definitions/_pisp.mdx'; + +import Psd2Definition from './topics/definitions/_psd2.mdx'; + +import SaltEdgeDefinition from './topics/definitions/_salt-edge.mdx'; + +import ScaDefinition from './topics/definitions/_sca.mdx'; + +import TppDefinition from './topics/definitions/_tpp.mdx'; + +## [Open Banking](topics/open-banking/index.mdx) {#open-banking} + + + +### [Account Information Service (AIS)](topics/open-banking/ais.mdx) {#ais} + + + +### Account Information Service Provider (AISP) {#aisp} + + + +### Berlin Group {#berlin-group} + + + +### Bulk Payment Initiation Service (Bulk PIS) {#bulk-pis} + + + +### Consent token {#consent-token} + + + +### [Payment Initiation Service (PIS)](topics/open-banking/pis.mdx) {#pis} + + + +### Payment Initiation Service Provider (PISP) {#pisp} + + + +### PSD2 {#psd2} + + + +### Salt Edge {#salt-edge} + + + +### Strong Customer Authentication (SCA) {#sca} + + + +### Third-Party Provider (TPP) {#tpp} + + + +*** + import PaymentDefinition from './topics/definitions/_payments.mdx'; ## [Payment](topics/payments/index.mdx) {#payments} diff --git a/docs/topics/definitions/_ais.mdx b/docs/topics/definitions/_ais.mdx new file mode 100644 index 00000000000..76b84e5bf42 --- /dev/null +++ b/docs/topics/definitions/_ais.mdx @@ -0,0 +1,2 @@ +An Open Banking service that lets a Third-Party Provider retrieve account information from a user's payment account. +The Account Information Service (AIS) covers account details, balances, and transaction history, accessed under PSD2 with the user's consent. diff --git a/docs/topics/definitions/_aisp.mdx b/docs/topics/definitions/_aisp.mdx new file mode 100644 index 00000000000..2f31e0509dc --- /dev/null +++ b/docs/topics/definitions/_aisp.mdx @@ -0,0 +1,2 @@ +A Third-Party Provider authorized to access account information on behalf of a user. +Account Information Service Providers (AISPs) can read account balances and transaction history after the user grants explicit consent. diff --git a/docs/topics/definitions/_berlin-group.mdx b/docs/topics/definitions/_berlin-group.mdx new file mode 100644 index 00000000000..d0b7c483d03 --- /dev/null +++ b/docs/topics/definitions/_berlin-group.mdx @@ -0,0 +1,2 @@ +A pan-European standards initiative that defines the API specifications most banks use for Open Banking. +Swan's Open Banking interface follows the Berlin Group standard, which gives Third-Party Providers a consistent way to access accounts across the European Economic Area. diff --git a/docs/topics/definitions/_bulk-pis.mdx b/docs/topics/definitions/_bulk-pis.mdx new file mode 100644 index 00000000000..95ce5530c06 --- /dev/null +++ b/docs/topics/definitions/_bulk-pis.mdx @@ -0,0 +1,2 @@ +An Open Banking service that lets a Third-Party Provider initiate several payments in a single request. +Bulk Payment Initiation Service (Bulk PIS) is typically used by accounting and treasury tools to batch outgoing SEPA Credit Transfers. diff --git a/docs/topics/definitions/_consent-token.mdx b/docs/topics/definitions/_consent-token.mdx new file mode 100644 index 00000000000..41c793e732a --- /dev/null +++ b/docs/topics/definitions/_consent-token.mdx @@ -0,0 +1,2 @@ +A 180-day token that grants a Third-Party Provider access to a user's Swan account for Open Banking purposes. +The consent token is issued after the user completes Strong Customer Authentication and must be renewed every 180 days, as required by PSD2. diff --git a/docs/topics/definitions/_open-banking.mdx b/docs/topics/definitions/_open-banking.mdx new file mode 100644 index 00000000000..7911c28df30 --- /dev/null +++ b/docs/topics/definitions/_open-banking.mdx @@ -0,0 +1,2 @@ +A European framework that lets users grant regulated third parties access to their payment accounts. +Swan's Open Banking service allows licensed providers to retrieve account information and initiate payments on behalf of Swan account holders, in line with the PSD2 regulation. diff --git a/docs/topics/definitions/_pis.mdx b/docs/topics/definitions/_pis.mdx new file mode 100644 index 00000000000..6db4883b7d4 --- /dev/null +++ b/docs/topics/definitions/_pis.mdx @@ -0,0 +1,2 @@ +An Open Banking service that lets a Third-Party Provider initiate a payment from a user's account. +The Payment Initiation Service (PIS) requires the user to grant consent for each individual payment. diff --git a/docs/topics/definitions/_pisp.mdx b/docs/topics/definitions/_pisp.mdx new file mode 100644 index 00000000000..37d4778da67 --- /dev/null +++ b/docs/topics/definitions/_pisp.mdx @@ -0,0 +1,2 @@ +A Third-Party Provider authorized to initiate payments on behalf of a user. +Payment Initiation Service Providers (PISPs) can request SEPA Credit Transfers from a user's account after the user grants explicit consent for each payment. diff --git a/docs/topics/definitions/_psd2.mdx b/docs/topics/definitions/_psd2.mdx new file mode 100644 index 00000000000..df601b0e741 --- /dev/null +++ b/docs/topics/definitions/_psd2.mdx @@ -0,0 +1,2 @@ +The second Payment Services Directive, an EU regulation that governs electronic payment services across the European Economic Area. +PSD2 requires banks to give regulated Third-Party Providers access to payment accounts, with the account holder's consent, through Open Banking interfaces. diff --git a/docs/topics/definitions/_salt-edge.mdx b/docs/topics/definitions/_salt-edge.mdx new file mode 100644 index 00000000000..ef899c792c3 --- /dev/null +++ b/docs/topics/definitions/_salt-edge.mdx @@ -0,0 +1,2 @@ +Swan's PSD2 compliance platform and technical intermediary for Open Banking. +Salt Edge sits between Third-Party Providers and Swan, managing TPP registration, authentication flows, and data formatting to the Berlin Group standard. diff --git a/docs/topics/definitions/_sca.mdx b/docs/topics/definitions/_sca.mdx new file mode 100644 index 00000000000..0b6d4c773e1 --- /dev/null +++ b/docs/topics/definitions/_sca.mdx @@ -0,0 +1,2 @@ +A PSD2 requirement that protects sensitive banking actions with two independent authentication factors. +Strong Customer Authentication (SCA) combines something the user has (such as their phone) with something they know or are (such as a passcode or biometric), and is required for Open Banking consent and payment confirmation. diff --git a/docs/topics/definitions/_tpp.mdx b/docs/topics/definitions/_tpp.mdx new file mode 100644 index 00000000000..ded6c4a319c --- /dev/null +++ b/docs/topics/definitions/_tpp.mdx @@ -0,0 +1,2 @@ +A regulated company licensed to access bank data or initiate payments on a user's behalf. +Third-Party Providers (TPPs) are authorized under PSD2 and connect to Swan accounts through Salt Edge, Swan's compliance platform. diff --git a/docs/topics/open-banking/ais.mdx b/docs/topics/open-banking/ais.mdx new file mode 100644 index 00000000000..3ee20c15be6 --- /dev/null +++ b/docs/topics/open-banking/ais.mdx @@ -0,0 +1,102 @@ +--- +title: Account Information Service (AIS) +--- + +# Account Information Service (AIS) + +import AisDefinition from '../definitions/_ais.mdx'; + +> + +AIS allows Third-Party Providers (TPPs) to retrieve data from Swan accounts on behalf of users. + +## What TPPs can access {#access} + +- Account list and details. +- Account balances (available, booked, and pending). +- Transaction history, with filtering and pagination. + +## Common AIS use cases {#use-cases} + +- Accounting and financial management software importing bank transactions automatically. +- Personal finance management apps aggregating balances across multiple banks. +- Business expense tracking and reconciliation tools. + +## Access conditions {#conditions} + +- The [Swan user](/topics/users/) must authenticate and grant explicit consent. +- The user must have an active [account membership](/topics/accounts/memberships/) with the `canViewAccount` permission. +- Consent must be valid, meaning it has not expired or been revoked. +- The connection must be active, meaning Salt Edge's daily refresh is working. + +## Transaction history {#transaction-history} + +- By default, Swan returns **all transactions** since account creation, including cards and transfers. +- TPPs commonly filter results to the **last 3 months** on their end. +- Some TPPs expose a specific endpoint that lets users retrieve transaction history beyond 3 months. + +## Account scope {#account-scope} + +By default, Swan returns **all accounts** the user has access to. + +:::note All or nothing +The consent flow does not allow users to select a subset of accounts; it is all or nothing. +This is a current limitation of the consent flow. +::: + +## No accounts visible after authentication {#troubleshooting-no-accounts} + +This commonly happens when a user authenticates with their **personal phone number**, but their Swan account is tied to their **professional phone number**. +The phone number is Swan's unique [user](/topics/users/) identifier, so authentication succeeds but returns no accounts. + +**Solutions**: + +- **Option 1, try with the correct phone number**: authenticate again using the professional phone number linked to the Swan account. +- **Option 2, transfer accounts to the personal phone number**: + 1. If the personal phone number is already linked to another Swan user, that user must first be deactivated to free the number (see the [`deactivateUser` mutation preconditions](/topics/users/overview/guide-deactivate)). + 1. The user linked to the professional phone number (and to the accounts) then changes their phone number to the personal one at [link.swan.io/edit-phone](https://link.swan.io/edit-phone). + 1. Once complete, the accounts are accessible using the personal phone number. + +For complex cases involving multi-project users, contact Swan Support. + +## Transaction field mapping {#field-mapping} + +The table below maps Swan's internal transaction fields to the external fields exposed through Salt Edge, following the Berlin Group standard. + +| Internal field (Swan) | External field (Salt Edge) | Notes | +|---|---|---| +| `id` | `id` | | +| `amount.value` | `amount` | Negative string for debit, positive for credit. | +| `amount.currency` | `currency` | Currency code, such as `EUR` or `USD`. | +| `statusInfo.bookingDate` | `booking_date` | Optional. Date in `YYYY-MM-DD` format. | +| `statusInfo.status` | `status` | Only `Booked` and `Pending` transactions are exposed. `Rejected` transactions are not served through AIS. | +| `statusInfo.valueDate` when `Booked`, otherwise `updatedAt` | `value_date` | Date in `YYYY-MM-DD` format. When the transaction is not booked, this refers to the `updatedAt` date. | +| `label` | `remittance_information.unstructured` | Transaction label or description. Swan defaults to something like `Transfer to/from X` if the input was empty when initiating a SEPA Credit Transfer. | +| `reference` | `remittance_information.structured` | Structured payment reference. | +| `paymentId` | `extra.additional_information` | Not the same as the transaction ID. A payment can have multiple transactions, for example for fees. | +| For SCTs: `creditor.name`. Else if user is on the credit side: `account.holder.info.name`. Else: `counterparty`. | `creditor_details.name` | Creditor or recipient name. | +| `creditor.IBAN` | `creditor_details.account.iban` | Optional. Always served when the transaction is a SEPA Credit Transfer or the end user is on the credit side. | +| `creditor.currency` | `creditor_details.account.currency` | Optional. Only served when the end user is on the credit side. | +| For SCTs: `debtor.name`. Else if user is on the debit side: `account.holder.info.name`. Else: `counterparty`. | `debtor_details.name` | Debtor or payer name. | +| `debtor.IBAN` | `debtor_details.account.iban` | Optional. Always served when the transaction is a SEPA Credit Transfer or the end user is on the debit side. | +| `debtor.currency` | `debtor_details.account.currency` | Optional. Only served when the end user is on the debit side. | + +:::note Why rejected transactions are not served +Rejected transactions were never actually debited or credited. +They represent failed payment attempts rather than completed financial movements, so they are excluded from AIS data. +::: + +:::caution Reconciliation: do not use `value_date` for pending transactions +For pending transactions, `value_date` maps to `updatedAt`, which changes every time the transaction is updated. + +Instead: + +- Use `id` as the stable unique key across all states. +- Use `booking_date` as the date anchor. +- Only reconcile transactions with status `booked`. +::: + +### References {#references} + +- [Salt Edge transaction docs](https://priora.saltedge.com/docs/aspsp/v2/swan/ais#connector-endpoints-accounts-accounts-transactions). +- [Swan Transaction interface](https://api-reference.swan.io/interfaces/transaction). diff --git a/docs/topics/open-banking/index.mdx b/docs/topics/open-banking/index.mdx new file mode 100644 index 00000000000..18b3cdfe9bc --- /dev/null +++ b/docs/topics/open-banking/index.mdx @@ -0,0 +1,207 @@ +--- +title: Open Banking overview +--- + +# Open Banking + +import OpenBankingDefinition from '../definitions/_open-banking.mdx'; +import TppDefinition from '../definitions/_tpp.mdx'; +import AispDefinition from '../definitions/_aisp.mdx'; +import PispDefinition from '../definitions/_pisp.mdx'; +import AisDefinition from '../definitions/_ais.mdx'; +import PisDefinition from '../definitions/_pis.mdx'; +import BulkPisDefinition from '../definitions/_bulk-pis.mdx'; +import Psd2Definition from '../definitions/_psd2.mdx'; +import BerlinGroupDefinition from '../definitions/_berlin-group.mdx'; +import SaltEdgeDefinition from '../definitions/_salt-edge.mdx'; +import ScaDefinition from '../definitions/_sca.mdx'; +import ConsentTokenDefinition from '../definitions/_consent-token.mdx'; + +## Overview {#overview} + +> + +Open Banking gives users control over their financial data by allowing them to grant trusted third-party applications access to their Swan accounts. +Swan's implementation is powered by **Salt Edge**, which serves as the PSD2 compliance platform connecting Third-Party Providers (TPPs) to Swan's banking infrastructure. + +Swan supports two Open Banking services, plus a bulk variant for batched payments. + +| Service | Abbreviation | Description | +|---|---|---| +| Account Information Service | AIS | TPPs can access account balances and transaction history. | +| Payment Initiation Service | PIS | TPPs can initiate SEPA Credit Transfers directly from accounts. | +| Bulk Payment Initiation Service | Bulk PIS | TPPs can initiate batched SEPA Credit Transfers directly from accounts. | + +:::tip Open Banking vs Swan GraphQL API +Swan's GraphQL API allows **partners** to embed banking services into their products. +The Open Banking API enables **regulated TPPs** to offer aggregation and payment services to users who already hold Swan accounts. +These are two distinct access models. +::: + +## How it works {#how-it-works} + +A common Open Banking use case involves three parties: a **software application** (such as accounting or financial management software), a **TPP** (a regulated aggregator the software works with), and a [**Swan user**](/topics/users/). + +The connection is typically established as follows. + +1. The user works with a software application and wants to connect their Swan account to it. +1. The software relies on a TPP to establish the bank connection. +1. The TPP sends an authorization request to **Salt Edge**, Swan's PSD2 compliance platform. +1. Salt Edge redirects the user to Swan's consent application. +1. The user authenticates with **Strong Customer Authentication (SCA)**. +1. The user grants explicit consent to the TPP on behalf of the software. +1. Salt Edge receives an access token and enables data access or payment initiation. +1. The software application can now access account data (AIS) or initiate payments (PIS) on behalf of the user. + +:::note TPPs don't connect to Swan directly +All requests go through Salt Edge, which acts as the compliance layer between TPPs and Swan's internal systems. +::: + +## Architecture {#architecture} + +```mermaid +%%{ init: { 'flowchart': { 'curve': 'linear' } } }%% +flowchart TB + U([User]) --> SA([Software application]) + SA --> TPP([TPP aggregator]) + TPP --> SE([Salt Edge
PSD2 compliance platform]) + SE --> PC([PSD2 Connector
Swan]) + PC --> API([Swan GraphQL API
and internal systems]) +``` + +| Component | Role | +|---|---| +| Software application | The application the end user interacts with, such as accounting, finance, or ERP tools. | +| TPP | Regulated aggregator the software works with to access bank data or initiate payments. | +| Salt Edge | PSD2 compliance platform that manages TPP registration, authentication flows, and data formatting to the Berlin Group standard. | +| PSD2 Connector | Swan's custom integration layer between Salt Edge and Swan's internal systems. | +| Swan GraphQL API | Internal source of account data and payment execution. | + +## Open Banking ecosystem {#ecosystem} + +Open Banking relies on a network of regulated TPPs that connect banking data to software applications. + +### Connected TPPs {#ecosystem-tpps} + +The following TPPs are currently registered and active on Swan's Open Banking infrastructure. + +| Legal entity | Commercial name | Type | Country | Description | +|---|---|---|---|---| +| Bridge | **Bridge** | AIS and PIS | πŸ‡«πŸ‡· France | Open Banking API for payment initiation and financial data aggregation. | +| Linxo | **Linxo Connect** | AIS and PIS | πŸ‡«πŸ‡· France | Open Banking solutions by Linxo Group, a CrΓ©dit Agricole subsidiary. | +| Fintecture | **Fintecture** | AIS and PIS | πŸ‡«πŸ‡· France | Payment initiation and bank data platform for B2B payments. | +| Powens | **Powens** (formerly Budget Insight) | AIS | πŸ‡«πŸ‡· France | European Open Finance platform for account aggregation and financial data. | +| SI-Expertise | **SI-Expertise** | AIS | πŸ‡«πŸ‡· France | French regulated TPP. | +| Wildmee | **Wildmee** | AIS | πŸ‡«πŸ‡· France | French regulated TPP. | +| finAPI GmbH | **finAPI** | AIS and PIS | πŸ‡©πŸ‡ͺ Germany | German Open Banking platform, used for accounting and ERP integrations. | +| fino run GmbH | **fino.digital** | AIS | πŸ‡©πŸ‡ͺ Germany | AI-based account analysis and Open Banking solutions for businesses. | +| MRH applications GmbH | **MRH applications** | AIS | πŸ‡©πŸ‡ͺ Germany | German regulated TPP. | +| GoCardless | **GoCardless** | AIS | πŸ‡¬πŸ‡§ UK | Global payment and bank debit platform. | +| Unlimit EU Ltd | **Unlimit** | PIS | πŸ‡¨πŸ‡Ύ Cyprus | Global fintech offering payment processing, BaaS, and Open Banking payment initiation services. | +| iban-XS B.V. | **ibanXS** | AIS and PIS | πŸ‡³πŸ‡± Netherlands | PSD2-regulated payment and Open Banking services across Europe. | +| Isabel NV/SA | **Ponto** | AIS | πŸ‡§πŸ‡ͺ Belgium | B2B Open Banking platform for accounting and ERP integrations. | +| Digiteal SA | **Digiteal** | AIS and PIS | πŸ‡§πŸ‡ͺ Belgium | E-invoice presentment, electronic payments, and Open Banking. | +| BudgetBakers s.r.o. | **Wallet by BudgetBakers** | AIS | πŸ‡¨πŸ‡Ώ Czech Republic | Personal finance management app with over 10 million users. | +| SPENDEE a.s. | **Spendee** | AIS | πŸ‡¨πŸ‡Ώ Czech Republic | Money manager and budget planner app. | + +## Authentication and consent {#auth-consent} + +### Strong Customer Authentication {#sca} + +> + +Every Open Banking connection requires SCA. +This works the same way as when a Swan user logs into Web Banking or initiates a payment: two authentication factors are required. + +1. **Possession factor**: the user receives an SMS with a unique URL, tied to their phone or SIM card. +1. **Knowledge or inherence factor**: the user enters their 6-digit passcode, or uses Face ID or Touch ID. + +### Token architecture {#tokens} + +Two separate tokens govern the Open Banking connection. + +| Token | Lifecycle | Managed by | Description | +|---|---|---|---| +| User consent token | 180 days | TPP and Salt Edge | Grants the TPP access to account data. Requires user SCA to renew. | +| Technical refresh token | 24 hours | Swan and Salt Edge | Maintains the data refresh connection. Renewed automatically. | + +:::note User token renewal +Every 180 days, the user must re-authenticate with SCA to renew the consent token. +This is a European regulatory requirement under PSD2. +Renewal is initiated by the TPP through Salt Edge. +Swan cannot trigger this renewal directly. +::: + +:::note Technical token refresh +Most TPPs can perform up to 4 refreshes per day, as set out in the [PSD2 EBA Q&A on refresh frequency](https://www.eba.europa.eu/single-rule-book-qa/qna/view/publicId/2018_4210). +::: + +### Consent validity {#consent-validity} + +- **AIS**: consent grants data access for up to 180 days before re-authentication is required. +- **PIS**: each payment requires individual consent. + +:::note Transactions since account creation +The 180-day limit applies to how long the consent grants data access, not to the time range of transactions you can view. +By default, Swan returns all transactions since the account was created. +::: + +### Consent revocation {#consent-revocation} + +The user consent token can be revoked by the TPP, following a request from the end user. + +:::tip Coming with PSD3 +With the implementation of **PSD3**, it will become mandatory to allow end users to revoke their consent directly from their online banking interface. +::: + +## Key concepts {#key-concepts} + +The following terms appear throughout Swan's Open Banking documentation. + +### Open Banking + + + +### Third-Party Provider (TPP) + + + +### Account Information Service Provider (AISP) + + + +### Payment Initiation Service Provider (PISP) + + + +### Account Information Service (AIS) + + + +### Payment Initiation Service (PIS) + + + +### Bulk Payment Initiation Service (Bulk PIS) + + + +### PSD2 + + + +### Berlin Group + + + +### Salt Edge + + + +### Strong Customer Authentication (SCA) + + + +### Consent token + + diff --git a/docs/topics/open-banking/pis.mdx b/docs/topics/open-banking/pis.mdx new file mode 100644 index 00000000000..41ebd267896 --- /dev/null +++ b/docs/topics/open-banking/pis.mdx @@ -0,0 +1,53 @@ +--- +title: Payment Initiation Service (PIS) +--- + +# Payment Initiation Service (PIS) + +import PisDefinition from '../definitions/_pis.mdx'; + +> + +PIS allows Third-Party Providers (TPPs) to initiate payments directly from Swan accounts on behalf of users. + +## What TPPs can initiate {#supported} + +- SEPA Credit Transfers (regular and instant). +- Bulk payments. + +## What is not yet supported {#unsupported} + +- Standing orders and recurring payments. +- International Credit Transfers. + +## PIS flow {#flow} + +The diagram below shows the full PIS sequence, from the moment the user initiates a payment in their software application to the final confirmation message. + +```mermaid +sequenceDiagram +autonumber +participant U as User +participant SA as Software application +participant TPP as TPP +participant SE as Salt Edge +participant S as Swan + U->>SA: Initiates payment + SA->>TPP: Sends payment initiation request + TPP->>SE: Forwards request + SE->>S: PSD2 Connector creates PaymentSession + S-->>U: Redirects to Swan consent application + U->>S: Completes OAuth consent (SCA) + U->>S: Selects Swan account to use as debtor account + S->>S: Initiates credit transfer pending consent + U->>S: Reviews payment details + U->>S: Confirms payment with payment consent (SCA) + S->>S: Executes the transfer + S-->>SE: Sends status update via webhook + SE-->>TPP: Forwards status update + TPP-->>SA: Notifies software application, which displays confirmation to the user +``` + +### References {#references} + +- [Salt Edge PIS docs](https://priora.saltedge.com/docs/aspsp/v2/swan/pis). diff --git a/sidebars.js b/sidebars.js index e4367a08619..960c1338c07 100644 --- a/sidebars.js +++ b/sidebars.js @@ -395,6 +395,24 @@ module.exports = { }, ], }, + { + type: "category", + label: "Open Banking", + collapsible: false, + collapsed: false, + items: [ + { + type: "category", + label: "Open Banking overview", + link: { type: "doc", id: "topics/open-banking/index" }, + collapsed: true, + items: [ + "topics/open-banking/ais", + "topics/open-banking/pis", + ], + }, + ], + }, { type: "category", label: "Payments", From c181475232155a2bf63be445a65bc67784f192da Mon Sep 17 00:00:00 2001 From: Maxence Busson Date: Mon, 11 May 2026 15:49:45 +0200 Subject: [PATCH 2/6] Proofreading and applying fixes --- docs/topics/open-banking/ais.mdx | 10 ++++---- docs/topics/open-banking/index.mdx | 21 ++++++++++------- docs/topics/open-banking/pis.mdx | 38 +++++++++++++++--------------- sidebars.js | 2 +- 4 files changed, 38 insertions(+), 33 deletions(-) diff --git a/docs/topics/open-banking/ais.mdx b/docs/topics/open-banking/ais.mdx index 3ee20c15be6..a90f4f64406 100644 --- a/docs/topics/open-banking/ais.mdx +++ b/docs/topics/open-banking/ais.mdx @@ -31,13 +31,13 @@ AIS allows Third-Party Providers (TPPs) to retrieve data from Swan accounts on b ## Transaction history {#transaction-history} -- By default, Swan returns **all transactions** since account creation, including cards and transfers. -- TPPs commonly filter results to the **last 3 months** on their end. +- By default, Swan returns all transactions since account creation, including cards and transfers. +- TPPs commonly filter results to the last 3 months on their end. - Some TPPs expose a specific endpoint that lets users retrieve transaction history beyond 3 months. ## Account scope {#account-scope} -By default, Swan returns **all accounts** the user has access to. +By default, Swan returns all accounts the user has access to. :::note All or nothing The consent flow does not allow users to select a subset of accounts; it is all or nothing. @@ -46,7 +46,7 @@ This is a current limitation of the consent flow. ## No accounts visible after authentication {#troubleshooting-no-accounts} -This commonly happens when a user authenticates with their **personal phone number**, but their Swan account is tied to their **professional phone number**. +This commonly happens when a user authenticates with their personal phone number, but their Swan account is tied to their professional phone number. The phone number is Swan's unique [user](/topics/users/) identifier, so authentication succeeds but returns no accounts. **Solutions**: @@ -96,7 +96,7 @@ Instead: - Only reconcile transactions with status `booked`. ::: -### References {#references} +## References {#references} - [Salt Edge transaction docs](https://priora.saltedge.com/docs/aspsp/v2/swan/ais#connector-endpoints-accounts-accounts-transactions). - [Swan Transaction interface](https://api-reference.swan.io/interfaces/transaction). diff --git a/docs/topics/open-banking/index.mdx b/docs/topics/open-banking/index.mdx index 18b3cdfe9bc..57c37991555 100644 --- a/docs/topics/open-banking/index.mdx +++ b/docs/topics/open-banking/index.mdx @@ -1,5 +1,5 @@ --- -title: Open Banking overview +title: Open Banking --- # Open Banking @@ -22,7 +22,7 @@ import ConsentTokenDefinition from '../definitions/_consent-token.mdx'; > Open Banking gives users control over their financial data by allowing them to grant trusted third-party applications access to their Swan accounts. -Swan's implementation is powered by **Salt Edge**, which serves as the PSD2 compliance platform connecting Third-Party Providers (TPPs) to Swan's banking infrastructure. +Swan's implementation is powered by Salt Edge, which serves as the PSD2 compliance platform connecting Third-Party Providers (TPPs) to Swan's banking infrastructure. Swan supports two Open Banking services, plus a bulk variant for batched payments. @@ -33,22 +33,22 @@ Swan supports two Open Banking services, plus a bulk variant for batched payment | Bulk Payment Initiation Service | Bulk PIS | TPPs can initiate batched SEPA Credit Transfers directly from accounts. | :::tip Open Banking vs Swan GraphQL API -Swan's GraphQL API allows **partners** to embed banking services into their products. -The Open Banking API enables **regulated TPPs** to offer aggregation and payment services to users who already hold Swan accounts. +Swan's GraphQL API allows partners to embed banking services into their products. +The Open Banking API enables regulated TPPs to offer aggregation and payment services to users who already hold Swan accounts. These are two distinct access models. ::: ## How it works {#how-it-works} -A common Open Banking use case involves three parties: a **software application** (such as accounting or financial management software), a **TPP** (a regulated aggregator the software works with), and a [**Swan user**](/topics/users/). +A common Open Banking use case involves three parties: a software application (such as accounting or financial management software), a TPP (a regulated aggregator the software works with), and a [Swan user](/topics/users/). The connection is typically established as follows. 1. The user works with a software application and wants to connect their Swan account to it. 1. The software relies on a TPP to establish the bank connection. -1. The TPP sends an authorization request to **Salt Edge**, Swan's PSD2 compliance platform. +1. The TPP sends an authorization request to Salt Edge, Swan's PSD2 compliance platform. 1. Salt Edge redirects the user to Swan's consent application. -1. The user authenticates with **Strong Customer Authentication (SCA)**. +1. The user authenticates with Strong Customer Authentication (SCA). 1. The user grants explicit consent to the TPP on behalf of the software. 1. Salt Edge receives an access token and enables data access or payment initiation. 1. The software application can now access account data (AIS) or initiate payments (PIS) on behalf of the user. @@ -85,6 +85,11 @@ Open Banking relies on a network of regulated TPPs that connect banking data to The following TPPs are currently registered and active on Swan's Open Banking infrastructure. +:::note +This list reflects TPPs registered with Swan's Open Banking infrastructure as of May 2026. +The list is maintained by Salt Edge and may change. +::: + | Legal entity | Commercial name | Type | Country | Description | |---|---|---|---|---| | Bridge | **Bridge** | AIS and PIS | πŸ‡«πŸ‡· France | Open Banking API for payment initiation and financial data aggregation. | @@ -151,7 +156,7 @@ By default, Swan returns all transactions since the account was created. The user consent token can be revoked by the TPP, following a request from the end user. :::tip Coming with PSD3 -With the implementation of **PSD3**, it will become mandatory to allow end users to revoke their consent directly from their online banking interface. +With the implementation of PSD3, it will become mandatory to allow end users to revoke their consent directly from their online banking interface. ::: ## Key concepts {#key-concepts} diff --git a/docs/topics/open-banking/pis.mdx b/docs/topics/open-banking/pis.mdx index 41ebd267896..ecb8a819460 100644 --- a/docs/topics/open-banking/pis.mdx +++ b/docs/topics/open-banking/pis.mdx @@ -27,25 +27,25 @@ The diagram below shows the full PIS sequence, from the moment the user initiate ```mermaid sequenceDiagram autonumber -participant U as User -participant SA as Software application -participant TPP as TPP -participant SE as Salt Edge -participant S as Swan - U->>SA: Initiates payment - SA->>TPP: Sends payment initiation request - TPP->>SE: Forwards request - SE->>S: PSD2 Connector creates PaymentSession - S-->>U: Redirects to Swan consent application - U->>S: Completes OAuth consent (SCA) - U->>S: Selects Swan account to use as debtor account - S->>S: Initiates credit transfer pending consent - U->>S: Reviews payment details - U->>S: Confirms payment with payment consent (SCA) - S->>S: Executes the transfer - S-->>SE: Sends status update via webhook - SE-->>TPP: Forwards status update - TPP-->>SA: Notifies software application, which displays confirmation to the user +participant User +participant SoftwareApp as Software application +participant TPP +participant SaltEdge as Salt Edge +participant Swan + User->>SoftwareApp: Initiates payment + SoftwareApp->>TPP: Sends payment initiation request + TPP->>SaltEdge: Forwards request + SaltEdge->>Swan: PSD2 Connector creates PaymentSession + Swan-->>User: Redirects to Swan consent application + User->>Swan: Completes OAuth consent (SCA) + User->>Swan: Selects Swan account to use as debtor account + Swan->>Swan: Initiates credit transfer pending consent + User->>Swan: Reviews payment details + User->>Swan: Confirms payment with payment consent (SCA) + Swan->>Swan: Executes the transfer + Swan-->>SaltEdge: Sends status update via webhook + SaltEdge-->>TPP: Forwards status update + TPP-->>SoftwareApp: Notifies software application, which displays confirmation to the user ``` ### References {#references} diff --git a/sidebars.js b/sidebars.js index 960c1338c07..9eb917c2f83 100644 --- a/sidebars.js +++ b/sidebars.js @@ -403,7 +403,7 @@ module.exports = { items: [ { type: "category", - label: "Open Banking overview", + label: "Overview", link: { type: "doc", id: "topics/open-banking/index" }, collapsed: true, items: [ From 2bb41a8f4096a0f505a4baee371367f39de108ac Mon Sep 17 00:00:00 2001 From: Maxence Busson Date: Mon, 11 May 2026 16:24:59 +0200 Subject: [PATCH 3/6] Final voice & style pass --- docs/topics/definitions/_bulk-pis.mdx | 2 +- docs/topics/definitions/_consent-token.mdx | 2 +- docs/topics/definitions/_open-banking.mdx | 2 +- docs/topics/definitions/_pis.mdx | 2 +- docs/topics/definitions/_psd2.mdx | 2 +- docs/topics/definitions/_salt-edge.mdx | 2 +- docs/topics/open-banking/ais.mdx | 4 +-- docs/topics/open-banking/index.mdx | 32 ++++++++++------------ docs/topics/open-banking/pis.mdx | 4 +-- 9 files changed, 25 insertions(+), 27 deletions(-) diff --git a/docs/topics/definitions/_bulk-pis.mdx b/docs/topics/definitions/_bulk-pis.mdx index 95ce5530c06..9433937048b 100644 --- a/docs/topics/definitions/_bulk-pis.mdx +++ b/docs/topics/definitions/_bulk-pis.mdx @@ -1,2 +1,2 @@ An Open Banking service that lets a Third-Party Provider initiate several payments in a single request. -Bulk Payment Initiation Service (Bulk PIS) is typically used by accounting and treasury tools to batch outgoing SEPA Credit Transfers. +Bulk Payment Initiation Service (Bulk PIS) is used by accounting and treasury tools to batch outgoing SEPA Credit Transfers. diff --git a/docs/topics/definitions/_consent-token.mdx b/docs/topics/definitions/_consent-token.mdx index 41c793e732a..40847d301c6 100644 --- a/docs/topics/definitions/_consent-token.mdx +++ b/docs/topics/definitions/_consent-token.mdx @@ -1,2 +1,2 @@ -A 180-day token that grants a Third-Party Provider access to a user's Swan account for Open Banking purposes. +A 180-day token granting a Third-Party Provider Open Banking access to a user's Swan account. The consent token is issued after the user completes Strong Customer Authentication and must be renewed every 180 days, as required by PSD2. diff --git a/docs/topics/definitions/_open-banking.mdx b/docs/topics/definitions/_open-banking.mdx index 7911c28df30..6086379aa9a 100644 --- a/docs/topics/definitions/_open-banking.mdx +++ b/docs/topics/definitions/_open-banking.mdx @@ -1,2 +1,2 @@ A European framework that lets users grant regulated third parties access to their payment accounts. -Swan's Open Banking service allows licensed providers to retrieve account information and initiate payments on behalf of Swan account holders, in line with the PSD2 regulation. +Swan's Open Banking service lets licensed providers retrieve account information and initiate payments on behalf of Swan account holders, under PSD2. diff --git a/docs/topics/definitions/_pis.mdx b/docs/topics/definitions/_pis.mdx index 6db4883b7d4..6a62af3630a 100644 --- a/docs/topics/definitions/_pis.mdx +++ b/docs/topics/definitions/_pis.mdx @@ -1,2 +1,2 @@ An Open Banking service that lets a Third-Party Provider initiate a payment from a user's account. -The Payment Initiation Service (PIS) requires the user to grant consent for each individual payment. +The Payment Initiation Service (PIS) requires the user to grant consent for each payment. diff --git a/docs/topics/definitions/_psd2.mdx b/docs/topics/definitions/_psd2.mdx index df601b0e741..ceb1379efd8 100644 --- a/docs/topics/definitions/_psd2.mdx +++ b/docs/topics/definitions/_psd2.mdx @@ -1,2 +1,2 @@ The second Payment Services Directive, an EU regulation that governs electronic payment services across the European Economic Area. -PSD2 requires banks to give regulated Third-Party Providers access to payment accounts, with the account holder's consent, through Open Banking interfaces. +PSD2 requires banks to give regulated Third-Party Providers access to payment accounts through Open Banking interfaces, with the account holder's consent. diff --git a/docs/topics/definitions/_salt-edge.mdx b/docs/topics/definitions/_salt-edge.mdx index ef899c792c3..264f2c51bd3 100644 --- a/docs/topics/definitions/_salt-edge.mdx +++ b/docs/topics/definitions/_salt-edge.mdx @@ -1,2 +1,2 @@ -Swan's PSD2 compliance platform and technical intermediary for Open Banking. +Swan's PSD2 compliance platform for Open Banking. Salt Edge sits between Third-Party Providers and Swan, managing TPP registration, authentication flows, and data formatting to the Berlin Group standard. diff --git a/docs/topics/open-banking/ais.mdx b/docs/topics/open-banking/ais.mdx index a90f4f64406..081f834ff12 100644 --- a/docs/topics/open-banking/ais.mdx +++ b/docs/topics/open-banking/ais.mdx @@ -33,7 +33,7 @@ AIS allows Third-Party Providers (TPPs) to retrieve data from Swan accounts on b - By default, Swan returns all transactions since account creation, including cards and transfers. - TPPs commonly filter results to the last 3 months on their end. -- Some TPPs expose a specific endpoint that lets users retrieve transaction history beyond 3 months. +- Some TPPs expose an endpoint that lets users retrieve transaction history beyond 3 months. ## Account scope {#account-scope} @@ -46,7 +46,7 @@ This is a current limitation of the consent flow. ## No accounts visible after authentication {#troubleshooting-no-accounts} -This commonly happens when a user authenticates with their personal phone number, but their Swan account is tied to their professional phone number. +This happens when a user authenticates with their **personal phone number**, but their Swan account is tied to their **professional phone number**. The phone number is Swan's unique [user](/topics/users/) identifier, so authentication succeeds but returns no accounts. **Solutions**: diff --git a/docs/topics/open-banking/index.mdx b/docs/topics/open-banking/index.mdx index 57c37991555..4b9390ffba8 100644 --- a/docs/topics/open-banking/index.mdx +++ b/docs/topics/open-banking/index.mdx @@ -21,8 +21,8 @@ import ConsentTokenDefinition from '../definitions/_consent-token.mdx'; > -Open Banking gives users control over their financial data by allowing them to grant trusted third-party applications access to their Swan accounts. -Swan's implementation is powered by Salt Edge, which serves as the PSD2 compliance platform connecting Third-Party Providers (TPPs) to Swan's banking infrastructure. +Open Banking lets users grant regulated third-party applications access to their Swan accounts. +Swan uses Salt Edge as the PSD2 compliance platform that connects Third-Party Providers (TPPs) to Swan's accounts. Swan supports two Open Banking services, plus a bulk variant for batched payments. @@ -40,21 +40,21 @@ These are two distinct access models. ## How it works {#how-it-works} -A common Open Banking use case involves three parties: a software application (such as accounting or financial management software), a TPP (a regulated aggregator the software works with), and a [Swan user](/topics/users/). +An Open Banking flow involves three parties: a software application (such as accounting or financial management software), a TPP (a regulated aggregator the software works with), and a [Swan user](/topics/users/). -The connection is typically established as follows. +The connection is established as follows. 1. The user works with a software application and wants to connect their Swan account to it. 1. The software relies on a TPP to establish the bank connection. 1. The TPP sends an authorization request to Salt Edge, Swan's PSD2 compliance platform. 1. Salt Edge redirects the user to Swan's consent application. -1. The user authenticates with Strong Customer Authentication (SCA). +1. The user authenticates with [Strong Customer Authentication (SCA)](/topics/users/consent/#sca). 1. The user grants explicit consent to the TPP on behalf of the software. 1. Salt Edge receives an access token and enables data access or payment initiation. 1. The software application can now access account data (AIS) or initiate payments (PIS) on behalf of the user. :::note TPPs don't connect to Swan directly -All requests go through Salt Edge, which acts as the compliance layer between TPPs and Swan's internal systems. +All requests go through Salt Edge, which acts as the compliance layer between TPPs and Swan. ::: ## Architecture {#architecture} @@ -66,7 +66,7 @@ flowchart TB SA --> TPP([TPP aggregator]) TPP --> SE([Salt Edge
PSD2 compliance platform]) SE --> PC([PSD2 Connector
Swan]) - PC --> API([Swan GraphQL API
and internal systems]) + PC --> API([Swan GraphQL API
and core systems]) ``` | Component | Role | @@ -74,8 +74,8 @@ flowchart TB | Software application | The application the end user interacts with, such as accounting, finance, or ERP tools. | | TPP | Regulated aggregator the software works with to access bank data or initiate payments. | | Salt Edge | PSD2 compliance platform that manages TPP registration, authentication flows, and data formatting to the Berlin Group standard. | -| PSD2 Connector | Swan's custom integration layer between Salt Edge and Swan's internal systems. | -| Swan GraphQL API | Internal source of account data and payment execution. | +| PSD2 Connector | Integration layer between Salt Edge and Swan's core systems. | +| Swan GraphQL API | Source of account data and payment execution. | ## Open Banking ecosystem {#ecosystem} @@ -83,8 +83,6 @@ Open Banking relies on a network of regulated TPPs that connect banking data to ### Connected TPPs {#ecosystem-tpps} -The following TPPs are currently registered and active on Swan's Open Banking infrastructure. - :::note This list reflects TPPs registered with Swan's Open Banking infrastructure as of May 2026. The list is maintained by Salt Edge and may change. @@ -132,19 +130,19 @@ Two separate tokens govern the Open Banking connection. :::note User token renewal Every 180 days, the user must re-authenticate with SCA to renew the consent token. -This is a European regulatory requirement under PSD2. +PSD2 requires this. Renewal is initiated by the TPP through Salt Edge. Swan cannot trigger this renewal directly. ::: :::note Technical token refresh -Most TPPs can perform up to 4 refreshes per day, as set out in the [PSD2 EBA Q&A on refresh frequency](https://www.eba.europa.eu/single-rule-book-qa/qna/view/publicId/2018_4210). +TPPs can perform up to 4 refreshes per day, see the [PSD2 EBA Q&A on refresh frequency](https://www.eba.europa.eu/single-rule-book-qa/qna/view/publicId/2018_4210). ::: ### Consent validity {#consent-validity} -- **AIS**: consent grants data access for up to 180 days before re-authentication is required. -- **PIS**: each payment requires individual consent. +- **AIS**: one consent grants data access for up to 180 days, then requires re-authentication. +- **PIS**: each payment requires its own consent. :::note Transactions since account creation The 180-day limit applies to how long the consent grants data access, not to the time range of transactions you can view. @@ -155,8 +153,8 @@ By default, Swan returns all transactions since the account was created. The user consent token can be revoked by the TPP, following a request from the end user. -:::tip Coming with PSD3 -With the implementation of PSD3, it will become mandatory to allow end users to revoke their consent directly from their online banking interface. +:::tip Under PSD3 +With PSD3, allowing end users to revoke their consent directly from their online banking interface will become mandatory. ::: ## Key concepts {#key-concepts} diff --git a/docs/topics/open-banking/pis.mdx b/docs/topics/open-banking/pis.mdx index ecb8a819460..a847122fd94 100644 --- a/docs/topics/open-banking/pis.mdx +++ b/docs/topics/open-banking/pis.mdx @@ -10,12 +10,12 @@ import PisDefinition from '../definitions/_pis.mdx'; PIS allows Third-Party Providers (TPPs) to initiate payments directly from Swan accounts on behalf of users. -## What TPPs can initiate {#supported} +## Supported {#supported} - SEPA Credit Transfers (regular and instant). - Bulk payments. -## What is not yet supported {#unsupported} +## Not supported {#unsupported} - Standing orders and recurring payments. - International Credit Transfers. From 7e8353b5c762658899e80988ddd386e05cbfd129 Mon Sep 17 00:00:00 2001 From: Maxence Busson Date: Mon, 11 May 2026 16:34:59 +0200 Subject: [PATCH 4/6] Minor wording tweaks --- docs/topics/definitions/_bulk-pis.mdx | 2 +- docs/topics/open-banking/ais.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/topics/definitions/_bulk-pis.mdx b/docs/topics/definitions/_bulk-pis.mdx index 9433937048b..820deb60896 100644 --- a/docs/topics/definitions/_bulk-pis.mdx +++ b/docs/topics/definitions/_bulk-pis.mdx @@ -1,2 +1,2 @@ An Open Banking service that lets a Third-Party Provider initiate several payments in a single request. -Bulk Payment Initiation Service (Bulk PIS) is used by accounting and treasury tools to batch outgoing SEPA Credit Transfers. +Bulk Payment Initiation Service (Bulk PIS) is primarily used by accounting and treasury tools to batch outgoing SEPA Credit Transfers. diff --git a/docs/topics/open-banking/ais.mdx b/docs/topics/open-banking/ais.mdx index 081f834ff12..022548aa115 100644 --- a/docs/topics/open-banking/ais.mdx +++ b/docs/topics/open-banking/ais.mdx @@ -46,7 +46,7 @@ This is a current limitation of the consent flow. ## No accounts visible after authentication {#troubleshooting-no-accounts} -This happens when a user authenticates with their **personal phone number**, but their Swan account is tied to their **professional phone number**. +This most often happens when a user authenticates with their **personal phone number**, but their Swan account is tied to their **professional phone number**. The phone number is Swan's unique [user](/topics/users/) identifier, so authentication succeeds but returns no accounts. **Solutions**: From 886b7517b2e487555bf3b073e35e1f7433fede98 Mon Sep 17 00:00:00 2001 From: Maxence Busson Date: Mon, 11 May 2026 17:26:38 +0200 Subject: [PATCH 5/6] Final pass --- docs/topics/open-banking/ais.mdx | 6 ++---- docs/topics/open-banking/index.mdx | 3 +-- docs/topics/open-banking/pis.mdx | 2 -- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/docs/topics/open-banking/ais.mdx b/docs/topics/open-banking/ais.mdx index 022548aa115..51e6c80218b 100644 --- a/docs/topics/open-banking/ais.mdx +++ b/docs/topics/open-banking/ais.mdx @@ -8,8 +8,6 @@ import AisDefinition from '../definitions/_ais.mdx'; > -AIS allows Third-Party Providers (TPPs) to retrieve data from Swan accounts on behalf of users. - ## What TPPs can access {#access} - Account list and details. @@ -57,7 +55,7 @@ The phone number is Swan's unique [user](/topics/users/) identifier, so authenti 1. The user linked to the professional phone number (and to the accounts) then changes their phone number to the personal one at [link.swan.io/edit-phone](https://link.swan.io/edit-phone). 1. Once complete, the accounts are accessible using the personal phone number. -For complex cases involving multi-project users, contact Swan Support. +For complex cases involving multi-project users, contact [Swan Support](https://supportform.swan.io/). ## Transaction field mapping {#field-mapping} @@ -93,7 +91,7 @@ Instead: - Use `id` as the stable unique key across all states. - Use `booking_date` as the date anchor. -- Only reconcile transactions with status `booked`. +- Only reconcile transactions with status `Booked`. ::: ## References {#references} diff --git a/docs/topics/open-banking/index.mdx b/docs/topics/open-banking/index.mdx index 4b9390ffba8..c810c58c5ca 100644 --- a/docs/topics/open-banking/index.mdx +++ b/docs/topics/open-banking/index.mdx @@ -21,7 +21,6 @@ import ConsentTokenDefinition from '../definitions/_consent-token.mdx'; > -Open Banking lets users grant regulated third-party applications access to their Swan accounts. Swan uses Salt Edge as the PSD2 compliance platform that connects Third-Party Providers (TPPs) to Swan's accounts. Swan supports two Open Banking services, plus a bulk variant for batched payments. @@ -154,7 +153,7 @@ By default, Swan returns all transactions since the account was created. The user consent token can be revoked by the TPP, following a request from the end user. :::tip Under PSD3 -With PSD3, allowing end users to revoke their consent directly from their online banking interface will become mandatory. +With PSD3 (the third Payment Services Directive), allowing end users to revoke their consent directly from their online banking interface will become mandatory. ::: ## Key concepts {#key-concepts} diff --git a/docs/topics/open-banking/pis.mdx b/docs/topics/open-banking/pis.mdx index a847122fd94..97e7b4fba19 100644 --- a/docs/topics/open-banking/pis.mdx +++ b/docs/topics/open-banking/pis.mdx @@ -8,8 +8,6 @@ import PisDefinition from '../definitions/_pis.mdx'; > -PIS allows Third-Party Providers (TPPs) to initiate payments directly from Swan accounts on behalf of users. - ## Supported {#supported} - SEPA Credit Transfers (regular and instant). From ceff774ffaf17288914c5fd387312f3bcbf6b7ea Mon Sep 17 00:00:00 2001 From: Maxence Busson Date: Mon, 11 May 2026 18:01:14 +0200 Subject: [PATCH 6/6] Final proofreading --- docs/glossary.mdx | 2 +- docs/topics/open-banking/ais.mdx | 3 +-- docs/topics/open-banking/index.mdx | 6 ++---- docs/topics/open-banking/pis.mdx | 4 ++-- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/docs/glossary.mdx b/docs/glossary.mdx index f4cbd9a39ef..3562a6c6801 100644 --- a/docs/glossary.mdx +++ b/docs/glossary.mdx @@ -252,7 +252,7 @@ import PaymentMandateDefinition from './topics/definitions/_payment-mandate.mdx' -Several Swan features can require payment mandates, including [account funding](./topics/accounts/funding/index.mdx#mandates), [accepting payments](./topics/merchants/online/sdd/index.mdx#mandates), and [received payment mandates for SEPA Direct Debit](./topics/payments/direct-debit/index.mdx#mandates). +Several Swan features may require payment mandates, including [account funding](./topics/accounts/funding/index.mdx#mandates), [accepting payments](./topics/merchants/online/sdd/index.mdx#mandates), and [received payment mandates for SEPA Direct Debit](./topics/payments/direct-debit/index.mdx#mandates). *** diff --git a/docs/topics/open-banking/ais.mdx b/docs/topics/open-banking/ais.mdx index 51e6c80218b..5f70dd0e79c 100644 --- a/docs/topics/open-banking/ais.mdx +++ b/docs/topics/open-banking/ais.mdx @@ -38,8 +38,7 @@ import AisDefinition from '../definitions/_ais.mdx'; By default, Swan returns all accounts the user has access to. :::note All or nothing -The consent flow does not allow users to select a subset of accounts; it is all or nothing. -This is a current limitation of the consent flow. +The consent flow does not currently allow users to select a subset of accounts; it is all or nothing. ::: ## No accounts visible after authentication {#troubleshooting-no-accounts} diff --git a/docs/topics/open-banking/index.mdx b/docs/topics/open-banking/index.mdx index c810c58c5ca..244614617a3 100644 --- a/docs/topics/open-banking/index.mdx +++ b/docs/topics/open-banking/index.mdx @@ -23,7 +23,7 @@ import ConsentTokenDefinition from '../definitions/_consent-token.mdx'; Swan uses Salt Edge as the PSD2 compliance platform that connects Third-Party Providers (TPPs) to Swan's accounts. -Swan supports two Open Banking services, plus a bulk variant for batched payments. +Swan supports three Open Banking services. | Service | Abbreviation | Description | |---|---|---| @@ -76,9 +76,7 @@ flowchart TB | PSD2 Connector | Integration layer between Salt Edge and Swan's core systems. | | Swan GraphQL API | Source of account data and payment execution. | -## Open Banking ecosystem {#ecosystem} - -Open Banking relies on a network of regulated TPPs that connect banking data to software applications. +## Ecosystem {#ecosystem} ### Connected TPPs {#ecosystem-tpps} diff --git a/docs/topics/open-banking/pis.mdx b/docs/topics/open-banking/pis.mdx index 97e7b4fba19..9fc47a15fe9 100644 --- a/docs/topics/open-banking/pis.mdx +++ b/docs/topics/open-banking/pis.mdx @@ -8,12 +8,12 @@ import PisDefinition from '../definitions/_pis.mdx'; > -## Supported {#supported} +## Supported payment types {#supported} - SEPA Credit Transfers (regular and instant). - Bulk payments. -## Not supported {#unsupported} +## Unsupported payment types {#unsupported} - Standing orders and recurring payments. - International Credit Transfers.