Showing results for 
Search instead for 
Did you mean: 

Participate in challenges and sweepstakes

IBAN & SWIFT/BIC Validator



If your company/client pays any company in another country, they will likely use IBAN (International Bank Account Number) when sending money to those accounts.


To save your Finance team a lot of hassle in checking and validating these, you can add this component to your forms and Apps to instantly validate and make sure that the account number given to them will work first time, every time.



After opening and saving the .msapp into your environment, Import the component into your App from that App you saved


Insert the component control into your App:




Pass in the input values (you can use either one or you can use both!) :





Then all you need is for your user to Type in IBAN and SWIFT values:

( You can test with any of the examples in the collection I've loaded on the OnStart, which come from with additional information from the ISO 13616-1:2007 standard you can view here: )


i.e Albania, DZ580002100001113000000570





You can also responsively size this as needed (based on Height):





If you choose not to enter an IBAN Value or a SWIFT/BIC value, then the validator for that Input will not show, ie if you connected it only to the IBAN value, then only that IBAN validator row of the component will show.



So how does it do this? (in case you are interested)

- The Tick/Cross box is dependent on the value's numeric Modulus by 97.

The formula for this is to move first 4 characters to end of string, then convert all characters to numbers, using A=10, B=11 ... Z=35. Modulus the numeric value by 97. Since PowerApps cannot handle integers of this length, we split the first 9 out, calculate the Mod97 of those, then add it to the beginning of the string, and then next 9 until we have 9 or less characters left. The final modulus should be equal to 1 if it is a valid IBAN number (this is regardless of country, purely numerical and will work for all future IBAN countries)

- The Country checker is based on a Regex check against the ISO 13616-1:2007 standard for that Country

- The SWIFT/BIC checker is also a Regex check, although it is much simpler



Inputs involved:

IBAN - an IBAN (International Bank Account Number)

SWIFTBIC - A SWIFT/BIC standardised branch code


Outputs involved:


- Text Value - this is the 'financial' format of IBAN, removed of special characters, whereas the 'web' format may contain spaces. This can be used as an exported value if you wish to provide cleanup function for IBANs


- Text Value - Local Bank account number, derived by removing the first four characters


- Text Value - The 'financial' format of SWIFTBIC, removed of special characters. 'Web' format may contain spaces.


- boolean value - true/false determined by applying the Modulus97 formula


- boolean value - true/false determined by Regex check of trimmed string


- Text Value - This is determined by using the Regex check for that country as determined by ISO 13616-1:2007



Number of Countries validated: 103
(and an additional 20 codes fall under FR, GB, FI, PT, ES countries)


I hope you find this useful, I have checked it manually against multiple IBAN codes from each country to ensure that they all validate correctly.


I know there is another IBAN component out there however it does not successfully validate all IBAN values as its formula for doing so is not based on the IBAN ISO 13616-1:2007


Dear @iAm_ManCat  ,

This component is exactly what I was looking for.

It works perfectly when I preview the app.

But when I try on Sharepoint and open a new form, the component appears as unformatted:



After put the values the component looks good. 


If I delete the values, the component looks normal as well.

I have not 'Default' values on IBAN and SWIFT fields.

I also tried to put a condition on the component to be visible only when IBAN.text is not empty, but it didn't work.


Can you help me with this issue?

Thanks a lot for your contribution with this great functionality.



Hi @PMCVieira @ could you try making the visibility: