Skip to content

Architecture

switcloud is a hybrid architecture that provides an abstracted EMV L2 processing layer and centralized estate/configuration management for building modern in-store payment applications.

It enables payment application developers to write one unified L3 application and operate it across both COTS (Tap-to-Pay) devices and PCI-PTS terminals, regardless of the underlying EMV L2 stack.

Core Design Principles

  • Terminal Agnostic: Supports Android COTS devices and PCI-PTS terminals.
  • EMV L2 Stack Agnostic: Works with moka (pre-certified) or other existing terminal kernels via GLA abstraction.
  • Centralized Control, Decentralized Execution: Configuration and payment orchestration are cloud-driven; payments execute locally on device.
  • Offline-Ready: Payment processing supports offline mode with deferred sync.
  • Certification Simplification: Includes pre-certified L2 (moka) and MPoC components to reduce certification scope.

High-Level Architecture

switcloud is composed of:

  1. Cloud Services (switcloud APIs) — managed by Switstack
  2. Client SDK and dependencies — integrated into the payment acceptance app on the terminal

These components enable the payment application to operate consistently across both COTS devices and PCI-PTS terminals with no changes to payment flow logic.

Cloud components (switcloud APIs)

  • switcloud-bom (Business Object Model / Estate API): Manages the merchant estate: Organizations, Merchants, Stores, Points of Interaction (POIs)
  • switcloud-config (EMV L2 Configuration API): Centralizes EMV kernel configuration: CAPKs, BINs, CRLs, EMVs
  • switcloud-payment (Payment API): Manages transaction lifecycle (Initiation, completion of payments)

Payment Terminal Components

  • switcloud-clt-kt (Client / SDK): Primary developer interface: configure(), startPayment(), completePayment() Manages configuration retrieval, L2 execution, and data upload
  • switcloud-api-ktConvenience wrapper for REST APIs (estate, config, payment)
  • switcloud-l2-kt GLA adapter: Interfaces with moka or any other GLA-compliant EMV L2 stack and enables kernel modularity with no L3 code changes

Note

The above mentioned packages are available for Kotlin (-kt extension) but also for Python, JavaScript/TypeScript and C++. Additionnal languages available on demand.

Device Flows

COTS Devices (Tap-to-Pay)

  • switcloud-clt-kt integrates with pre-certified moka L2 stack (installed on device)
  • MPoC Software + MPoC Service components support streamlined certification
  • Single unified payment flow via switcloud APIs

Switcloud COTS

*Diagram: `switcloud` COTS Device*

PCI-PTS Terminal

  • switcloud-clt-kt integrates with existing certified EMV L2 stack on the terminal
  • No new certification required; leverages terminal vendor's certification
  • Unified L3 application logic remains the same

Switcloud with EMV L2

*Diagram: `switcloud` with EMV L2*

Customer Backend Integration

  • Payment Processing App in the customer backend initiates and tracks payments
  • Secure exchange of payment IDs and encrypted data between backend and switcloud APIs
  • Full observability of transaction state and results

Switcloud Customer Backend

*Diagram: `switcloud` Customer Backend*