Skip to main content

Testing Transactions

The Solyd Simulator enables you to validate your end-to-end checkout experience, test multi-currency pricing, and verify entitlement grants in a safe sandbox environment without moving real money.

[1. Select Simulated Region] ➔ [2. Launch Simulate Checkout] ➔ [3. Enter Gateway Test Credentials] ➔ [4. Verify SETTLED_CONSENSUS]

Gateway Test Credentials Reference​

Use these standard sandbox credentials when the simulator redirects to your configured payment gateway:

Gateway RailTest Payment MethodCard / Phone NumberExpiry / CVVTest OTP / PINExpected Result
PaystackVisa / Mastercard Card4084 0841 0000 0000Future date / 408Any 4 digits / 123456SETTLED_CONSENSUS ✅
StripeInternational Card4242 •••• •••• 4242Future date / 123N/ASETTLED_CONSENSUS ✅
FlutterwavePan-African Card4444 •••• •••• 4444Future date / 12312345SETTLED_CONSENSUS ✅
M-PesaDaraja STK Push254708374149N/AAny 4 digits (Simulator)SETTLED_CONSENSUS ✅
MonnifyVirtual Bank TransferCopy test DVA accountN/AUse "Simulate Transfer"SETTLED_CONSENSUS ✅

Step-by-Step Simulator Walkthrough​

1. Open the Simulator​

  1. In the SolydFlow Console, open your project.
  2. In the top navigation, select Solyd Simulator.
  3. Set the Execution Mode to Test (Sandbox).

2. Choose a Simulated Location & Currency​

Select the country you want to test from the dropdown:

  • Nigeria (NGN): Loads NGN packages and routes to Paystack/Monnify.
  • Kenya (KES): Loads KES packages and routes to M-Pesa STK push.
  • United States (USD): Loads USD packages and routes to Stripe.

3. Click "Simulate Checkout"​

  1. Locate your desired package (e.g., pro_monthly_ngn).
  2. Click Simulate Checkout.
  3. Inspect the Routing Engine Log on the right side of the screen to confirm that Smart Routing picked your expected gateway:
    ROUTER DECISION: Smart Routing selected [PAYSTACK]
  4. The provider's test modal opens. Enter the test card details from the table above and complete the payment.

Post-Test Verification Checklist​

Once the payment completes, verify the revenue flow across three tabs in the Console:

┌───────────────────────────────────────┬────────────────────────────────────────────────────────┐
│ Verification Point │ What to Confirm in the Console │
├───────────────────────────────────────┼────────────────────────────────────────────────────────┤
│ **1. Transactions Ledger** │ Transaction state is **`SETTLED_CONSENSUS`**. │
├───────────────────────────────────────┼────────────────────────────────────────────────────────┤
│ **2. Customer Directory** │ Test user has **`activeEntitlements: { "pro_access": true }`**. │
├───────────────────────────────────────┼────────────────────────────────────────────────────────┤
│ **3. Inbound Gateway Webhooks** │ Inbound event logged HTTP `200 OK` with verified HMAC. │
└───────────────────────────────────────┴────────────────────────────────────────────────────────┘

Verifying in Your Application Code​

If you are running the test from your Flutter or Web app using your sf_pk_test_... key, confirm that the entitlement unlocked immediately in code:

lib/screens/test_screen.dart
Future<void> verifySandboxAccess() async {
final bool hasAccess = await SolydFlow.hasEntitlement("pro_access");
debugPrint("Sandbox Pro Access: $hasAccess"); // Output: true
}