A Flutter plugin for handling SBP (Sistema Bystrykh Platezhey / Faster Payment System) payment links and seamlessly opening them with bank-specific mobile applications.
- 🏦 Automatic detection of installed bank apps supporting SBP
- 📱 Support for both iOS and Android platforms
- 🔗 Handle SBP payment links and QR codes
- 💾 Offline caching of bank dictionaries
- 🎯 Direct bank app opening or fallback to web interface
Add sbp_selector to your pubspec.yaml:
dependencies:
sbp_selector:
git:
url: https://github.com/kr-digital/sbp_selector.git
ref: mainAdd URL schemes as LSApplicationQueriesSchemes entries in your Info.plist file:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>bank100000000000</string>
<string>bank100000000001</string>
...
<string>bank100000000999</string>
<string>bank100000001000</string>
</array>
Add packages in your AndroidManifest.xml file:
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data
android:host="qr.nspk.ru"
android:scheme="https" />
</intent>
<package android:name="ru.sberbankmobile" />
<package android:name="ru.gazprombank.android.mobilebank.app" />
<package android:name="ru.letobank.Prometheus" />
<package android:name="ru.nspk.sbpay" />
<package android:name="ru.rosbank.android" />
<package android:name="ru.rosbank.android.beta" />
<package android:name="com.openbank" />
<package android:name="com.openbank" />
<package android:name="ru.akbars.mobile" />
<package android:name="ru.skblab.skbbank" />
<package android:name="ru.skbbank.ib" />
<package android:name="ru.simpls.brs2.mobbank" />
<package android:name="com.idamob.tinkoff.android" />
<package android:name="com.idamob.tinkoff.android.qa" />
<package android:name="ru.vtb24.mobilebanking.android.dev" />
<package android:name="ru.vtb.mobilebanking.android.rc" />
<package android:name="ru.vtb.mobilebanking.android.alpha" />
<package android:name="ru.vtb24.mobilebanking.android.dso" />
<package android:name="ru.vtb24.mobilebanking.android" />
<package android:name="logo.com.mbanking" />
<package android:name="ru.gebank.ib" />
<package android:name="ru.raiffeisen.rmobile" />
<package android:name="ru.raiffeisennews" />
<package android:name="ru.avangard.sbp_client" />
<package android:name="ru.elplat.elplat2" />
<package android:name="ru.artsofte.russiafl" />
<package android:name="com.bifit.rncbbeta.devtest" />
<package android:name="com.bifit.rncbbeta" />
<package android:name="com.bifit.rncbbeta.devprod" />
<package android:name="ru.ftc.faktura.expobank" />
<package android:name="com.bssys.vbrrretail" />
<package android:name="ru.mkb.mobile" />
<package android:name="ru.ftc.faktura.multibank" />
<package android:name="ru.softlab.ikfl.rshb.bank.test3" />
<package android:name="ru.rshb.dbo" />
<package android:name="ru.bank_hlynov.xbank" />
<package android:name="ru.ftc.faktura.vesta" />
<package android:name="ru.ucb.android" />
<package android:name="ru.yoo.money.debug" />
<package android:name="ru.yoo.money" />
<package android:name="com.isimplelab.ibank.solidarnost" />
<package android:name="ru.bspb" />
<package android:name="ru.ftc.faktura.resokreditbank" />
<package android:name="ru.ftc.faktura.pskb" />
<package android:name="ru.ftc.faktura.absolutbank" />
<package android:name="ru.ftc.faktura.akcept" />
<package android:name="ru.ftc.faktura.kbhmb" />
<package android:name="ru.ftc.faktura.razvitiestolica" />
<package android:name="com.bssys.roscapretail" />
<package android:name="ru.ftc.faktura.etbank" />
<package android:name="ru.chelyabinvestbank.investpay" />
<package android:name="ru.chelyabinvestbank.investpay2" />
<package android:name="ru.mts.money" />
<package android:name="ru.sberbankmobile_alpha" />
<package android:name="com.bifit.mobile.citizen.mbb" />
<package android:name="com.snb.online" />
<package android:name="ru.kubankredit.mobile.android.huawei" />
<package android:name="com.isimplelab.ibank.kubankredit" />
<package android:name="com.isimplelab.ibank.kubankredit" />
<package android:name="ru.ftc.faktura.nskbl" />
<package android:name="ru.ilb.bbmobile" />
<package android:name="com.tochka.bank.debug" />
<package android:name="ru.zhuck.webapp.debug" />
<package android:name="com.tochka.bank" />
<package android:name="ru.zhuck.webapp" />
<package android:name="com.tatsotsbank.mobile" />
<package android:name="com.tatsotsbank.dbomobile" />
<package android:name="ru.ftc.faktura.nskbl" />
<package android:name="ru.alfabank.mobile.android" />
<package android:name="ru.alfabank.mobile.android.huawei" />
<package android:name="ru.alfabank.mobile.android.feature" />
<package android:name="ru.ftc.faktura.rostfinance" />
<package android:name="ru.mcbankrus.MCBankRus" />
<package android:name="ru.ftc.faktura.venetsbank" />
<package android:name="com.idamobile.android.sdm" />
<package android:name="ru.ftc.faktura.sdm" />
<package android:name="com.idamobile.android.crediteuropa" />
<package android:name="com.bifit.mobile.citizen.iturupbank" />
<package android:name="com.bifit.mobile.citizen.iturupbank" />
<package android:name="com.bssys.novikomretail" />
<package android:name="ru.albank.online.aebit.staging.test" />
<package android:name="ru.albank.online.aebit" />
<package android:name="com.bssys.stroylesretail" />
<package android:name="com.bssys.stroylesretail" />
<package android:name="ru.sovcomcard.halva.v1" />
<package android:name="ru.gazprombank.android.mobilebank" />
<package android:name="com.bifit.mobile.citizen.icbru" />
<package android:name="ru.sovcomcard.halva.v1" />
<package android:name="ru.ftc.faktura.orbank" />
<package android:name="ru.ftc.faktura.agropromkredit" />
<package android:name="com.energobank.digital" />
<package android:name="com.bifit.mobile.citizen.kbnk" />
<package android:name="ru.nbd.android" />
<package android:name="ru.rosdorbank.physical" />
<package android:name="ru.ftc.faktura.primsoc" />
<package android:name="ru.ftc.faktura.banksaratov" />
<package android:name="ru.ftc.faktura.tavrich" />
<package android:name="ru.centrinvest.mobilebanking2018" />
<package android:name="ru.centrinvest.mobilebanking2018" />
<package android:name="com.bifit.mobile.citizen.thbank" />
<package android:name="ru.ftc.faktura.kremlevskiy" />
<package android:name="ru.ftc.faktura.tkbbank" />
<package android:name="cb.ibank" />
<package android:name="ru.ftc.faktura.derzhava" />
<package android:name="ru.emb.android" />
<package android:name="ru.emb.android" />
<package android:name="com.bifit.mobile.citizen.okbank" />
<package android:name="ru.sngb.dbo.client.android" />
<package android:name="ru.sngb.dbo.client.android" />
<package android:name="com.smp.android.spinnakerQa" />
<package android:name="com.isimplelab.isimplemobile.chelind.test" />
<package android:name="com.credituralbank.CUBmobilenew" />
<package android:name="com.credituralbank.CUBmobilenew" />
<package android:name="com.mmonline.mobile" />
<package android:name="com.bifit.dvbank" />
<package android:name="com.isimplelab.isimpleceo.uglemet.test" />
<package android:name="ru.ftc.faktura.alexbank" />
<package android:name="ru.ftc.faktura.united" />
<package android:name="ru.mw" />
<package android:name="ru.ftc.faktura.intesabank" />
<package android:name="ru.ftc.faktura.intesabank" />
<package android:name="ru.mw" />
<package android:name="ru.mw" />
<package android:name="cb.ibank.vuz" />
<package android:name="ru.uralprombank.mobilebanknew.googleplay" />
<package android:name="ru.uralprombank.mobilebanknew.googleplay" />
<package android:name="com.citibank.mobile.ru" />
<package android:name="com.bssys.aversretail" />
<package android:name="com.mob.android.mobDev" />
<package android:name="com.mob.android" />
<package android:name="ru.ftc.faktura.nsbank" />
<package android:name="ru.ftc.faktura.maritimebank" />
<package android:name="ru.centrinvest.mobilebanking2018" />
<package android:name="com.isimplelab.isimpleceo.uglemet" />
<package android:name="com.bifit.vfbank" />
<package android:name="com.bssys.timerbank.retail.test" />
<package android:name="com.timerbank.retail" />
<package android:name="ru.ftc.faktura.iturup" />
<package android:name="ru.ftc.faktura.finbank" />
<package android:name="ru.vtkbank.android" />
<package android:name="com.bssys.correqts.retail.custom.guta" />
<package android:name="ru.ftc.faktura.gaztransbank" />
<package android:name="ru.otpbank.mobile" />
<package android:name="com.isimplelab.ibank.chelind" />
<package android:name="ru.ftc.faktura.multibank" />
<package android:name="ru.ftc.faktura.nokss" />
<package android:name="com.isimplelab.ionic.kazan.fl" />
<package android:name="ru.ftc.faktura.vlbb" />
<package android:name="ru.ftc.faktura.kbb" />
<package android:name="ru.ftc.faktura.avtogradbank" />
<package android:name="ru.ftc.faktura.mfkbank" />
<package android:name="ru.simpls.brs2.mobbank" />
<package android:name="ru.zenit.android" />
<package android:name="ru.sbi.android.qa" />
<package android:name="ru.sbi.android.huawei.qa" />
<package android:name="ru.sbi.android.huawei" />
<package android:name="ru.sbi.android" />
<package android:name="ru.ftc.faktura.forshtadt" />
<package android:name="ru.ftc.faktura.solidbank" />
<package android:name="com.isimplelab.ionic.atbnew" />
<package android:name="com.smp.android" />
<package android:name="com.servicemyassistant.android" />
<package android:name="com.bifit.mobile.citizen.invb" />
<package android:name="ru.ftc.faktura.akibank" />
<package android:name="ru.ftc.faktura.nipbank" />
<package android:name="com.bifit.pmobile.isbank" />
<package android:name="com.bssys.correqts.retail.custom.uralfd" />
<package android:name="ru.ftc.faktura.alefbank" />
<package android:name="com.banksoyuz.artsofte" />
<package android:name="com.bifit.vfbank" />
<package android:name="com.bifit.mobile.citizen.zarech" />
<package android:name="com.bssys.correqts.retail.custom.rnb" />
<package android:name="com.openwaygroup.ic.panda.poidem" />
<package android:name="com.bssys.uralfdretail" />
<package android:name="com.bifit.mobile.citizen.nkbank" />
<package android:name="com.metkombanktest.mobile.apk" />
<package android:name="com.isimplelab.ionic.agroros" />
<package android:name="ru.ftc.faktura.agroros" />
<package android:name="ru.ftc.faktura.jtbank" />
<package android:name="ru.ftc.faktura.ns" />
<package android:name="com.banksoyuz.artsoftetest" />
<package android:name="ru.ftc.faktura.zemskybank" />
<package android:name="ru.rusnarbank.correqts.retail" />
<package android:name="com.bifit.mobile.citizen.cfb" />
<package android:name="ru.ftc.faktura.baikalinvestbank" />
<package android:name="com.metkombank.mobile" />
<package android:name="com.intervale.sbp.atlas" />
<package android:name="com.mifors.izhcombank" />
<package android:name="ru.bankuralsib.mb.android.debug" />
<package android:name="ru.bankuralsib.mb.android" />
<package android:name="com.bifit.atbbank" />
<package android:name="ru.ipb.ubsmobile" />
<package android:name="ru.rubank.ubsmobile" />
<package android:name="com.isimplelab.ionic.gorbank" />
<package android:name="ru.briginvest.sense" />
<package android:name="com.hicebank.android" />
<package android:name="com.hicebank.android" />
<package android:name="com.hicebank.android" />
<package android:name="com.isimplelab.ionic.gorbank.prod" />
<package android:name="ru.ftc.faktura.moscombank" />
<package android:name="cz.bsc.rc.debug" />
<package android:name="cz.bsc.rc" />
<package android:name="com.bpc.crossplatform_trading.bpc_trading" />
<package android:name="ru.krk.ubsmobile" />
<package android:name="com.bifit.mobile.citizen.tenderbank" />
<package android:name="com.bifit.mobile.citizen.belsocbank" />
<package android:name="ru.unicredit.android" />
<package android:name="ru.homecredit.mycredit" />
<package android:name="ru.isfront.android.kt" />
<package android:name="ru.ftc.faktura.multibank" />
<package android:name="com.bifit.mobile.citizen.moskb" />
<package android:name="com.bssys.correqts.retail.custom.ibam" />
<package android:name="com.isimplelab.ibank.toyota.test" />
<package android:name="com.isimplelab.ibank.toyota" />
<package android:name="com.bifit.nrb" />
<package android:name="ru.ftc.faktura.novobank" />
<package android:name="com.isimplelab.ionic.standart" />
<package android:name="com.isimplelab.ionic.nv" />
<package android:name="com.isimplelab.ionic.nv" />
<package android:name="com.bifit.mobile.private.bbr" />
<package android:name="com.finservice.mobile" />
<package android:name="com.finservice.mobile" />
<package android:name="ru.ftc.faktura.lanta" />
<package android:name="com.cetelem.cetelem_android" />
<package android:name="com.cetelem.cetelem_android" />
<package android:name="ru.ftc.faktura.dolinsk" />
<package android:name="com.isimplelab.ionic.round" />
<package android:name="ru.bankvl.android.physical" />
<package android:name="ru.bcs.bcsbank.dev" />
<package android:name="ru.bcs.bcsbank" />
<package android:name="com.ltech.unistream" />
<package android:name="com.ltech.unistream" />
<package android:name="ru.domrf.bank.dev.native" />
<package android:name="com.bank.domrf.v2" />
<package android:name="ru.ibam.retailmobile" />
<package android:name="com.isimplelab.ionic.slavia" />
<package android:name="com.isimplelab.ionic.slavia.prod" />
<package android:name="com.yandex.bank.dev" />
<package android:name="com.yandex.bank" />
<package android:name="com.bifit.mobile.citizen.efbank" />
<package android:name="ru.rosbank.android.beta.test" />
<package android:name="ru.rosbank.android.beta.cert" />
<package android:name="com.bifit.mobile.citizen.MCBank" />
<package android:name="ru.ftc.faktura.bgfbank" />
<package android:name="com.idamobile.android.LockoBank" />
<package android:name="su.atb.mobileapp.develop" />
<package android:name="com.compassplus.mobicash.customer" />
<package android:name="com.isimplelab.ionic.uralfinance.fl" />
<package android:name="com.isimplelab.isimplemobile.payjet" />
<package android:name="com.priobank.prio" />
<package android:name="com.priobank.prio.huawei" />
<package android:name="ru.ftc.faktura.siab" />
<package android:name="com.isimplelab.ionic.round.prod" />
<package android:name="com.drive_click.android" />
<package android:name="com.bifit.mobile.private.atbbank" />
<package android:name="com.bssys.gutaretail" />
</queries>
Warning! Starting with iOS 15 there's limit in maximum 50 entries in list, so you probably need to take first 50 entries from c2bmembers.json. Look for details here .
That's need for UIApplication.shared.canOpenURL method worked correctly. You can copy and paste all lines
- path: sbp_selector/example/ios/Runner/Info.plist -> LSApplicationQueriesSchemes
See -[UIApplication canOpenURL:]
for more details.
import 'package:sbp_selector/sbp_selector.dart';
// Initialize the plugin
final selector = await SbpSelector.init();
// Get list of available bank apps for payment link
final sbpLink = 'https://qr.nspk.ru/...';
final availableBanks = await selector.getAvailableApps(sbpLink);
// Open payment in specific bank app
await selector.openApp(selectedBank, sbpLink);
// Or try to open any deeplink directly
final opened = await selector.tryOpenLink(sbpLink);This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.