Skip to main content

AIS / PSD2

Provider: ais_psd2

Access a customer's bank account data through Open Banking (PSD2 AIS - Account Information Service). With the customer's explicit consent, you can retrieve balances, account lists and transaction history from their banks.

How it works

  1. The customer opens verification_url and selects a bank from the supported list
  2. The HUB redirects the customer to online banking through the PSD2 API
  3. The customer authorizes access in the banking app using SCA (Strong Customer Authentication)
  4. The bank returns account and transaction data to the HUB
  5. A verification.completed webhook is sent to your endpoint
  6. You retrieve transactions with GET /verifications/{id}/transactions
POST/api/v1/verificationsCreate an AIS/PSD2 session: dynamic-mode parameters, bank selection and error codes.Full contract in the API Reference

When should I use it?

  • Credit scoring - analyze the customer's income and expenses
  • Fintech onboarding - PFM, BNPL and digital lending
  • Anti-fraud - verify sources of income
  • Account aggregation - provide a unified view of the customer's finances

Session purpose - account_data

AIS/PSD2 requires purpose=account_data rather than identity_verification. This changes several aspects of the session:

  • Session TTL: 60 minutes instead of 30
  • Available modes: single, sequential and dynamic only
  • Result: access to GET /verifications/{id}/transactions

Dynamic mode - multiple banks

This is the most common mode for AIS. It allows multiple banks to be connected in a single session.

curl -X POST https://hub.dpay.pl/api/v1/verifications \
-H "Authorization: Bearer deid_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"purpose": "account_data",
"provider": "ais_psd2",
"bank_selection": "user_driven",
"max_banks": 5,
"min_banks": 1,
"external_id": "scoring-12345"
}'

Dynamic-mode parameters

ParameterTypeDefaultDescription
bank_selectionstringuser_drivenfixed (specified in advance through the API) or user_driven (the customer selects banks)
max_banksinteger10Maximum number of banks (1-20)
min_banksinteger1Minimum number of banks (1-20) - the session completes after this many banks have been connected
warning

For purpose=account_data with bank_selection=user_driven (or when it is omitted), the mode is automatically set to dynamic.

Retrieving transactions

After the session reaches completed, retrieve the transactions:

curl "https://hub.dpay.pl/api/v1/verifications/{id}/transactions?per_page=50" \
-H "Authorization: Bearer deid_live_xxx"
GET/api/v1/verifications/{id}/transactionsBank transactions from an AIS session: pagination and sender data fields.Full contract in the API Reference

For complete documentation, see Results - AIS transactions.

Supported banks

DPay Web EID supports the following banks:

  • PKO BP (pl_pko_bp)
  • Intelligo (pl_intelligo)
  • mBank (pl_mbank)
  • Erste Bank Polska (pl_erste)
  • ING Bank Śląski (pl_ing)
  • Pekao SA (pl_pekao)
  • Millennium (pl_millennium)
  • Alior Bank (pl_alior)
  • Citi Handlowy (pl_citi)
  • BNP Paribas (pl_bnp)
  • Velo Bank (pl_velo)
  • Nest Bank (pl_nest)
  • Bank Pocztowy (pl_pocztowy)
  • Credit Agricole (pl_credit_agricole)
  • UniCredit (pl_unicredit)
  • BOŚ (pl_bos)
  • BOŚ Korpo (pl_bos_corpo)
  • Volkswagen Bank (pl_vwfs)
  • Toyota Bank (pl_toyota_bank)
  • SGB cooperative banks operating within the SGB24 system (pl_sgb24)

The following international banks and fintech companies are also supported:

  • Revolut (int_revolut)
  • Wise (int_wise)
  • N26 (de_n26)

Retrieve the complete current list with GET /providers.

Cost and timing

  • Customer cost: PLN 0 - no fees
  • Verification time: 1-5 minutes, depending on the number of banks and SCA
  • Session TTL: 60 minutes from creation
  • Data validity: 90 days from authorization, in accordance with PSD2