Zone Startups FinTech Friday

A meetup on the design process in payment apps and tracking conversions.

Abhinit Tiwari


Designing for payments

Submitted Feb 17, 2017

Digital payments are hard. Not only because you’re competing with modes as practical as cash, or as convenient as credit cards.

Here is what you need to keep in mind while solving for payment related problems.



  • Always think of real world situations.
  • Get to know the culture and idiosyncrasies of your target users.
  • Design isn’t done until you put it in the hands of the users.
  • The solution isn’t always an ‘app’. Think about merchants, think NFC, bluetooth, POS.


  • Payments make users think.
  • Research on peoples apprehensions around payment (what if I lose the phone…)
  • Gain trust by visually enforcing trust.
  • Don’t ask for anything that you don’t compulsarily need for your solution to work.
  • When you ask for any information, be explicit and upfront about why you need it.
  • Keep it safe.
  • Enforce strong preventive techniques like giving an option to use PIN code locks or TouchID.


  • Chunking: Break your flow down into the the shortest possible chunks. It’s okay to break things into multiple steps. It may actually be faster.
  • ONE SCREEN. ONE ACTION. It’s a good thing to keep repeating in your head.
  • Headings and labels. Use ‘verbs’. [Yes, No, Cancel] is inferior to [Save, Don’t Save, Dismiss]
  • Visual heirarchy. Don’t be afraid to hide things below the first fold. Mobile users don’t mind vertical scrolling. Prioritise and emphasise important things. Break the rest of it into smaller more granular elements.

Speaker bio

I’ve been designing and programming apps for almost 9 years. First at, now at Go-Jek.

I’ve worked a bunch of payment apps, launched them, measured them and refined them. A couple of them have topped the finance categories multiple times on both iOS and Android.


{{ gettext('Login to leave a comment') }}

{{ gettext('Post a comment…') }}
{{ gettext('New comment') }}
{{ formTitle }}

{{ errorMsg }}

{{ gettext('No comments posted yet') }}