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.


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