Get started quickly with our bank account validation API

With our free trial you can start in as little as 5 minutes

The first step: realise how much failed payments cost

The cost of failed payments - in wasted time and lost cashflow - is huge. A recent BACS survey estimated that the average cost to remedy a failed Direct Debit payment was £50. You can cut that cost straight away by validating the bank account details are correct before they get processed by BACS. That gives you immediate feedback which can be acted on before payment schedules even begin.

Read our short article on why bank account validation is important

Mintly can help you validate sort codes & account numbers for the UK and Republic of Ireland. We also validate IBAN for all participating countries.

We offer a choice of simple plans based on your monthly usage. Whether you are needing to check hundreds of thousands of accounts each year, or just a handful each week, we have a solution that fits you.

Watch the short video below to see a demo of our Secure Portal toolset

Get started with bank account and sort code checking

Use our secure checkout to sign up and subscribe to one of our great value plans. If you need a bespoke plan or need an SLA, we can set that up, just contact us. Once you're subscribed you can get using our tools straight away or access our API.

Using our Bank Account Checker API

You'll find your API Key in your Mintly dashboard, under Subscription details. Use our tools, sample code and API docs to start integrating! Our support team is also on hand to help and our API documentation has sample code.

With most web technologies, it's just a few lines of code to call our API!

curl --location --request \
GET 'https://api.mintly.uk/bankAccount/v1/sortcode/XXXXXX/account/YYYYYYYY' \
--header 'X-API-KEY: YOUR_API_KEY'
import axios from 'axios'
// const axios = require('axios') for CommonJS

const config = {
  method: 'GET',
  url: 'https://api.mintly.uk/bankAccount/v1/sortcode/XXXXXX/account/YYYYYYYY',
  headers: {
    'X-API-KEY': 'YOUR_API_KEY'
  }
}
try {
  const response = await axios.request(config)
  console.log(response)
} catch (error) {
  // Handle error
  console.log(error)
}
import requests
try:
  url = 'https://api.mintly.uk/bankAccount/v1/sortcode/XXXXXX/account/YYYYYYYY'
  headers = { 'X-API-KEY': 'YOUR_API_KEY' }
  r = requests.get(url, headers=headers, timeout=0.1)
  r.raise_for_status()
  r.json()
except:
  # Handle errors
  ...
$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.mintly.uk/bankAccount/v1/sortcode/XXXXXX/account/YYYYYYYY',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'X-API-KEY: YOUR_API_KEY'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://api.mintly.uk/bankAccount/v1/sortcode/XXXXXX/account/YYYYYYYY");
request.Headers.Add("X-API-KEY", YOUR_API_KEY);
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

The JSON data you get back contains the status (Valid or Invalid), the IBAN (if one can be calculated) plus the bank branch data and supported payment types. See our API documentation for a detailed view of all the response schemas for each endpoint.

{
  "BranchData": {
    "Info": {
      "SortCode": "100144",
      "ShortOwningBank": "BANK NAME",
      "BranchName": "BRANCH NAME",
      "BicField1": "AB12ABC",
      "BicField2": "XXX",
      "ShortBranchTitle": "Bank Branch Title",
      "SupervisoryBody": "A"
    },
    "Address": {
      "BranchAddressPart1": "123 Main Street",
      "BranchTown": "Hobbiton",
      "BranchCounty": "The Shire",
      "BranchPostCode1": "B1",
      "BranchPostCode2": "LB0",
      "BranchCountry": "Middle-earth",
      "BranchTelephoneArea": "0800",
      "BranchTelephone": "1234567"
    },
    "PaymentTypes": {
      "DirectDebitAccepted": true,
      "DirectCreditAccepted": true,
      "DirectDebitInstructionsAccepted": true,
      "DividendInterestAccepted": true,
      "BacsAccepted": true,
      "ChapsAccepted": true,
      "IcsAccepted": true,
      "FasterPaymentAccepted": true,
      "SepaMember": false,
      "SepaDirectDebit": false
    }
  },
  "DerivedIban": "GB 96 ABCD 010011 12345678",
  "Status": "Valid"
}

Secure Website

Alternatively, get going right away with our secure web UI; simply login and use the Tools to submit sort codes, account numbers, SWIFT codes and IBAN. Get the answers you need right away! Our site gives you all the data you need:

  • Whether the sort code and account are valid
  • The owning bank and branch name
  • The contact address and telephone number for the bank
  • The payment types accepted by the bank branch (e.g. BACS, Direct Debit, Faster Payment)
  • We also check IBAN and BIC/SWIFT codes; we'll return the address, and contact details for UK & Ireland banks
  • For international banks, we validate the account number using multiple checks, including check digits, and individual country validation algorithms