Get bank account verification
Retrieve the current status and details of an instant verification, including whether the verification method was instant (RTP or FedNow) or same-day ACH. This helps track the verification process in real-time and provides details in case of exceptions.
The status will indicate the following:
new: Verification initiated, credit pending to the payment networksent-credit: Credit sent, available for verificationfailed: Verification failed, description provided, user needs to add a new bank accountexpired: Verification expired after 14 days, initiate another verificationmax-attempts-exceeded: Five incorrect code attempts exhausted, initiate another verification
To access this endpoint using an access token
you'll need to specify the /accounts/{accountID}/bank-accounts.read scope.
curl -X GET "https://api.moov.io/accounts/{accountID}/bank-accounts/{bankAccountID}/verify" \
-H "Authorization: Bearer {token}" \
-H "x-moov-version: v2024.01.00" \
using Moov.Sdk;
var sdk = new MoovClient(xMoovVersion: "<value>");
var res = await sdk.BankAccounts.GetVerificationAsync(
accountID: "c87bc077-580a-4c2a-b312-2afbd21fc1cd",
bankAccountID: "aaceed83-ef83-4d48-8136-096f834280cc"
);
// handle responsepackage hello.world;
import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.operations.GetBankAccountVerificationResponse;
import java.lang.Exception;
public class Application {
public static void main(String[] args) throws Exception {
Moov sdk = Moov.builder()
.xMoovVersion("v2024.01.00")
.security(Security.builder()
.username("")
.password("")
.build())
.build();
GetBankAccountVerificationResponse res = sdk.bankAccounts().getVerification()
.accountID("c87bc077-580a-4c2a-b312-2afbd21fc1cd")
.bankAccountID("aaceed83-ef83-4d48-8136-096f834280cc")
.call();
if (res.bankAccountVerification().isPresent()) {
// handle response
}
}
}require 'moov_ruby'
Models = ::Moov::Models
s = ::Moov::Client.new(
x_moov_version: 'v2024.01.00',
)
res = s.bank_accounts.get_verification(account_id: 'c87bc077-580a-4c2a-b312-2afbd21fc1cd', bank_account_id: 'aaceed83-ef83-4d48-8136-096f834280cc')
unless res.bank_account_verification.nil?
# handle response
endimport { Moov } from "@moovio/sdk";
const moov = new Moov({
xMoovVersion: "v2024.01.00",
security: {
username: "",
password: "",
},
});
async function run() {
const result = await moov.bankAccounts.getVerification({
accountID: "c87bc077-580a-4c2a-b312-2afbd21fc1cd",
bankAccountID: "aaceed83-ef83-4d48-8136-096f834280cc",
});
console.log(result);
}
run();declare(strict_types=1);
require 'vendor/autoload.php';
use Moov\MoovPhp;
use Moov\MoovPhp\Models\Components;
$sdk = MoovPhp\Moov::builder()
->setXMoovVersion('v2024.01.00')
->setSecurity(
new Components\Security(
username: '',
password: '',
)
)
->build();
$response = $sdk->bankAccounts->getVerification(
accountID: 'c87bc077-580a-4c2a-b312-2afbd21fc1cd',
bankAccountID: 'aaceed83-ef83-4d48-8136-096f834280cc'
);
if ($response->bankAccountVerification !== null) {
// handle response
}from moovio_sdk import Moov
from moovio_sdk.models import components
with Moov(
x_moov_version="v2024.01.00",
security=components.Security(
username="",
password="",
),
) as moov:
res = moov.bank_accounts.get_verification(account_id="c87bc077-580a-4c2a-b312-2afbd21fc1cd", bank_account_id="aaceed83-ef83-4d48-8136-096f834280cc")
# Handle response
print(res){
"verificationMethod": "instant",
"status": "new",
"exceptionDetails": {
"achReturnCode": "R02",
"rtpRejectionCode": "AC03",
"fednowRejectionCode": "string",
"description": "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
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 latest 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.
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
exceptionDetails
object
errored or verificationFailed bank account status.
Show child attributes
description
string
required
errored or verificationFailed bank account status.
achReturnCode
string<enum>
The return code of an ACH transaction that caused the bank account status to change.
- R02: Account Closed
- R03: No Account/Unable to Locate Account
- R04: Invalid Account Number
- R05: Improper Debit to Consumer Account
- R07: Authorization Revoked by Customer
- R08: Payment Stopped
- R10: Customer Advises Originator is Not Known or Authorized to Receiver
- R11: Customer Advises Entry Not in Accordance with the Terms of the Authorization
- R12: Branch Sold to Another DFI
- R13: RDFI not qualified to participate
- R14: Representative payee deceased or unable to continue in that capacity
- R15: Beneficiary or bank account holder
- R16: Bank account frozen
- R17: Entry with Invalid Account Number Initiated Under Questionable Circumstances
- R20: Non-payment bank account
- R23: Credit entry refused by receiver
- R29: Corporate customer advises not authorized
- R34: Limited participation RDFI
- R38: Stop Payment on Source Document (Adjustment Entry)
- R39: Improper Source Document
R02,
R03,
R04,
R05,
R07,
R08,
R10,
R11,
R12,
R13,
R14,
R15,
R16,
R17,
R20,
R23,
R29,
R34,
R38,
R39
fednowRejectionCode
string
The rejection code of a FedNow transaction that caused the bank account status to change.
- AC02: Debtor account is invalid
- AC03: Creditor account is invalid
- AC04: Account closed
- AC06: Account is blocked
- AC07: Creditor account closed
- AC10: Debtor account currency is invalid or missing
- AC11: Creditor account currency is invalid or missing
- AC13: Debtor account type missing or invalid
- AC14: Creditor account type missing or invalid
- AG01: Transaction is forbidden on this type of account
- AG03: Transaction type is not supported/authorized on this account
- BE06: End customer specified is not known at associated Sort/National Bank Code or no longer exists in the books
- DUPL: Payment is a duplicate of another payment
- MD07: End customer is deceased
- NOAT: Receiving customer account does not support/accept this message type
- RC02: Bank identifier is invalid or missing
- RC03: Debtor FI identifier is invalid or missing
- RC04: Creditor FI identifier is invalid or missing
rtpRejectionCode
string<enum>
The rejection code of an RTP transaction that caused the bank account status to change.
- AC03: Account Invalid
- AC04: Account Closed
- AC06: Account Blocked
- AC14: Creditor Account Type Invalid
- AG01: Transactions Forbidden On Account
- AG03: Transaction Type Not Supported
- MD07: Customer Deceased
AC03,
AC04,
AC06,
AC14,
AG01,
AG03,
MD07