TinyShip
TinyShip
  • Docs
  • Updates
    ← Back to Updates
    May 31, 2026Release

    TinyShip 2.3.0 - DodoPayments Global Payment Integration

    TinyShip 2.3.0 Released

    This release focuses on expanding TinyShip's payment capabilities by officially adding the sixth payment provider: DodoPayments. It uses a Merchant of Record model, so developers do not need to handle global taxes, compliance, and refunds by themselves. Connect once, then start collecting payments for global markets.

    With this update, TinyShip's payment matrix now covers both domestic platforms, WeChat Pay and Alipay, and international platforms, Stripe, PayPal, Creem, and DodoPayments. It supports subscriptions, one-time payments, and credits across the full business model surface.

    Core Additions

    End-to-End DodoPayments Integration: Added the dodo payment provider with Hosted Checkout, Standard Webhooks with HMAC SHA256 signature verification, and Customer Portal support, unified across all three frameworks

    Complete Support for Three Payment Modes: Recurring subscriptions, one-time payments, and credits are all implemented for DodoPayments and validated through E2E tests

    Database Schema Extensions: Added dodoCustomerId to the users table and dodoSubscriptionId to the subscriptions table, with Drizzle migrations synced for both PG and SQLite dialects

    Configuration and Engineering Improvements

    Full Webhook Event Coverage: Handles payment.succeeded, payment.failed, and 7 subscription lifecycle events: active / renewed / cancelled / expired / on_hold / updated / plan_changed

    Admin Dashboard Adaptation: The admin subscription list now supports filtering by the Dodo provider and searching by dodoSubscriptionId, with subscription sources correctly labeled as Dodo instead of falling back to other types

    Payment Success Page Without Client Verification: DodoPayments uses Webhooks as the source of truth, so /payment-success?provider=dodo displays success directly without extra client-side verification

    Customer Portal Button: Dashboard subscription cards show a "Manage Subscription" button for Dodo subscribers, linking to Dodo's built-in customer portal

    Documentation and Configuration

    New Dodo Chapter in User Guide: docs/user-guide/payment/dodo.md covers the application flow, environment variables, test mode, Webhook configuration, plan examples, and important notes

    Payment Testing Guide Updated: Added Dodo test card numbers, including 4242..., tunneling setup, and local Webhook debugging instructions

    Environment Variables Completed: env.example now includes DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY, and DODO_PAYMENTS_TEST_MODE

    Testing and Stability

    Full E2E Coverage: Added 537 lines of Playwright tests covering subscription payments, one-time payments, and credits, including Stripe Elements iframe card input and multilingual checkout pages

    Three Frameworks × Two Databases Validation: Completed 6 rounds of Dodo-specific testing across Next.js / Nuxt / TanStack Start with PostgreSQL / SQLite, passing 30/30 tests

    Full Regression Validation: Completed final full E2E runs across all three frameworks with PostgreSQL, passing 330/330 tests and confirming no regression