SIM ToolKit API

I’d like to propose that Apple consider introducing a controlled entitlement for the SIM Application Toolkit (STK) on iOS, allowing limited developer access through a secure, user-consented API layer.

While I understand the historical restrictions around SIM access for privacy and carrier security, there are legitimate, high-impact use-cases in emerging markets where STK remains a critical part of everyday digital transactions. Currently, developers have no sanctioned way to trigger or interact with STK flows — which leaves millions of iPhone users unable to complete basic offline payment or authentication actions that their Android counterparts can.

The Problem

In regions such as Sub-Saharan Africa, South Asia, and Southeast Asia, entire financial ecosystems still depend on SIM-based STK interactions (commonly through USSD or encrypted STK sessions). On iOS:

The “SIM Applications” menu is buried under Settings → Cellular → SIM Applications, often missing depending on carrier provisioning.

Third-party developers cannot programmatically open or trigger STK actions.

This results in incomplete or inconsistent payment experiences for iOS users — even when the same SIM card supports rich offline capabilities on Android devices.

Proposed Solution

Introduce a “SIMToolkitAccess” entitlement, gated behind the following controls:

  • User Consent Prompt

When first triggered, the system displays a native dialog: “App ‘X’ would like to initiate a SIM Toolkit action (e.g., payment or balance check). Do you allow this?” The user can approve once, always, or deny.

  • Scoped Access Model

Allow only STK command initiation (e.g., “Launch STK Menu,” “Send STK Request”)

Prohibit background execution or passive SIM data reading.

Require entitlement approval from Apple Developer Relations, similar to CarPlay, CallKit, or HealthKit.

  • Secure Sandbox

STK sessions run in a system-managed sandbox with zero data exposure to the calling app. The app simply receives a completion callback with a generic status code (e.g., .completed, .cancelled, .timeout).

Key Use-Cases That Would Benefit

  1. Offline Mobile Payments (M-PESA, Airtel Money, T-Kash)

Many users rely on STK-based menus for sending or receiving money, paying bills, and topping up accounts. → Enabling secure triggers from native apps would unify the payment UX between Android and iOS, increasing inclusivity.

  1. SIM-based Authentication / OTP Requests

Telecoms and banks in these regions use STK channels for encrypted session-level identity verification. → Allowing STK initiation would enable secure, offline identity confirmation flows.

  1. Carrier Value-Added Services (Data Bundles, Utility Payments)

Network operators still deliver bundles, electricity token purchases, and airtime loans via STK sessions. → Secure developer access would allow modern iOS apps to wrap these flows in more intuitive interfaces while maintaining carrier security.

  1. Offline Resilience / Disaster-Recovery Flows

During power or data outages, STK is often the only operational payment method, as it runs directly on the GSM layer. → Allowing iOS apps to gracefully degrade to STK ensures users can still transact safely without internet access.

Why It Matters

This is not about exposing low-level carrier interfaces — it’s about giving developers the ability to deliver consistent, accessible, and inclusive financial experiences to iPhone users in markets where connectivity cannot be assumed.

Apple’s leadership in privacy and safety would make it the perfect platform to define the secure standard for modernized STK integration — something Android’s open access model lacks. A gated entitlement model would preserve integrity while unlocking transformative use-cases for millions.

Answered by DTS Engineer in 864581022

The best way to get these ideas in front of the folks who have the power to act on them is to put them in an enhancement request.

Please post your bug number, just for the record.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

The best way to get these ideas in front of the folks who have the power to act on them is to put them in an enhancement request.

Please post your bug number, just for the record.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

SIM ToolKit API
 
 
Q