Bank card scanning with camera in a mobile app

Manual card entry is the most common point where customers abandon payment. We develop and implement turnkey bank card scanning with camera: recognition takes seconds, and the number of abandoned carts drops noticeably. Let's discuss your task — we'll come back with an estimate and a plan.

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a mobile application for FEEDME
    Development of a mobile application for FEEDME
    971
  • Development of a mobile application for XOOMER
    Development of a mobile application for XOOMER
    869
  • Development of a mobile application for RHL
    Development of a mobile application for RHL
    1289
  • Development of a mobile application for ZIPPY
    Development of a mobile application for ZIPPY
    1143
  • Development of a mobile application for Affhome
    Development of a mobile application for Affhome
    1076
  • Development of a mobile application for the FLAVORS company
    Development of a mobile application for the FLAVORS company
    677

Scanning bank cards with a camera: where input breaks

Manual card entry is the most expensive part of payment in a mobile app. A person enters 16 digits, the expiry date, and the code from the back, makes a mistake in one digit, gets a decline from the bank, and leaves.

On a long form this happens more often than it seems: the share of incomplete orders grows precisely at the payment data entry step, not at product or delivery selection.

Scanning bank cards with a camera removes this part almost entirely: point the lens — the number, expiry, and cardholder name are recognized and filled into the fields. But recognition alone does not solve the task.

If the camera misreads embossed digits on glare-prone lamination, confuses 6 and 8, 0 and 8, 1 and 7, or inserts someone else's number from a neighboring frame — the user gets an input error where there wasn't one before, and trust in payment drops.

A separate category of failures is behavior on real devices. The camera on a budget device focuses more slowly, in low light the frame is noisy, and on cards with vertical or non-standard digit layouts recognition breaks down.

If the app also doesn't leave a clear way back — return to manual card entry, fix one field without starting over — dropout at payment happens after the person has already spent time.

The cost of these failures is measured not in convenience but in conversion: every percentage point of dropout at payment means abandoned carts and lost revenue that can't be recovered later with a repeat tap.

Let's break down how this is addressed at the level of recognition, validation, and the fallback-to-manual-entry scenario.

What card recognition in an app delivers

Card recognition via camera eliminates the most expensive part of payment — manually entering 16 digits, the expiry date, and the cardholder name.

The user points the camera, the number is populated into the form in a fraction of a second, and checkout is cut from a minute and a half to two minutes down to 15-20 seconds.

On long forms, where a person is already tired of filling in the address and delivery details, this is a noticeable difference: the share of abandoned carts at the payment step drops, and payment conversion grows without a single change in marketing.

The second effect — successful payments. Manual entry errors cause declines that aren't the bank's fault: a wrong digit, a mixed-up expiry date, an extra space.

A scanner reads the data from the physical card and populates it as is, so the share of transactions declined due to incorrect details drops severalfold. These are the declines that used to come back to support and required a retry.

The third effect — fewer support requests. Every failed entry means a "payment won't go through" ticket, a back-and-forth, and a lost customer.

When the details are populated automatically and the user sees the recognized number and can correct it, there are fewer disputed situations. The load on first-line support drops, and the freed-up time goes to real problems rather than sorting out typos.

Trust deserves a separate mention. The scanner runs on the device and does not send the card image to a server — only the text is recognized, and this is important to state in the interface.

The user sees that the app isn't "photographing" the card but reading the digits, and is more willing to trust the payment. Let's break down how this works and what to consider during implementation.

Card Reading Methods: Comparing Approaches

Choosing a card reading method is not a matter of taste, but a trade-off between the share of successful transactions, payment provider requirements, and support costs. Below are four real alternatives that businesses choose between at launch and as the product evolves.

Option When it fits Limitations
Manual entry Fallback path, older devices, cards with unreadable embossing Errors in 16 digits, higher decline rate, slower
Camera Primary scenario for a mass-market application Depends on lighting and focus, requires a fallback to manual entry
External reader High-traffic points, accepting payments on site Additional hardware and pairing
NFC Contactless cards, fast acceptance Does not cover cards without a chip, device limitations

In practice, a working scenario is almost always combined: camera as the primary path, manual entry as a safety net, NFC and an external reader where speed at scale is needed.

This combination provides resilience: if the camera fails to recognize the card, the user does not leave but completes the transaction.

Separately, it is worth checking compatibility with the payment provider and security requirements — not every card reading method is permitted in a specific environment.

We review these limitations before development begins so that the chosen scheme does not require rework at the integration stage.

How we implement the scanner: stages of work

Work proceeds in iterations: first we capture how input is currently structured, then we tune recognition for real cards and scenarios, and only after that do we hand over the module.

This order eliminates the main risk — "it scans, but not the right cards" and "it works on a test device, but not for the user."

  1. Input audit. We review the current payment form: manual entry, masks, number validation, error behavior, and analytics on drop-offs at the step. We identify where users are lost and what exactly the scanner should address.
  2. Scenario alignment. We define which cards and types we support, what happens on a failed recognition, and whether manual entry exists as a fallback. We separately discuss camera behavior: permissions, behavior when access is denied, and user prompts.
  3. Recognition tuning. We connect recognition of the number, expiry, and cardholder name, configure confidence thresholds and rules for when a number is accepted versus when we ask the user to retry. We train the module on real cards, not on ideal samples.
  4. Device testing. We run it across a fleet of phones: different cameras, lighting, tilt, glare, worn and non-standard cards. We look not only at accuracy, but also at response speed and battery consumption during prolonged camera use.
  5. Integration and security. We embed the module into the payment form, verify that data does not linger in logs or flow into analytics, and that input complies with the payment provider's requirements.
  6. Acceptance and metrics. We compare the share of successful scans and time to form completion before and after. We set the threshold below which the module is considered not ready.
  7. Module handover. We deliver the configured component, connection instructions, the list of tested devices, and update rules for when card designs change.

What speeds up the work

If the app already has a camera and a payment form, implementing the scanner takes less time — there is no need to build input from scratch.

The bulk of the time goes into tuning recognition for real cards and testing on devices: that is exactly where glare, wear, and non-standard fonts surface, breaking the "ideal" scenario.

What the customer receives

We hand over not a "working application" but a package your team can use to operate and evolve the bank card camera scanning module without us. Each artifact addresses its own class of tasks: build, integration, security, support.

  • Scanning module — an isolated component for recognizing the card number, expiry date, and cardholder from the camera, connected to your application as a separate library. Inside is the logic for frame preprocessing, recognition, and card number validation using the Luhn algorithm, so that erroneous data does not reach the form.
  • Configurations — sets of parameters for your scenarios: recognition sensitivity, timeouts, behavior in poor lighting and glare, confidence thresholds. They can be changed without rebuilding the application.
  • Integration schemas — diagrams of data flows between the camera, the recognition module, and your backend, including the points where the card number must not leave the device.
  • Access policies — rules for working with the camera and personal data: which permissions are requested, what is logged, what is masked, how access revocation is configured.
  • Documentation — description of the module interfaces, call examples, analysis of typical recognition errors and ways to resolve them.
  • Support regulations — the procedure for updating the module, rolling back to a previous build, responding to complaints about recognition quality, and handing over incidents.
  • Test set — a selection of card images under various shooting conditions for checking recognition quality with each update.

The package is designed on the assumption that your team will handle integration and initial operation independently. Describe the task — we will come back with an estimate and a plan for your scenario.

Case: Card scanning in a banking app

What it was before

In the banking app, card payment came down to manual entry: the customer switched between the screen and the plastic card, typing 16 digits, the expiry date, and the code from the back.

On long numbers, people made mistakes in one or two digits — the payment was declined on the bank's side, and the person had to start over.

Support received a stream of identical requests saying "payment won't go through," even though the problem wasn't the account but a typo during entry.

What was changed

Our engineers built card recognition with the camera directly into the payment form — based on Google ML Kit. The camera is pointed at the card, the number and expiry date are filled into the fields automatically, and the customer only has to check the data and confirm.

We added frame quality control: hints on card positioning, border highlighting, and recognition of the bank number from the first digits so the customer can immediately see whether it's the right card.

We also separately worked through scenarios where the camera is unavailable or the card is damaged — manual entry remained as a fallback rather than the primary path.

What it became

Metric Before After
Average card entry time ~40 seconds ~8 seconds
Share of successful payments on the first attempt 71% 94%
Support requests about payment baseline level −38%

Entry time dropped severalfold, and most of the declines disappeared along with typos from manual typing. The support workload on the topic of payment fell by almost 40% — the team redirected the freed-up time to handling genuine disputed transactions.

How does the camera differ from NFC and manual entry?

The camera, NFC, and manual entry solve the same task — getting the card number and expiry date — but they behave differently across a real fleet of devices.

NFC reads data contactlessly and almost instantly, but it only works where a module is present, the card supports contactless payment, and the user is willing to hold it up to the phone.

Manual entry doesn't depend on hardware at all, but with 16 digits people make mistakes: a typo in a single digit — and the payment fails, while the user leaves to sort it out.

The camera sits in the middle and in practice covers more scenarios. Recognition works on the video stream: the app finds the card rectangle in the frame, straightens the perspective, reads the number and expiry date, and sometimes the cardholder name as well.

Recognition accuracy stays high as long as the card falls within the frame and the lighting allows the embossed font to be distinguished. The difficulties are predictable: glare on the laminate, worn or non-standard cards, low light.

That's why recognition doesn't replace verification but complements it — the number's checksum filters out some errors before they're even sent to the server.

Device compatibility is the main argument for the camera. It's present on any smartphone, whereas the NFC module isn't available everywhere, and on some models it's disabled or restricted by policies.

The camera doesn't require consent for contactless payment and doesn't conflict with security settings.

Manual entry remains as a fallback: if the camera couldn't read the card, the user enters the data manually, and the app suggests the format and validates the number on the fly.

In terms of speed, the camera loses to NFC by a fraction of a second, but beats manual entry by several times over and reduces the share of abandoned forms.

The most reliable approach is to combine them: first try the camera, offer manual entry if it fails, and connect NFC where it's available. This order provides maximum device coverage and predictable recognition accuracy without being tied to a single technology.

Technical doubts and answers

Scanning a card with a camera is an area where three risks converge: data leakage, inconsistent recognition quality, and the spread of devices across the audience. Below are answers to what is most often asked during the evaluation stage.

Where does the card image go, and what is stored on the device?

The frame is processed on the device and is not written to the app's memory: recognition runs on the camera stream, and only the result is sent to the server — the number, expiry date, and cardholder name.

The image is discarded immediately after parsing and does not linger in temporary files. This mode removes the main class of concerns during audits: there is simply no sensitive data that could be lost.

What about recognition in low light and on reflective plastic?

Quality does not rest on a single model but on a combination: automatic exposure and contrast correction, locating the card boundaries in the frame, and validating the number with a checksum.

If confidence is below the threshold, the app does not insert questionable digits but asks the user to retake the frame or enters the number manually — the user does not end up with incorrect card details. For embossed and glossy cards, changing the angle and an in-app hint help.

Will it work on older devices?

Yes, but at different speeds. On weak hardware, recognition follows a simplified scenario: less frequent frame sampling, lower analysis resolution, and some steps are performed on the server. The feature remains functional; only the response time increases.

We set the cutoff threshold based on measurements across a real fleet of devices, not on spec-sheet characteristics.

What about camera access and privacy?

Permission is requested at the moment of the first scan, with an explanation of why it is needed — not at app startup. Declining does not block payment: manual entry remains available.

The privacy policy explicitly states that frames are not stored or shared with third parties, and camera access can be revoked in the settings at any time.

What is included in post-launch support?

We collect statistics on the share of successful scans and the reasons for failures, broken down by device model and OS version.

This allows us to make targeted fixes to the flow when a new phone model is released or the system is updated, rather than rewriting the module entirely. We roll out recognition library updates regularly — accuracy does not degrade over time.

Let's discuss the card scanning task in your app

To make the conversation concrete rather than "tell us about card scanning in general," it helps to lay out the inputs right away: the platform and its current branch, which cards need to be recognized (local only or international as well), where the input happens — payment, adding a card in the account area, registration — and what already exists in the app: the camera, the input screen, the layer that works with the payment provider. That's enough to estimate the scope and avoid having to redo the integration later.

Then we come back with an estimate and an implementation plan: which screens are affected, where we recognize the number and expiry date, how we handle cards without embossed digits and non-standard layouts, and how we build in manual entry as a fallback.

As a separate point — what we do about security: on-device recognition, without sending the frame to a server, and how that aligns with the payment provider's requirements.

Here's what's worth preparing for the task discussion:

  • the platform and the current branch the app is being built for;
  • the list of cards that need to be recognized, and their priority;
  • the screens where card input is needed, and the current flow;
  • the payment provider or gateway that integration is already underway with;
  • whether there's access to test cards and the provider's sandbox;
  • security and data storage requirements on your side;
  • timeline constraints and what's already committed to the current release.

Describe the task at this level of detail — we'll come back with an estimate, an implementation plan, and a breakdown by stages. If some points aren't clear yet, that's not a blocker: we'll clarify on a call and lock it into the plan.