Customer apps that show the real status of every payment.
Native iOS and Android apps, a customer web portal and a staff back office, all built on the Truss APIs. Transfers show each stage up to settlement, loans show the actual schedule, and anything that moves money needs a trusted device.
Based on the app designs. Names and amounts are examples.
No false ‘Successful’ messages.
Many apps show ‘Successful’ as soon as the payment switch replies. If the payment then fails to settle, the customer has already been told it worked.
Truss apps track a transfer through each stage and only show Settled once settlement is confirmed. If the records disagree, the customer sees Needs review and a case is opened for them. Notifications are only sent for final outcomes, so the app and the statement always match.
How Reliability supports this →The same features on iOS and Android.
Built in Jetpack Compose for Android and SwiftUI for iOS, with one shared API contract.
Everyday
- Home and balances
- Account detail and transactions
- Statements on request
- Notifications for final outcomes
Pay
- Send money with name check
- Review and confirm
- Transfer progress
- Settled or needs review
- Beneficiaries
- Bills and airtime
Borrow & cards
- Loan products and application
- Repayment schedule and repay
- Card controls: freeze, online, ATM
You
- Welcome, sign in and sign up
- Onboarding and KYC
- Profile, security and consent
- My devices and lost phone
- Report a problem (disputes)
Device checks on every sensitive action.
Each request identifies the device it came from. Before anything that moves money or changes a customer’s details, the server checks the device is still active. If a phone is reported lost, those actions stop working on it straight away, even if the app is still signed in.
- Secure sign-in with OpenID Connect and PKCE. Refresh tokens rotate, and signing out ends the session on the server.
- A devices screen where customers can see each device, remove one or report a phone lost.
- Biometric unlock, with consent settings the customer controls.
- No double payments. Every request that changes data carries a unique key, checked at build time, so a double tap can’t send money twice.
No one approves their own request.
The staff portal gives operations, credit and compliance teams one place to work. Sensitive changes need a second person: loan payouts, limit changes and fee waivers. Emergency access goes through a logged break-glass request.
Staff portal
Approvals, KYC review, disputes and returns, card operations, product set-up and break-glass.
Customer portal
Balances, transfers, statements, loans and support in the browser, on the same APIs as the apps.
| Request | Maker | Amount | |
|---|---|---|---|
| Loan disbursement | T. Bello | ₦700,000 | Review |
| Daily limit change | K. Musa | ₦2,000,000 | Review |
| Fee waiver | O. Ade | ₦1,500 | Review |
| Break-glass access | Ops on-call | None | 2 approvals |
Apps and core stay in step.
Every Truss API has a versioned contract. Kotlin, Swift and TypeScript types are generated from it, so Android, iOS and the web portals use exactly what the core expects. A breaking change fails the build before it reaches customers.
See the apps running.
We’ll show the Android and iOS apps on the Truss APIs, from sign-up to a transfer that settles and one that doesn’t.
Book a demo