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
- Signup — you create an account at
/signup. A pending activation record is created automatically. - Pay — on the dashboard, click Pay ₱X to activate. You're redirected to the provider checkout.
- Provider webhook — when payment succeeds, the provider notifies JCPay.
- Auto-activate — your merchant record flips to
active, and both pairs of keys (pk_test/sk_testandpk_live/sk_live) are generated. - Credentials — returned once on the
/activation/returnpage. 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/merchants → Waive 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.