Validate UK sort codes and account numbers in real-time using industry-standard modulus checking algorithms. Prevent payment errors before they cost you money.
Modulus checking is an industry-standard validation method used to verify that a UK sort code and account number combination is valid before processing a payment.
Our service uses the official BACS-approved modulus checking algorithms (Modulus 10 and Modulus 11) to mathematically verify that account details are correctly formatted and could represent a valid bank account.
Invalid payment details cost UK businesses over £800 million annually in failed transactions, administrative overhead, and customer service issues.
Catch invalid account details before submission
Provide instant feedback on data entry errors
Reduce manual intervention and customer support
Uses official modulus checking algorithms
Simple integration, powerful validation
Customer inputs sort code and account number in your payment form
Your system sends a validation request to our API endpoint
Our system applies modulus checking algorithms in under 100ms
Receive immediate validation result with detailed feedback
Integrate in minutes with our developer-friendly API
curl -X GET "https://wsp.esortcode.com/uk/v1/validateaccount?key=YOUR_API_KEY&sortcode=200000&accountNumber=12345678"
const apiKey = 'YOUR_API_KEY';
const sortCode = '200000';
const accountNumber = '12345678';
const url = `https://wsp.esortcode.com/uk/v1/validateaccount?key=${apiKey}&sortcode=${sortCode}&accountNumber=${accountNumber}`;
const response = await fetch(url);
const result = await response.json();
import requests
api_key = 'YOUR_API_KEY'
sort_code = '200000'
account_number = '12345678'
url = f'https://wsp.esortcode.com/uk/v1/validateaccount?key={api_key}&sortcode={sort_code}&accountNumber={account_number}'
response = requests.get(url)
result = response.json()
$apiKey = 'YOUR_API_KEY';
$sortCode = '200000';
$accountNumber = '12345678';
$url = "https://wsp.esortcode.com/uk/v1/validateaccount?key={$apiKey}&sortcode={$sortCode}&accountNumber={$accountNumber}";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
{
"modulusCheck": {
"sortcode": "200000",
"accountNumber": "12345678",
"valid": true
},
"branches": [
{
"bankName": "BARCLAYS BANK PLC",
"branchTitle": "Head Office",
"address1": "1 Churchill Place",
"town": "London",
"postcode": "E14 5HP",
"bacsPayments": true,
"directDebits": true,
"directCredits": true
}
]
}
Pay only for what you use. No hidden fees, no monthly minimums.
Move the slider to see how much you'll save with volume pricing
Includes 1,000 free checks to test our service
See how much you can save with higher volumes
Everything you need for production-grade validation
TLS 1.3 encryption, SOC 2 compliance
Daily database updates for accuracy
Detailed dashboards and reporting
Expert technical support team
Real-time notifications and callbacks
Validate hundreds of records at once
Start validating sort codes and account numbers in minutes
1,000 free checks included • No credit card required • 5-minute setup