Get it on Google Play

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

24-02-2016
 
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 ]; 
	}

Leave a Reply

© Albert Coronado Calzada