Overview
2C2P SoftPOS turns any NFC-enabled Android device into a certified contactless payment terminal, with no dedicated hardware or proprietary device needed. Merchants can accept card-present payments directly on a standard Android smartphone or tablet, while developers get a single platform to manage both in-person and online transactions.
Before you begin
SoftPOS requires:
- An NFC-capable Android device
- A valid 2C2P merchant account with SoftPOS enabled
How it works
A customer taps their contactless card or device near the merchant's Android device. The NFC chip reads the payment credentials, the 2C2P SoftPOS application processes the transaction through the payment network, and a result is returned to your application, all within seconds.
How that result reaches your application depends on your integration approach. SoftPOS supports four models, from a standalone app requiring no code to a fully embedded SDK.
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#00112c', 'primaryTextColor': '#ffffff', 'primaryBorderColor': '#004f5c', 'lineColor': '#0088FF', 'secondaryColor': '#004f5c', 'tertiaryColor': '#f2f2f2', 'tertiaryTextColor': '#00112c', 'edgeLabelBackground': '#f2f2f2'}}}%%
flowchart LR
Merchant(["Merchant"])
YourApp(["Your App / System"])
Merchant -->|"Standalone"| SA(["SoftPOS App"])
YourApp -->|"Native SDK"| SDK(["SoftPOS SDK"])
YourApp -->|"HTTP over LAN"| DTA(["SoftPOS App"])
YourApp -->|"Android Intent"| A2A(["SoftPOS App"])
SA --> NFC(["NFC Tap"])
SDK --> NFC
A2A --> NFC
DTA --> NFC
NFC --> Network(["2C2P"])
Network --> Result(["Payment Result"])
style Merchant fill:#e8ecf2,color:#00112c,stroke:#00112c
style YourApp fill:#e8ecf2,color:#00112c,stroke:#00112c
style SA fill:#dff0f2,color:#004f5c,stroke:#004f5c
style SDK fill:#dff0f2,color:#004f5c,stroke:#004f5c
style A2A fill:#dff0f2,color:#004f5c,stroke:#004f5c
style DTA fill:#dff0f2,color:#004f5c,stroke:#004f5c
style NFC fill:#cce4ff,color:#0055bb,stroke:#0088FF
style Network fill:#cce4ff,color:#0055bb,stroke:#0088FF
style Result fill:#f2f2f2,color:#333333,stroke:#cccccc
Choose your integration
Select the approach that fits your architecture:
Standalone App
Download the 2C2P SoftPOS Application directly onto an NFC-enabled Android device. No integration code is required — the app is ready to accept contactless payments out of the box after activation.
Best for: Merchants who want to start accepting payments immediately without building a custom application.
Mobile SDK
The 2C2P SoftPOS SDK is embedded directly into your Android application. Your app owns the entire payment experience: NFC tap, transaction processing, and result handling all happen within a single app with no dependency on a separate SoftPOS application.
Best for: Android developers building a fully integrated, single-app merchant experience.
%%{init: {'theme': 'base', 'themeVariables': {'actorBkg': '#e8ecf2', 'actorTextColor': '#00112c', 'actorBorderColor': '#004f5c', 'signalColor': '#0088FF', 'signalTextColor': '#333333', 'activationBkgColor': '#dff0f2', 'activationBorderColor': '#004f5c', 'noteBkgColor': '#f2f2f2', 'noteTextColor': '#00112c', 'noteBorderColor': '#004f5c'}}}%%
sequenceDiagram
participant App as Your App
participant SDK as SoftPOS SDK
participant Net as 2C2P
participant Backend as Your Backend
App->>SDK: pay(paymentToken)
activate SDK
SDK->>SDK: NFC tap (card / device)
SDK->>Net: Process transaction
Net-->>SDK: Transaction result
deactivate SDK
SDK-->>App: PaymentResultResponse
opt Backend Notification
Net-->>Backend: Payment status notification
end
Device-to-App (Pay Server)
The 2C2P SoftPOS Application runs a lightweight HTTP server that listens for requests over a Local Area Network (LAN). Any device on the same network, regardless of platform, can send HTTP requests to trigger payments, voids, configuration reloads, or transaction enquiries.
Best for: Existing POS systems, kiosks, or back-office software on non-Android platforms that need to drive a SoftPOS terminal remotely.
%%{init: {'theme': 'base', 'themeVariables': {'actorBkg': '#e8ecf2', 'actorTextColor': '#00112c', 'actorBorderColor': '#004f5c', 'signalColor': '#0088FF', 'signalTextColor': '#333333', 'activationBkgColor': '#dff0f2', 'activationBorderColor': '#004f5c', 'noteBkgColor': '#f2f2f2', 'noteTextColor': '#00112c', 'noteBorderColor': '#004f5c'}}}%%
sequenceDiagram
participant Sys as Your System
participant POS as SoftPOS App
participant Net as 2C2P
participant Backend as Your Backend
Sys->>POS: HTTP POST /api/v1/trans
activate POS
POS->>POS: NFC tap (card / device)
POS->>Net: Process transaction
Net-->>POS: Transaction result
deactivate POS
POS-->>Sys: HTTP Response
opt Backend Notification
Net-->>Backend: Payment status notification
end
App-to-App
Your Android application communicates with the standalone 2C2P SoftPOS Application on the same device using Android Intents. The poslib wrapper library abstracts the underlying Intent mechanics, providing a clean API for payments, voids, and transaction queries, without your app needing to handle NFC directly.
Best for: Developers who want payment processing isolated in the dedicated SoftPOS app while their merchant app handles the business logic.
%%{init: {'theme': 'base', 'themeVariables': {'actorBkg': '#e8ecf2', 'actorTextColor': '#00112c', 'actorBorderColor': '#004f5c', 'signalColor': '#0088FF', 'signalTextColor': '#333333', 'activationBkgColor': '#dff0f2', 'activationBorderColor': '#004f5c', 'noteBkgColor': '#f2f2f2', 'noteTextColor': '#00112c', 'noteBorderColor': '#004f5c'}}}%%
sequenceDiagram
participant App as Your App
participant POS as SoftPOS App
participant Net as 2C2P
participant Backend as Your Backend
App->>POS: Android Intent via poslib
activate POS
POS->>POS: NFC tap (card / device)
POS->>Net: Process transaction
Net-->>POS: Transaction result
deactivate POS
POS-->>App: Intent result
opt Backend Notification
Net-->>Backend: Payment status notification
end
Comparison
| Standalone App | Mobile SDK | App-to-App | Device-to-App | |
|---|---|---|---|---|
| Integration required | No | Yes | Yes | Yes |
| Integration style | N/A | Native Android SDK | Android Intents | HTTP over LAN |
| Wrapper library | N/A | SoftPOS SDK | poslib | None |
| Platform | Android | Android | Android | Any |
| SoftPOS app required | Yes | No | Yes | Yes |
| Network required | No | No | No | Yes (LAN) |
| NFC handled by | SoftPOS app | Your app (via SDK) | SoftPOS app | SoftPOS app |
Once you have chosen your integration approach, follow the links in each section above to get started.
Updated about 3 hours ago