Initiate bank account verification
Instant micro-deposit verification offers a quick and efficient way to verify bank account ownership.
Send a $0.01 credit with a unique verification code via RTP, FedNow, or same-day ACH, depending on the receiving bank's capabilities. This feature provides a faster alternative to traditional methods, allowing verification in a single session.
It is recommended to use the X-Wait-For: rail-response header to synchronously receive the outcome of the instant credit in the
response payload.
Possible verification methods:
instant: Real-time verification credit sent via RTP or FedNowach: Verification credit sent via same-day ACH
Possible statuses:
new: Verification initiated, credit pendingsent-credit: Credit sent, available for verification in the external bank accountfailed: Verification failed due to credit rejection/return, details inexceptionDetails
To access this endpoint using an access token
you'll need to specify the /accounts/{accountID}/bank-accounts.write scope.
curl -X POST "https://api.moov.io/accounts/{accountID}/bank-accounts/{bankAccountID}/verify" \
-H "Authorization: Bearer {token}" \
-H "x-moov-version: v2024.01.00" \
mc, _ := moov.NewClient()
var accountID string
var bankAccountID string
mc.InstantVerificationInitiate(ctx, accountID, bankAccountID)
import { SDK } from "openapi";
const sdk = new SDK({
xMoovVersion: "v2024.01.00",
});
async function run() {
const result = await sdk.bankAccounts.initiateVerification({
accountID: "9d6d433b-c13a-48d7-849a-1897fa71375b",
bankAccountID: "bd092468-393d-4ee0-85a8-48238fee70d2",
});
console.log(result);
}
run();declare(strict_types=1);
require 'vendor/autoload.php';
use OpenAPI\OpenAPI;
$sdk = OpenAPI\SDK::builder()
->setXMoovVersion('v2024.01.00')
->build();
$response = $sdk->bankAccounts->initiateVerification(
accountID: '9d6d433b-c13a-48d7-849a-1897fa71375b',
bankAccountID: 'bd092468-393d-4ee0-85a8-48238fee70d2'
);
if ($response->bankAccountVerificationCreated !== null) {
// handle response
}from openapi import SDK
with SDK(
x_moov_version="v2024.01.00",
) as sdk:
res = sdk.bank_accounts.initiate_verification(account_id="9d6d433b-c13a-48d7-849a-1897fa71375b", bank_account_id="bd092468-393d-4ee0-85a8-48238fee70d2")
# Handle response
print(res)package hello.world;
import java.lang.Exception;
import org.openapis.openapi.SDK;
import org.openapis.openapi.models.errors.GenericError;
import org.openapis.openapi.models.operations.InitiateBankAccountVerificationResponse;
public class Application {
public static void main(String[] args) throws GenericError, Exception {
SDK sdk = SDK.builder()
.xMoovVersion("v2024.01.00")
.build();
InitiateBankAccountVerificationResponse res = sdk.bankAccounts().initiateVerification()
.accountID("9d6d433b-c13a-48d7-849a-1897fa71375b")
.bankAccountID("bd092468-393d-4ee0-85a8-48238fee70d2")
.call();
if (res.bankAccountVerificationCreated().isPresent()) {
// handle response
}
}
}require 'openapi'
Models = ::OpenApiSDK::Models
s = ::OpenApiSDK::SDK.new(
x_moov_version: 'v2024.01.00',
)
res = s.bank_accounts.initiate_verification(account_id: '9d6d433b-c13a-48d7-849a-1897fa71375b', bank_account_id: 'bd092468-393d-4ee0-85a8-48238fee70d2')
unless res.bank_account_verification_created.nil?
# handle response
end{
"verificationMethod": "instant",
"status": "new"
}Response headers
x-request-id
string
required
{
"error": "string"
}Response headers
x-request-id
string
required
Response headers
x-request-id
string
required
Response headers
x-request-id
string
required
Response headers
x-request-id
string
required
{
"error": "string"
}Response headers
x-request-id
string
required
Response headers
x-request-id
string
required
Response headers
x-request-id
string
required
Response headers
x-request-id
string
required
Headers
X-Moov-Version
string
Specify an API version.
API versioning follows the format vYYYY.QQ.BB, where
YYYYis the yearQQis the two-digit month for the first month of the quarter (e.g., 01, 04, 07, 10)BBis the build number, starting at.01, for subsequent builds in the same quarter.- For example,
v2024.01.00is the initial release of the first quarter of 2024.
- For example,
The dev version represents the most recent development state. It may include breaking changes and should be treated as a beta release.
When no version is specified, the API defaults to v2024.01.00.
x-wait-for
string
Optional header to wait for certain events, such as the rail response, to occur before returning a response.
When this header is set to rail-response, the endpoint will wait for a sent-credit or failed status from the payment rail.
payment-method,
rail-response
Path parameters
accountID
string
required
bankAccountID
string
required
Response
status
string<enum>
required
new,
sent-credit,
max-attempts-exceeded,
failed,
expired,
successful
verificationMethod
string<enum>
required
instant,
ach