Introduction to the Bank Account Validation API

The Paysafe Bank Account Validation API allows a merchant to validate the ownership of a customer's bank account by prompting the customer to provide their online banking credentials in a user interface that Paysafe presents to the customer. Once the customer has verified that they own the bank account, the merchant can then proceed to make a payout to that customer bank account when their customer wants to cash out, for example.

Validating a Customer's Bank Account

Here is an example of a bank account validation process for cashing out a customer:

Bank Account Validation API Cash Out Use Case Overview

  1. The customer wants to cash out from the merchant's site.
  2. The merchant sends a Bank Account Verification API request, including some customer profile information.
  3. curl -X https://api.test.paysafe.com/bankaccountvalidator/v1/accounts/123456789/verifications \
      -u devcentre322:B-qa2-0-53625f86-302c021476f52bdc9deab7aea876bb28762e62f92fc6712d0214736abf501e9675e55940e83ef77f5c304edc7968 \
      -H 'Content-Type: application/json' \
      -d '{
      "merchantRefNum": "1323563",
      "profile": {
        "firstName": "John",
        "middleName": "James",
        "lastName": "Smith",
        "locale": "en_CA"
      },
      "accountTypes": [
        "SAVING",
        "CHEQUING"
      ],
      "currencyCodes": [
        "CAD",
        "USD"
      ],
      "returnLinks": [
        {
          "rel": "default",
          "href": "https://mysite.com/return"
        }
      ],
      "bankscheme": "EFT"
    }'
  4. Paysafe sends a response back to the merchant containing a redirect URL.
  5. {
      "merchantRefNum": "1323563",
      "profile": {
        "firstName": "John",
        "middleName": "James",
        "lastName": "Smith",
        "locale": "en_CA"
      },
      "accountTypes": [
        "SAVING",
        "CHEQUING"
      ],
      "currencyCodes": [
        "CAD",
        "USD"
      ],
      "returnLinks": [
        {
          "rel": "default",
          "href": "https://mysite.com/return"
        }
      ],
      "bankscheme": "EFT",
      "id": "6a275b7c-6f11-4ed1-ae77-21071724574a",
      "sessionId": "MjM5NWRlMTQtNDE4Yy0xMWU5LWIyMTAtZDY2M2JkODczZDkz",
      "status": "INITIATED",
      "links": [
        {
          "rel": "redirect_bank_validation",
          "href": "https://api.paysafe.com/bankaccountvalidator/v1/redirect?sessionId=MjM5NWRlMTQtNDE4Yy0xMWU5LWIyMTAtZDY2M2JkODczZDkz"
        }
      ]
    }
  6. The merchant sends a Redirect request to Paysafe, and sends the redirect URL to the customer's browser, by which the customer will be redirected to a user interface to select a bank.
  7. Once the customer has selected the bank, they must provide credentials.
  8. The customer may be asked a challenge question previously set up by the customer, depending on the bank account setup.

  9. When the customer successfully confirms their identity, the API matches the customer's name provided in the Bank Account Verification request with the name associated with the online banking credentials, and then redirects the customer to an account selection page.
  10. The customer selects the bank account they want to use to cash out.
  11. Bank accounts tagged as Corporate at the bank level will not be presented to the customer as options for selection.

  12. Paysafe sends a Final Response to the URL the merchant provided in the returnLinks object in the Verification request.
  13. <https://mysite.com/return>?status=SUCCESS&sessionId=MjM5NWRlMTQtNDE4Yy0xMWU5LWIyMTAtZDY2M2JkODczZDkz

  14. When the status in the Final Response is SUCCESS, the merchant sends a Get Verification request to Paysafe.
  15. The response from Paysafe includes a bank account object (e.g., eft) that contains bank account details and a single-use paymentToken that has a lifespan of 15 minutes.
  16. {
      "merchantRefNum": "1323563",
      ...
      "eft": {
        "accountHolderName": "John Smith",
        "institutionId": "001",
        "transitNumber": "25039",
        "lastDigits": "01",
        "accountType": "SAVING",
        "paymentToken": "8Y9u7WR3E32EB09J"
      },
      ...
    }
  17. The merchant uses the single-use paymentToken to POST a Standalone Credit to the customer's bank account.

Did you find this page useful?