Changelog
Release history and notable changes for SuiOutKit.
All notable changes to SuiOutKit are documented here. This format is based on Keep a Changelog.
[1.4.1] - 2026-07-28
Fixed
- Walrus upload race condition:
verifyCryptoPaymentTxandverifyFiatSettlementTxswitched fromgetTransactiontowaitForTransactionto eliminate the fullnode indexing race. - Deterministic blob IDs:
prepareInvoice()signs the invoice once and returns thesignedPayload, stored in Redis ascryptoWalrusSignedPayloadand reused during upload so the blob ID is always deterministic. - Non-blocking receipt pipeline:
prepareInvoice()is now encode-only in both SDK and publisher modes (~1s). Receipt uploads run after PTB confirmation via a Redis-backed queue (walrus-queue.ts) and never block the checkout response. - OPay waiting panel text now updates to “Payment received. Settling on-chain…” once the backend detects payment progress (postMessage handler + polling fallback for any non-
PENDING/EXPIREDstatus).
Changed
- SDK payment status steps reordered: Payment received → Webhook confirmed → Settled on-chain → Receipt uploaded.
- Removed dead
BANK_CONFIRMEDbadge state from SDK status types and badge UI. WALRUS_OPERATOR_PRIVATE_KEYnow required in all upload modes (needed byprepareInvoice()encoding).
[1.0.0] - 2026-07-25
Added
Multi-currency checkout (40+ fiat currencies)
- Support for 40+ fiat currencies with locale-aware formatting.
- IP-based geolocation for automatic currency detection (
ENABLE_GEO_DETECTION). - Currency resolution at session creation with
resolvedCurrencyandcurrencySymbol. formatCurrency()helper usesIntl.NumberFormatfor correct symbol and separator display.
Settlement tokens
settlementTokenoption oninitCheckout()- accepts a string or array of strings.- Per-currency settlement token defaults (e.g. USDC for USD merchants, SUI or USDC for NGN).
- Network-aware coin configuration:
SUPPORTED_COINS_TESTNET/SUPPORTED_COINS_MAINNET. CoinCategoryfield on each coin:native,stablecoin,utility,defi.- Token selector in the modal when multiple settlement tokens are offered.
Cross-region payments
- USD-settled merchants can accept NGN from Nigerian customers via Flutterwave local rails.
- “Pay in NGN →” label in the modal for cross-region payment methods.
- Cross-region support for GHS and KES customer currencies.
USSD payments
- USSD bank payment method via Flutterwave (NGN only).
- 10 Nigerian bank icons in
sdk/assets/banks/: Access, FCMB, First Bank, GTBank, Sterling, UBA, Union, VFD, Wema, Zenith. - Bank selection and USSD code display in the checkout modal.
Treasury management
- Treasury CLI commands:
balance,wallet,deposit,withdraw. walletcommand usesgetBalance()for accurate total balances across all coin objects.- Auto-merging of fragmented coin objects during deposit.
- Network-aware suiscan links in CLI output.
UI/UX redesign
- Blue accent color (
#4E75F8) replacing gold across all modals and demos. - Compact QR panel for outPay (220px frame, reduced padding).
- Bold typography: title uppercase 20px/700, amounts 42px/700 (36px mobile).
- Visibility audit: all text bumped to meet WCAG AA contrast ratios.
- “outPay Mobile” renamed to “outPay” with dynamic token name in QR subtitle.
- Demo pages restyled: dark blue-gray background (
#1e293b), blue buttons.
CoinGecko FX
- USD fallback conversion for coins with limited fiat price support.
- FX service always requests USD from CoinGecko, converts to target fiat via live cross-rate.
- Debug logging for empty CoinGecko responses and fallback conversions.
Demo files
demo/demo.html- NGN checkout (single currency)demo/demo(local).html- NGN checkout (local backend)demo/demo(multi-currency).html- 40+ currencies with per-currency settlement tokensdemo/demo(multi-currency(local)).html- multi-currency (local backend)
Initial SuiOutKit features
- Initial release with SUI-only settlement.
- Flutterwave bank transfer and OPay payment methods.
- Stripe card payments.
- Sui wallet and outPay crypto payments.
- On-chain settlement via Payment Kit PTBs.
SuiOutKitReceiptminting on settlement.- Walrus invoice storage.
- Redis session store.
- Checkout modal with payment method selection.
- SSE payment status streaming.
- Developer documentation and API reference.
Fixed
- CoinGecko IDs corrected for: WAL (
walrus-2), CETUS (cetus-protocol), SuiNS (suins-token), eSUID (esui-dollar), USDSui (usdsui). - All fiat currencies standardized to
decimals: 2for consistent display. formatCurrency()uses currency’sdecimalssetting from config.
Changed
settlementTokenon SDK config type changed fromstringtostring | string[].- Backend normalizes
settlementTokentostring[]vianormalizeSettlementTokens(). getCoinConfig()resolves symbol to full coin type before treasury check.roundToCurrencyDecimals()uses currency’sdecimalssetting.- Treasury CLI outputs JSON for single-coin insufficient scenarios (deposit logic auto-merges).
Dependencies
node-fetchremoved from backend FX service (uses Node built-infetch).
For the full commit history, see the GitHub repository.