curl --request POST \
--url https://api.fintoc.com/v2/account_verifications \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--header 'Fintoc-JWS-Signature: <fintoc-jws-signature>' \
--data '
{
"account_number": "132969000000000190",
"institution_id": "40012",
"account_type": "checking_account",
"holder_id": "11.111.111-1"
}
'import requests
url = "https://api.fintoc.com/v2/account_verifications"
payload = {
"account_number": "132969000000000190",
"institution_id": "40012",
"account_type": "checking_account",
"holder_id": "11.111.111-1"
}
headers = {
"Fintoc-JWS-Signature": "<fintoc-jws-signature>",
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Fintoc-JWS-Signature': '<fintoc-jws-signature>',
Authorization: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
account_number: '132969000000000190',
institution_id: '40012',
account_type: 'checking_account',
holder_id: '11.111.111-1'
})
};
fetch('https://api.fintoc.com/v2/account_verifications', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fintoc.com/v2/account_verifications",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_number' => '132969000000000190',
'institution_id' => '40012',
'account_type' => 'checking_account',
'holder_id' => '11.111.111-1'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json",
"Fintoc-JWS-Signature: <fintoc-jws-signature>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fintoc.com/v2/account_verifications"
payload := strings.NewReader("{\n \"account_number\": \"132969000000000190\",\n \"institution_id\": \"40012\",\n \"account_type\": \"checking_account\",\n \"holder_id\": \"11.111.111-1\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Fintoc-JWS-Signature", "<fintoc-jws-signature>")
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fintoc.com/v2/account_verifications")
.header("Fintoc-JWS-Signature", "<fintoc-jws-signature>")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_number\": \"132969000000000190\",\n \"institution_id\": \"40012\",\n \"account_type\": \"checking_account\",\n \"holder_id\": \"11.111.111-1\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fintoc.com/v2/account_verifications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Fintoc-JWS-Signature"] = '<fintoc-jws-signature>'
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_number\": \"132969000000000190\",\n \"institution_id\": \"40012\",\n \"account_type\": \"checking_account\",\n \"holder_id\": \"11.111.111-1\"\n}"
response = http.request(request)
puts response.read_body{
"id": "accv_2daFu0zqqDtZGJaSi2TGI2Mm1nN",
"object": "account_verification",
"counterparty": {
"account_number": "132969000000000190",
"account_type": "clabe",
"holder_id": "000000000",
"holder_name": "Test Customer 1",
"institution": {
"id": "40012",
"name": "BBVA Mexico",
"country": "mx"
}
},
"mode": "test",
"reason": null,
"receipt_url": null,
"status": "pending",
"transaction_date": null,
"transfer_id": "tr_2daFu0zqqDtZGJaSi2TGI2Mm1nN"
}Create an account verification
Checks a counterparty account by issuing a verification transfer from one of your accounts. In Mexico, Fintoc sends 0.01 MXN and returns the holder name and tax ID that the receiving bank reports. In Chile, Fintoc sends 1 CLP with the Chilean tax ID (RUT) you provide. A successful verification means the receiving bank accepted the transfer with that RUT. Some banks accept transfers without validating the RUT. Chilean verifications do not return the holder name. The verification uses the live or test mode of the API key. Requires a JSON Web Signature (JWS). Verifying the same account_number again within 24 hours returns the first verification created in that window instead of issuing a new transfer. In Chile, the previous verification must also match the institution_id, account_type, and holder_id. Fintoc does not reuse verifications with a failed status, so you can retry them immediately.
curl --request POST \
--url https://api.fintoc.com/v2/account_verifications \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--header 'Fintoc-JWS-Signature: <fintoc-jws-signature>' \
--data '
{
"account_number": "132969000000000190",
"institution_id": "40012",
"account_type": "checking_account",
"holder_id": "11.111.111-1"
}
'import requests
url = "https://api.fintoc.com/v2/account_verifications"
payload = {
"account_number": "132969000000000190",
"institution_id": "40012",
"account_type": "checking_account",
"holder_id": "11.111.111-1"
}
headers = {
"Fintoc-JWS-Signature": "<fintoc-jws-signature>",
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Fintoc-JWS-Signature': '<fintoc-jws-signature>',
Authorization: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
account_number: '132969000000000190',
institution_id: '40012',
account_type: 'checking_account',
holder_id: '11.111.111-1'
})
};
fetch('https://api.fintoc.com/v2/account_verifications', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fintoc.com/v2/account_verifications",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_number' => '132969000000000190',
'institution_id' => '40012',
'account_type' => 'checking_account',
'holder_id' => '11.111.111-1'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json",
"Fintoc-JWS-Signature: <fintoc-jws-signature>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fintoc.com/v2/account_verifications"
payload := strings.NewReader("{\n \"account_number\": \"132969000000000190\",\n \"institution_id\": \"40012\",\n \"account_type\": \"checking_account\",\n \"holder_id\": \"11.111.111-1\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Fintoc-JWS-Signature", "<fintoc-jws-signature>")
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fintoc.com/v2/account_verifications")
.header("Fintoc-JWS-Signature", "<fintoc-jws-signature>")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_number\": \"132969000000000190\",\n \"institution_id\": \"40012\",\n \"account_type\": \"checking_account\",\n \"holder_id\": \"11.111.111-1\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fintoc.com/v2/account_verifications")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Fintoc-JWS-Signature"] = '<fintoc-jws-signature>'
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_number\": \"132969000000000190\",\n \"institution_id\": \"40012\",\n \"account_type\": \"checking_account\",\n \"holder_id\": \"11.111.111-1\"\n}"
response = http.request(request)
puts response.read_body{
"id": "accv_2daFu0zqqDtZGJaSi2TGI2Mm1nN",
"object": "account_verification",
"counterparty": {
"account_number": "132969000000000190",
"account_type": "clabe",
"holder_id": "000000000",
"holder_name": "Test Customer 1",
"institution": {
"id": "40012",
"name": "BBVA Mexico",
"country": "mx"
}
},
"mode": "test",
"reason": null,
"receipt_url": null,
"status": "pending",
"transaction_date": null,
"transfer_id": "tr_2daFu0zqqDtZGJaSi2TGI2Mm1nN"
}Authorizations
Headers
JSON Web Signature (JWS) of the request body. The signature authorizes the verification transfer. See the account verification guide for generating the JWS: https://docs.fintoc.com/docs/account-verification.
Body
Counterparty account identifier to verify. In Mexico, use an 18-digit standardized bank account number (CLABE), 16-digit debit card number, or 10-digit mobile phone number. In Chile, use the bank account number, digits only. Chilean account numbers cannot consist only of zeros.
"132969000000000190"
Required if verifying an account in Chile, or a debit card or phone number in Mexico. Identifier of the counterparty bank. Only a CLABE encodes the bank. Ignored when account_number is a CLABE.
"40012"
Required if verifying an account in Chile. Type of the bank account. One of checking_account, sight_account, or savings_account. Only sight_account is supported for cl_fintoc. Ignored in Mexico.
checking_account, sight_account, savings_account "checking_account"
Required if verifying an account in Chile. Chilean tax ID (RUT) of the expected account holder, with or without dots and hyphen. Cannot consist only of zeros. Ignored in Mexico.
"11.111.111-1"
Response
The created account verification.
Unique identifier of the account verification.
"accv_2daFu0zqqDtZGJaSi2TGI2Mm1nN"
Type of the object. Always account_verification.
Details of the verified counterparty account.
Show child attributes
Show child attributes
Whether the verification is live or test data.
live, test "test"
Reason code explaining why the verification failed, or null when the verification succeeded. transfer_fail means Fintoc could not send the verification transfer. cep_unavailable means the Mexican central bank (Banxico) had not yet published the payment receipt (CEP) when the verification timed out, so Fintoc could not confirm the account; you can retry the verification later. unknown means the reason could not be determined. In Mexico, the remaining codes mirror the transfer return_reason and report why the counterparty institution returned the verification transfer: non_existing_account, blocked_account, canceled_account, wrong_currency, account_not_from_receiving_institution, missing_information, wrong_payment_type, wrong_operation_type, account_type_does_not_correspond, invalid_character, exceeds_account_limit, exceeds_account_monthly_payments_limit, non_registered_mobile_phone, does_not_accept_non_banxico_payments, invalid_additional_information, missing_payment_instruction_due_to_balance_limit_reached, sender_client_protection_agreement, optional_payment_not_accepted_by_recipient_institution, codi_payment_without_quick_credit_notification, duplicated_tracking_key, and expired_sender_institution_certificate. In Chile, the codes mirror the transfer error_reason and report why the receiving bank rejected the verification transfer: recipient_account_disabled_for_tef, recipient_institution_timeout, recipient_institution_unavailable, invalid_recipient_account, recipient_account_closed, invalid_recipient_holder_id, invalid_holder_id_account_relationship, account_type_not_enabled, recipient_account_not_found, product_account_not_enabled, recipient_account_credit_restricted, recipient_institution_amount_limit_exceeded, system_amount_limit_exceeded, and unknown. In Chile, recipient_institution_timeout also covers transfers reversed because Fintoc could not determine whether the receiving bank approved the verification transfer. You can retry the verification. A reversal caused by a late bank approval or a failure to deliver the approval still results in a succeeded verification.
transfer_fail, cep_unavailable, non_existing_account, blocked_account, canceled_account, wrong_currency, account_not_from_receiving_institution, missing_information, wrong_payment_type, wrong_operation_type, account_type_does_not_correspond, invalid_character, exceeds_account_limit, exceeds_account_monthly_payments_limit, non_registered_mobile_phone, does_not_accept_non_banxico_payments, invalid_additional_information, missing_payment_instruction_due_to_balance_limit_reached, sender_client_protection_agreement, optional_payment_not_accepted_by_recipient_institution, codi_payment_without_quick_credit_notification, duplicated_tracking_key, expired_sender_institution_certificate, recipient_account_disabled_for_tef, recipient_institution_timeout, recipient_institution_unavailable, invalid_recipient_account, recipient_account_closed, invalid_recipient_holder_id, invalid_holder_id_account_relationship, account_type_not_enabled, recipient_account_not_found, product_account_not_enabled, recipient_account_credit_restricted, recipient_institution_amount_limit_exceeded, system_amount_limit_exceeded, unknown, null null
URL of the verification receipt, or null. Always null in Chile.
null
Status of the verification. One of pending (in progress), succeeded (verification completed), or failed (could not be completed). In Chile, succeeded means the receiving bank accepted the transfer with the Chilean tax ID (RUT) you provided. Some banks accept transfers without validating the RUT.
pending, succeeded, failed "pending"
Date and time when the verification was performed, as an ISO 8601 datetime in UTC, or null.
null
Identifier of the transfer issued to verify the account, or null.
"tr_2daFu0zqqDtZGJaSi2TGI2Mm1nN"
Was this page helpful?