JCPay· Activation fee

Activation fee

JCPay charges a one-time activation fee per merchant. It's an integration fee — paid once, gates your account going live, and auto-issues your API credentials on success.

Flow at a glance

  1. Signup — you create an account at /signup. A pending activation record is created automatically.
  2. Pay — on the dashboard, click Pay ₱X to activate. You're redirected to the provider checkout.
  3. Provider webhook — when payment succeeds, the provider notifies JCPay.
  4. Auto-activate — your merchant record flips to active, and both pairs of keys (pk_test/sk_test and pk_live/sk_live) are generated.
  5. Credentials — returned once on the /activation/return page. Copy them immediately.

Configuration

The platform admin configures the fee in /admin/fees:

  • Amount — default ₱999.00
  • Currency — default PHP; configurable
  • Method — default gcash_qr; any method a configured provider supports
  • Required — toggle off to allow admin-approved accounts without a fee payment

Admin waive

The admin can waive the fee for a specific merchant (e.g., an enterprise partner) from /admin/merchantsWaive fee & activate. The merchant is activated immediately and keys are shown once to the admin to hand off.

Internal API

// Start a payment (merchant session required)
POST /wapi/activation/start
→ { checkout_url, amount, currency, method, status }

// Poll the status
GET /wapi/activation/status
→ {
    activation_required, fee, merchant_status, paid_at,
    activation: { id, status, checkout_url, ... },
    credentials: { test, live } | null   // null until freshly activated
  }

Webhook-free activation

Activation does not ride the merchant's webhook endpoints. It's a single synchronous state machine on merchant_activations; the only external dependency is the provider's payment callback to /v1/webhooks/provider?kind=activation, which our orchestrator routes internally to flip the merchant to active.