Code examples in this page use the exact currency identifiers configured on each supported chain, such as
USDC.e on SKALE Base and eUSDC on BITE Sandbox. In your application UI, you can still present a normalized display label like USDC if that is clearer for users.Overview
The MPP SDK enables developers to integrate private, gasless payments into their applications on the SKALE Network. It provides support for:- Standard transfers on SKALE Base
- Gasless payments via EIP-3009 and EIP-2612 permits
- BITE encryption for confidential transaction amounts
- Confidential tokens for native privacy
Installation
Quick Start
Client-Side Usage
Server-Side Usage
MPP_SECRET is a server-only secret used by your MPPx backend to sign or verify payment requests. Generate a long random value for your application, store it in your server environment, and never expose it in client-side code or commit it to your repository.Supported Chains
| Chain | Network | Chain ID |
|---|---|---|
skale-base | SKALE Base Mainnet | 284351530983 |
skale-base-sepolia | SKALE Base Testnet | 2024883468 |
bite-sandbox | BITE Sandbox Testnet | 103698795 |
base | Base Mainnet | 8453 |
base-sepolia | Base Sepolia | 84532 |
API Reference
mpp.charge(options)
Creates a payment method for MPP integration.
Parameters:
chain: string | Chain– Chain identifier (string) or custom viemChainobjectcurrency: string | CurrencyConfig– Currency identifier or custom configurationextensions?: object– Optional extensions for gasless and privacy features
PaymentMethod – Configured payment method for MPP
Extensions
Gasless Payments
Enable gasless transactions using EIP-3009 or EIP-2612:Gasless payments allow users to pay without holding the native gas token (sFUEL/ETH). The transaction fees are deducted from the token being transferred.
BITE Encryption
Encrypt transaction amounts onchain:BITE encryption uses threshold encryption to hide transaction amounts while maintaining verifiability. Requires a BITE-enabled SKALE chain.
Confidential Tokens
Use native confidential tokens with built-in privacy:Confidential tokens are native tokens with built-in privacy features. Currently available on BITE Sandbox testnet with tokens like
eUSDC.Payment Strategies
The SDK supports various combinations of features:| Chain | Currency | Gasless | Encrypted | Confidential Token |
|---|---|---|---|---|
| skale-base | USDC.e | ✓ | Optional | No |
| bite-sandbox | eUSDC | ✓ | Always | Yes |
Feature details:
- Gasless: EIP-3009 transfer with authorization, eliminating gas fees
- Encrypted: Transaction “to” address and amounts are encrypted in the mempool until onchain execution, after which they become visible on the ledger
- Confidential Token: Native confidential tokens (e.g., eUSDC) provide fully shielded balances and transaction amounts that remain private even onchain
Custom Chains
You can use any viemChain object for custom chain configurations:
Best Practices
Choosing the Right Configuration
Select the simplest configuration that meets your privacy and UX requirements. Standard transfers are fastest and most cost-effective, while full privacy configurations provide maximum confidentiality.
Testing
Always test payment flows on testnet before mainnet deployment:- Use
skale-base-sepoliaorbite-sandboxfor testing - Verify gasless transactions work with your token contracts
- Test encrypted transaction decryption and retrieval
Security Considerations
Browser Compatibility
When using the SDK in browser environments, you may need to polyfill For Vite, add to your For Webpack 5, add to your
Buffer. Install the buffer package and configure your bundler:vite.config.ts:webpack.config.js:Resources
- GitHub: https://github.com/skalenetwork/mpp-sdk
- NPM: https://www.npmjs.com/package/@skalenetwork/mpp
- MPP Protocol: https://mpp.dev/
- Support: https://discord.gg/skale
