Contents

We now support microdeposit verification for bank accounts. We previously wrote about different tactics for verifying bank accounts in the Modern Treasury Journal. In that post, we explain how microdeposits work:

Many financial institutions and companies verify bank account ownership through microdeposits. This requires the entity to already be in possession of the bank account details. In this approach, the institution sends small amounts of money to the bank account they are verifying. The institution will ask the counterparty to tell them the amounts that were deposited. The account will only be considered verified if the counterparty describes the amounts correctly.

Modern Treasury now enables our customers to handle microdeposits themselves using just a few API endpoints.

Our microdeposit verification API has the following features:

  • Each individual payment is a different amount so it does not get flagged as a duplicate by the bank
  • If the payments fail, a new verification attempt can be begun easily
  • If a user enters incorrect amounts too many times when completing a verification, the verification will fail. This is similar to getting locked out of your account when you try your password too many times
  • After the verification is complete, the money will be recovered automatically
  • If a verification is not completed within 2 months, it will auto-expire and the microdeposits will be recovered automatically

You can read about how to use our new API endpoints here. We also want to show you how this could be used in your application. Below are screenshots from our customer Avenify which demonstrate how they use the Modern Treasury API in their bank account onboarding flow.

Step 1: Creating a bank account

First, Avenify requests that customers input their bank account information. When this form is filled out, the create external account endpoint is called. Once the external account has been created, it can be used to pay or charge a counterparty. We recommend you verify the account as well, which leads into the next step.


curl --request POST \
 -u ORGANIZATION_ID:API_KEY \
 --url https://app.moderntreasury.com/api/external_accounts \
 -H 'Content-Type: application/json' \
 -d '{
   "party_name": "John Doe",
   "counterparty_id": "37ba4454-dd33-4aa0-8906-0e2e4103e45c",
   "account_type": "checking",
   "routing_details": [
     {
       "routing_number_type": "aba",
       "routing_number": "121141822"
     }
   ],
   "account_details": [
     {
       "account_number": "123456789"
     }
   ]
 }'

Step 2: Initiating bank account verification

Next, Avenify asks their customers to verify their account. When this button is clicked, the verify external account endpoint is called. This endpoint triggers the two payments that go to the connected account. Since these payments are done over ACH, it may take a day before your counterparty sees them in their bank account.


curl --request POST \
 -u ORGANIZATION_ID:API_KEY \
 --url https://app.moderntreasury.com/api/external_accounts/0f8e3719-3dfd-4613-9bbf-c0333781b59f/verify \
 -H 'Content-Type: application/json' \
 -d '{
   "originating_account_id": "aaf74f7e-d697-4a73-95a3-05bede2edce6"
 }'

Step 3: Completing bank account verification

Finally, when the microdeposits have arrived, Avenify asks their customers to verify the amounts that were sent. This calls the complete verification endpoint.


curl --request POST \
 -u ORGANIZATION_ID:API_KEY \
 --url https://app.moderntreasury.com/api/external_accounts/0f8e3719-3dfd-4613-9bbf-c0333781b59f/complete_verification \
 -H 'Content-Type: application/json' \
 -d '{
   "amounts": ["25", "11"]
 }'

With these three API endpoints, it's easy to get set up with microdeposits. If you're interested in building with this or have any questions, feel free to send us a message at support@moderntreasury.com.

For more, head over to our complete API documentation.

References

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.