Skip to main content

Verification modes

DPay Web EID offers four mode values for a verification session. The appropriate mode depends on your business scenario.

Mode comparison

POST/api/v1/verificationsComplete session creation contract for each mode: single, sequential, pool and dynamic.Full contract in the API Reference GET/api/v1/providersAvailable providers for the provider and providers fields.Full contract in the API Reference

Allowed purpose × mode combinations

Purposesinglesequentialpooldynamic
identity_verificationYesYesYesNo
account_dataYesYesNoYes
Automatic mode selection

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

Single mode (default)

One verification provider: the simplest scenario. It is ideal when you know in advance which method you want to use.

curl -X POST https://hub.dpay.pl/api/v1/verifications \
-H "Authorization: Bearer deid_live_xxx" \
-H "Content-Type: application/json" \
-d '{"provider": "bank_transfer"}'

Required field: provider

Sequential mode (multi-step)

Multi-step verification in which the user completes each step in sequence. Use it when you need stronger verification by combining several methods.

curl -X POST https://hub.dpay.pl/api/v1/verifications \
-H "Authorization: Bearer deid_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"mode": "sequential",
"steps": [
{"provider": "bank_transfer"},
{"provider": "mobywatel"}
]
}'

Required field: steps (an array of 2-10 objects)

The response includes these additional fields:

  • current_step - the current step number
  • total_steps - the total number of steps
  • steps - an array of VerificationStep objects with individual statuses

Pool mode (user choice)

The user selects one of the available verification methods on the HUB page. This mode provides the best UX when you want to give the customer a choice.

curl -X POST https://hub.dpay.pl/api/v1/verifications \
-H "Authorization: Bearer deid_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"mode": "pool",
"providers": ["bank_transfer", "mobywatel", "demo"]
}'

Required field: providers (an array of 2-10 strings)

The response includes an allowed_providers field with the providers from which the user can choose.

Dynamic mode (AIS/PSD2)

This mode is designed for account data access. The user can dynamically add more banks during the 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
}'

Required field: provider (must be ais_psd2)

Dynamic-mode parameters

ParameterTypeDefaultDescription
bank_selectionstringuser_drivenfixed (specified in advance) or user_driven (the customer selects banks)
max_banksinteger10Maximum number of banks (1-20)
min_banksinteger1Minimum number of banks (1-20)

The response includes these additional fields:

  • bank_selection_mode - the bank selection mode
  • max_banks / min_banks - bank limits
  • banks_connected - the number of banks already connected
  • current_step / total_steps / steps - step state, where each bank is one step

Which mode should I use?

ScenarioRecommended mode
Customer onboarding with identity verificationsingle (bank_transfer or mobywatel)
Enhanced KYC with two verification sourcessequential
Let the customer choose a methodpool
Retrieve transaction history from multiple banksdynamic (ais_psd2)