Overview

Lib Lite — the Scan to Pay Android in-app payment SDK. What it is, what you'll need, and how the pieces fit together.

Lib Lite is the Android in-app payment SDK from EFT Corporation. It's distributed as an .aar package and embeds a complete Scan to Pay checkout experience inside your activity — your app passes a transaction code and an API key, the SDK handles the rest, and your activity gets a callback when it's done.

For the cross-platform context, see In-App Payments overview.


Try the Android demo

Start with the Lib Lite Android demo application to see a complete version 1.0 reference integration using Lib Lite V1.4.72. It includes Test and Live environment selection, input validation, safe diagnostic logging, and SDK result handling.

Download the demo applications as a ZIP. The ZIP contains both the Android and iOS demos.

Use a transaction code and Lib Lite token created for the same selected environment. Credentials are not included in the demo.


What the SDK gives you

ComponentPurpose
LibLiteActivityThe main payment activity. Launch via Intent; receive the result via Activity Result.
LibLiteWalletActivityStandalone card-management — add / remove cards without making a payment.
LibLitePreRegActivityOptional pre-registration flow — register a card before the first payment.
PayByCardButtonDrop-in button view that launches LibLiteActivity.
PayByAppButtonDrop-in button view that lets the customer hand off to a supported bank app.
LibLiteLoadingPre-built progress dialog you can show while creating a code server-side.

Prerequisites

Before you start integrating:

RequirementWhy
Active merchant accountYou can't accept payments without one. Get onboarded via the Portal or Merchant Onboarding API.
Lib Lite API tokenGenerated in the Portal: log in → email dropdown → Lib Lite TokensGenerate. One token per app per environment.
A backend that can create codesThe SDK consumes codes; it doesn't create them. See Managing QR codes.
A webhook receiver or polling integrationThe SDK's success callback isn't authoritative. Confirm server-side via Webhooks or Querying transactions.
SMS hashFor OTP retrieval. Compute as per Google's SMS Retriever guide.
⚠️

Codes must be fixed-amount. Variable-amount codes are rejected with CODE_NOT_VARIABLE_AMOUNT. Set the amount when you create the code.


How the SDK is wired

   ┌────────────────────────────────┐
   │   Your app                     │
   │                                │
   │   ┌─────────────────────────┐  │
   │   │ Activity                │  │
   │   │   ↓ launches via Intent │  │
   │   └─────────────────────────┘  │
   │                ↓               │
   │   ┌─────────────────────────┐  │
   │   │ Lib Lite SDK            │  │
   │   │   • LibLiteActivity     │  │
   │   │   • Wallet, PreReg      │  │
   │   │   • Buttons + dialog    │  │
   │   └─────────────────────────┘  │
   │                ↓               │
   └────────────────│───────────────┘
                    │
                    ↓ HTTPS
   ┌─────────────────────────────────┐
   │   Scan to Pay platform          │
   │   (QA: qa.scantopay.io/pluto)   │
   │   (Live: scantopay.live/pluto)  │
   └─────────────────────────────────┘

The SDK sandboxes itself inside your app's process — no background services, no separate processes. It opens a child activity, runs the checkout, returns a result.


A complete payment in 4 lines

The simplest possible Lib Lite integration:

Intent intent = new Intent(context, LibLiteActivity.class);
intent.putExtra(LibLiteActivity.IN_CODE, "1234567890");
intent.putExtra(LibLiteActivity.IN_API_KEY, "YOUR_API_KEY");
intent.putExtra(LibLiteActivity.IN_HASH, "YOUR_SMS_HASH");
intent.putExtra(LibLiteActivity.IN_SYSTEM, "TEST"); // or "LIVE"
libLiteActivityLauncher.launch(intent);

Step-by-step in Payments.


What the SDK does NOT do

Create codesYour backend does this via /code
Verify final payment statusYou confirm via webhook or /transactionState
ReconcileSettlement and reconciliation are merchant-side
RefundUse the Refunds and reversals API server-side

The SDK is a checkout component, not a payment platform — keep that boundary clean.


What's next


Did this page help you?