# Paystack

> Connect Paystack — a key pair of one mode, the webhook URL you paste into your Paystack dashboard, currencies, and going live.

Source: https://support.estage.com/commerce-payments-paystack
Part of the ESTAGE Support help center (https://support.estage.com). Full knowledge base: https://support.estage.com/llms-full.txt

---

**Paystack** takes payments in **NGN, GHS, ZAR, KES, XOF and USD**. USD is open to Nigerian and
Kenyan Paystack accounts only. It works on order forms (one-off products, subscriptions and free
trials), paid meetings and the online store checkout.

Paystack doesn't need [Business Details](https://support.estage.com/project-settings-business-details) before it can be
offered on an order form.

## Connecting Paystack

1. In the Paystack dashboard, open **Settings → API Keys & Webhooks** and copy a **Public Key** and a
   **Secret Key** of the **same mode**: `pk_test_` + `sk_test_` while you test, `pk_live_` + `sk_live_`
   when you go live. A typo or a mixed pair is refused with *Invalid API Key provided*.
2. In Genesis, open **Settings → Payment Processing**. Click **Connect** on the Paystack card, paste
   both keys and click **Connect My Account**.
3. Click **Settings** on the Paystack card. It holds your keys and the **webhook** block:
   copy the URL, paste it into the same Paystack page — into **Test Webhook URL** for test keys or
   **Live Webhook URL** for live ones — save there, then click **I've added it**.
   Paystack has no way for us to register it for you.
4. Make a test purchase. The webhook status turns to **Webhook works** when Paystack's first event
   arrives (usually within seconds of paying).
5. In your **ESTAGE CRM**, add **Paystack** to the payment providers of each product it should sell. The
   currency menu then offers only what Paystack can charge in.

Right after you connect, the Settings window opens by itself with the webhook block. You can also
connect from your CRM: **Settings → Payments**, **Connect** on Paystack, then **Settings** on its
row for the webhook.

## Why the webhook matters

One-off purchases are recorded without it. Subscription **renewals**, **refunds**, and a purchase
whose buyer closed the tab right after paying are recorded only through the webhook. Until it's in
place, the Paystack card carries a notice — **Webhook not set up**, or **Webhook not confirmed**
after you've clicked **I've added it** but before the first event arrives.

## Things worth knowing

- **Switching to live keys?** Enter the live pair in the Paystack **Settings** and select **Save
  keys** — your products keep Paystack. Then paste the URL again, this time into **Live Webhook
  URL**. The status starts over until a live event arrives.
- **One Paystack account on several projects?** Paystack keeps one webhook URL per account. Paste the
  URL of just one of those projects; it serves all of them, and the others say so in their Settings.
- **Free trials** take a small card check (for example ZAR 1 or NGN 50) that is refunded at once; the
  first real charge comes when the trial ends.
- **What buyers see:** Paystack's checkout opens over your page. If their browser won't let it open
  there, they pay on Paystack's own checkout page and come straight back to your site.
- **Paid bookings aren't refunded automatically.** Cancelling one flags it **Refund by hand** in
  [Bookings](https://support.estage.com/crm-bookings#acting-on-a-booking); refund it in Paystack.

Related: [Payment Processing](https://support.estage.com/commerce-payments) · [What your buyers see](https://support.estage.com/order-forms-buyer-experience)
