DocumentationRecipesAPI ReferenceChangelog
Documentation

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 AppMobile SDKApp-to-AppDevice-to-App
Integration requiredNoYesYesYes
Integration styleN/ANative Android SDKAndroid IntentsHTTP over LAN
Wrapper libraryN/ASoftPOS SDKposlibNone
PlatformAndroidAndroidAndroidAny
SoftPOS app requiredYesNoYesYes
Network requiredNoNoNoYes (LAN)
NFC handled bySoftPOS appYour app (via SDK)SoftPOS appSoftPOS app

Once you have chosen your integration approach, follow the links in each section above to get started.