Skip to main content

Verification transfer

Provider: bank_transfer

Identity verification through a PLN 1.00 verification micro-transfer. The customer makes a transfer from their own bank account, and the HUB verifies the sender data returned by the bank.

How it works

  1. The customer opens verification_url and sees the micro-transfer details: title, recipient IBAN and the PLN 1 amount
  2. The customer makes a transfer through online banking
  3. The HUB receives confirmation from the recipient's bank, including the sender's first name, last name and IBAN
  4. The HUB compares the data and returns the verification result
  5. A verification.completed webhook is sent to your endpoint
POST/api/v1/verificationsCreate a verification transfer session: parameters, sender data and rejection reasons.Full contract in the API Reference

When should I use it?

  • KYC for financial services - the highest level of identity confidence
  • Verification before a payout - confirm ownership of the customer's bank account
  • Premium customer onboarding - whenever strong verification is required

Session creation example

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",
"external_id": "kyc-12345",
"redirect_url": "https://twoja-strona.pl/weryfikacja-zakonczona",
"callback_url": "https://twoja-strona.pl/webhooks/dpay-eid",
"locale": "pl"
}'

Returned data

After successful verification, verified_data contains:

{
"first_name": "Jan",
"last_name": "Kowalski",
"iban": "PL61109010140000071219812874",
"bank_name": "Santander Bank Polska"
}
info

The exact fields in verified_data depend on the information the sender's bank provides in its transfer confirmation. PESEL is not normally returned for this method.

Cost and timing

  • Customer cost: PLN 1.00 (option 1: automatic refund; option 2: PLN 1 invoice)
  • Verification time: usually 5-30 minutes, depending on ELIXIR session times
  • Session TTL: 30 minutes from creation

Rejection reasons

The most common reasons for a rejected result are:

ReasonDescription
WRONG_AMOUNTThe customer transferred a different amount than required
WRONG_TITLEThe transfer title was incorrect
EXPIREDThe transfer arrived after the session expired
BLOCKED_ACCOUNTInternal error that requires contacting customer support

Alternatives

  • mObywatel - faster app-based verification (0-2 minutes, no charge)
  • Demo - for integration testing only