Get it on Google Play
24-02-2016
 

Cálculo de códigos de los dígito de control, IBAN y BIC/SWIFT de la cuenta bancaria

Cuenta Bancaria

Cuenta Bancaria

Es habitual que los clientes te pidan que cuando desarrollemos software corporativo(O en aplicaciones de eCommerce) nos pidan que se calculen algunos campos como por ejemplo la letra del DNI. En los últimos años en las cuentas bancarias han aparecido dos campos nuevos el, IBAN y el BIC/SWIFT además del dígito de control que ya conocíamos.

En este post vamos a ver como se calculan:

El dígito de control

El dígito de control es ese número de dos cifras que va justo antes de la cuenta bancaria de diez cifras(Entes encontramos dos grupos de 4 cifras, uno es el banco y el otro es la sucursal). La función de este código es validar que la cuenta no tiene ningún numero erróneo, y se puede calcular con la siguiente función Javascript:

 

function calculaDC(entidad, oficina,cuenta) {
	var pesos = new Array();
	pesos[0] = 6;
	pesos[1] = 3;
	pesos[2] = 7;
	pesos[3] = 9;
	pesos[4] = 10;
	pesos[5] = 5;
	pesos[6] = 8;
	pesos[7] = 4;
	pesos[8] = 2;
	pesos[9] = 1;

	entidadInv = inv(entidad);
	oficinaInv = inv(oficina);
	cuentaInv = inv(cuenta);
	
	ofient = "" + oficinaInv + entidadInv
	suma =0;
	for(a=0;a<8;a++)
		suma += ofient.substr(a,1)*pesos[a];

	sumaCCC =0;
	for(a=0;a<10;a++)
		sumaCCC += cuentaInv.substr(a,1)*pesos[a];

	dc = 11 - (suma % 11)
	dcCcc = 11 - (sumaCCC % 11)

	if (dc == 10) dc = 1;
	if (dc == 11) dc = 0;
	if (dcCcc == 10) dcCcc = 1;
	if (dcCcc == 11) dcCcc = 0;

	return ""+dc + dc_CCC;
	}

function inv(item) {
	var ret = "";

	for (a=0;a<=item.length;a++)
	 	ret = ret + item.substr(item.length-a,1);

	return ret
	}

El código IBAN: International Bank Account Number

El código IBAN es el número de cuenta con 4 dígitos delante para identificarla internacionalmente. Estos 4 dígitos son se componen del código de país(‘ES’ de España) mas dos digitos de control. Se puede calcular con el siguiente script:

 

function calculaIBANSpain(entidad,sucursal,cuenta) {
	var countryCode = "1428"; // Spain code

	var iban = entidad+sucursal;

	iban = "" + (iban % 97) + cuenta + cuenta.substring(0,2);
	iban = "" + (iban % 97) + cuenta.substring(2,cuenta.length) + countryCode + '00';

	modIban = iban % 97;
	ccIban = 98 - modIban;
        	if(ccIban<10)
		ccIban = "0" + ccIban;

	return "ES" + CC_iban;
    	}

BIC: Bank Identifier Code

El código BIC(O SWIFT) sirve para identificar a la el banco al que se hace una transferencia. Puede tener 8 o 11 caracteres que son: 4 caracteres Entidad + 2 caracteres País + 2 caracteres Localidad + 3 caracteres Sucursal(O XXX).

Por desgracia no hay una manera de calcularlo, con la siguiente función lo obtenemos a partir del código de entidad:

 

var bic = [];

bic[3]='BDEPESM1XXX';
bic[30]='ESPCESMMXXX';
bic[31]='ETCHES2GXXX';
bic[36]='SABNESMMXXX';
bic[46]='GALEES2GXXX';
bic[49]='BSCHESMMXXX';
bic[57]='BVADESMMXXX';
bic[58]='BNPAESMMXXX';
bic[59]='MADRESMMXXX';
bic[61]='BMARES2MXXX';
bic[65]='BARCESMMXXX';
bic[73]='OPENESMMXXX';
bic[75]='POPUESMMXXX';
bic[78]='BAPUES22XXX';
bic[81]='BSABESBBXXX';
bic[83]='RENBESMMXXX';
bic[86]='NORTESMMXXX';
bic[94]='BVALESMMXXX';
bic[122]='CITIES2XXXX';
bic[125]='BAOFESM1XXX';
bic[128]='BKBKESMMXXX';
bic[130]='CGDIESMMXXX';
bic[133]='MIKBESB1XXX';
bic[136]='AREBESMMXXX';
bic[138]='BKOAES22XXX';
bic[149]='BNPAESMSXXX';
bic[167]='GEBAESMMXXX';
bic[182]='BBVAESMMXXX';
bic[184]='BEDFESM1XXX';
bic[186]='BFIVESBBXXX';
bic[188]='ALCLESMMXXX';
bic[190]='BBPIESMMXXX';
bic[196]='WELAESMMXXX';
bic[198]='BCOEESMMXXX';
bic[200]='PRVBESB1XXX';
bic[211]='PROAESMMXXX';
bic[216]='POHIESMMXXX';
bic[219]='BMCEESMMXXX';
bic[220]='FIOFESM1XXX';
bic[224]='SCFBESMMXXX';
bic[227]='UNOEESM1XXX';
bic[229]='POPLESMMXXX';
bic[231]='DSBLESMMXXX';
bic[232]='INVLESMMXXX';
bic[233]='POPIESMMXXX';
bic[234]='CCOCESMMXXX';
bic[235]='PICHESMMXXX';
bic[236]='LOYIESMMXXX';
bic[237]='CSURES2CXXX';
bic[238]='PSTRESMMXXX';
bic[239]='EVOBESMMXXX';
bic[487]='GBMNESMMXXX';
bic[1459]='PRABESMMXXX';
bic[1460]='CRESESMMXXX';
bic[1465]='INGDESMMXXX';
bic[1474]='CITIESMXXXX';
bic[1475]='CCSEESM1XXX';
bic[1490]='SELFESMMXXX';
bic[1491]='TRIOESMMXXX';
bic[1524]='UBIBESMMXXX';
bic[1525]='BCDMESMMXXX';
bic[1534]='KBLXESMMXXX';
bic[1544]='BACAESMMXXX';
bic[2000]='CECAESMMXXX';
bic[2013]='CESCESBBXXX';
bic[2031]='CECAESMM031';
bic[2038]='CAHMESMMXXX';
bic[2043]='CECAESMM043';
bic[2045]='CECAESMM045';
bic[2048]='CECAESMM048';
bic[2051]='CECAESMM051';
bic[2056]='CECAESMM056';
bic[2066]='CECAESMM066';
bic[2080]='CAGLESMMXXX';
bic[2085]='CAZRES2ZXXX';
bic[2086]='CECAESMM086';
bic[2095]='BASKES2BXXX';
bic[2096]='CSPAES2LXXX';
bic[2099]='CECAESMM099';
bic[2100]='CAIXESBBXXX';
bic[2103]='UCJAES2MXXX';
bic[2104]='CSSOES2SXXX';
bic[2105]='CECAESMM105';
bic[3001]='BCOEESMM001';
bic[3005]='BCOEESMM005';
bic[3007]='BCOEESMM007';
bic[3008]='BCOEESMM008';
bic[3009]='BCOEESMM009';
bic[3016]='BCOEESMM016';
bic[3017]='BCOEESMM017';
bic[3018]='BCOEESMM018';
bic[3020]='BCOEESMM020';
bic[3023]='BCOEESMM023';
bic[3025]='CDENESBBXXX';
bic[3029]='CCRIES2A029';
bic[3035]='CLPEES2MXXX';
bic[3045]='CCRIES2A045';
bic[3058]='CCRIES2AXXX';
bic[3059]='BCOEESMM059';
bic[3060]='BCOEESMM060';
bic[3063]='BCOEESMM063';
bic[3067]='BCOEESMM067';
bic[3070]='BCOEESMM070';
bic[3076]='BCOEESMM076';
bic[3080]='BCOEESMM080';
bic[3081]='BCOEESMM081';
bic[3084]='CVRVES2BXXX';
bic[3085]='BCOEESMM085';
bic[3089]='BCOEESMM089';
bic[3095]='CCRIES2A095';
bic[3096]='BCOEESMM096';
bic[3098]='BCOEESMM098';
bic[3102]='BCOEESMM102';
bic[3104]='BCOEESMM104';
bic[3105]='CCRIES2A105';
bic[3110]='BCOEESMM110';
bic[3111]='BCOEESMM111';
bic[3112]='CCRIES2A112';
bic[3113]='BCOEESMM113';
bic[3115]='BCOEESMM115';
bic[3116]='BCOEESMM116';
bic[3117]='BCOEESMM117';
bic[3118]='CCRIES2A118';
bic[3119]='CCRIES2A119';
bic[3121]='CCRIES2A121';
bic[3123]='CCRIES2A123';
bic[3127]='BCOEESMM127';
bic[3130]='BCOEESMM130';
bic[3134]='BCOEESMM134';
bic[3135]='CCRIES2A135';
bic[3138]='BCOEESMM138';
bic[3140]='BCOEESMM140';
bic[3144]='BCOEESMM144';
bic[3146]='CCCVESM1XXX';
bic[3150]='BCOEESMM150';
bic[3152]='CCRIES2A152';
bic[3157]='CCRIES2A157';
bic[3159]='BCOEESMM159';
bic[3160]='CCRIES2A160';
bic[3162]='BCOEESMM162';
bic[3165]='CCRIES2A165';
bic[3166]='BCOEESMM166';
bic[3174]='BCOEESMM174';
bic[3179]='CCRIES2A179';
bic[3183]='CASDESBBXXX';
bic[3186]='CCRIES2A186';
bic[3187]='BCOEESMM187';
bic[3190]='BCOEESMM190';
bic[3191]='BCOEESMM191';
bic[9000]='ESPBESMMXXX';

function calculoBic(entidad) {
	return bic[ entidad*1 ]; 
	}

Si te a servido, por favor comparte
 

Comments

One Response to “Cálculo de códigos de los dígito de control, IBAN y BIC/SWIFT de la cuenta bancaria”
  1. Andrés says:

    Muy bueno el artículo , pero al calcular el IBAN siempre me da un número incorrecto , dá igual con que CCC lo pruebe.

Leave a Reply