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:
- Cloud Services (
switcloud
APIs) — managed by Switstack - 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, EMVsswitcloud-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 uploadswitcloud-api-kt
Convenience 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-certifiedmoka
L2 stack (installed on device)- MPoC Software + MPoC Service components support streamlined certification
- Single unified payment flow via
switcloud
APIs
*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
*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
*Diagram: `switcloud` Customer Backend*