Developer

Sandbox

Test mode loads the real checkout embed against your test plan, so the full flow — embed UI, declines, webhook → order.status = paid — runs end-to-end with no real charges. Toggle with WHOP_SANDBOX=true and NEXT_PUBLIC_WHOP_SANDBOX=true.

Mode
Live
Credentials loaded
  • API keyset
  • Company idset
  • Product idset
  • Webhook secretset
  • Readyyes
Test cards
4242 4242 4242 4242Succeeds — order becomes paid
4000 0000 0000 0002Declined at the issuer
4000 0000 0000 9995Insufficient funds
4100 0000 0000 0019Blocked for fraud

Any future expiry / 3-digit CVC works. These cards are accepted by the embed when test credentials are loaded.

End-to-end test flow
  1. Add a product to your cart, fill in customer details and submit. You'll land on /pay/<publicId>.
  2. The embed renders the test-mode checkout UI.
  3. Choose a test card, hit Pay. The provider's test webhook fires /api/whop/webhook and the order flips to paid.
  4. The page refreshes and shows the “Paid in full” receipt.
Partner API · test request

With PARTNER_API_KEYS set to partner_test_demo_change_me (the default in .env.example), run:

curl -X POST https://www.monogramhaus.online/api/v1/partner/orders \
  -H 'Authorization: Bearer partner_test_demo_change_me' \
  -H 'Content-Type: application/json' \
  -d '{
    "reference": "INV-TEST-001",
    "customer": {
      "name": "Test Customer",
      "email": "test@example.com",
      "address": {
        "line1": "1 Test St",
        "city": "Brooklyn",
        "region": "NY",
        "postalCode": "11201",
        "country": "US"
      }
    },
    "items": [{
      "productSlug": "monogram-tee",
      "variantSku": "tee-blk-m",
      "quantity": 1,
      "personalization": { "monogram": "T.C.", "thread": "Ivory" }
    }]
  }'

The response's payUrl is a live link on this site — open it, pay with a test card, and the order flips to paid.