Skip to main content
Payment gateways are how customers pay for a plan at checkout. You configure them in Admin → Finance → Payment Gateways. Every gateway is switched off after installation, and a customer only sees the ones you turn on.
The Finance menu, and with it Payment Gateways, appears only when SaaS Business is enabled. See SaaS overview.

Turn a gateway on

1

Open the gateway list

Go to Admin → Finance → Payment Gateways. Each gateway is a card with a status dot. Hover the dot to read Enabled or Disabled.
2

Open the gateway

Click the card. The settings page is called, for example, Stripe Settings.
3

Turn on Status

Under General, switch Status on. The description reads “When enabled, users can use Stripe for payments”, with the gateway’s own name.
4

Pick the Mode

Gateways that have a test environment show a Mode choice: Sandbox (sandbox mode for development) or Live (live mode for production). A gateway you have never saved opens on Live, so choose Sandbox first if you want to test.
5

Enter the keys

Fill in the fields under Keys. Live and sandbox keys are stored separately, and MagicPost uses the pair that matches the selected Mode.
6

Add the webhook

Copy the Webhook URL into the provider’s dashboard, then paste back any secret it gives you. Each gateway page lists the exact steps.
7

Save

Click Save. A confirmation such as “Stripe settings saved successfully.” appears.
Fields marked with a red asterisk can be saved empty, but checkout fails until the keys for the active Mode are filled in. Switching Mode applies immediately to every customer, so do not leave a gateway in Sandbox once you go live.

Supported gateways

“Prepaid and Lifetime” are the one-time plan types. “Monthly and Yearly” are the recurring plan types. You choose the type on the plan, see Subscription plans.
Flutterwave and Midtrans: MagicPost has no dedicated renewal handler for these two. See their pages for what is recorded when the provider charges a renewal.YooKassa: MagicPost saves the customer’s payment method but no scheduled task charges renewals.Bank transfer and Wallet: a Monthly or Yearly plan is granted for one period. The customer pays again when it ends.Coinbase Commerce: Coinbase has announced the closure of the Commerce portal after March 31, 2026. Read the warning on its page before you enable it.Wallet: this version has no way to add money to a customer’s wallet balance. Read its page before you enable it.
If no gateway is enabled, checkout shows “No payment methods are available right now.” and asks the customer to contact support.

Webhooks

A webhook is a message the provider sends to your site when a payment, renewal or cancellation happens. MagicPost uses them to record renewals and cancellations, and as a second path for first payments. Every webhook URL has the same shape and accepts POST requests only:
Replace stripe with the gateway name from the table below. The URL is also shown in the Webhook URL field of each gateway page, with a copy button.
  • The URL must be reachable from the internet without a login, a password prompt or a firewall rule that blocks the provider.
  • CSRF protection is switched off for every path under webhooks/. Each gateway checks its own signature instead.
  • Bank transfer and Wallet have no webhook.
Where a secret is optional, fill it in anyway. When the secret field is empty, those gateways accept the request without checking who sent it.

Return and cancel URLs

You never enter a return or cancel URL in a provider dashboard. MagicPost sends them with every payment. GATEWAY is the gateway name used in the webhook table, for example stripe.

Plans, currency and amounts

  • The currency is set on each plan (the Currency field), not once for the whole site. The provider account must be able to charge that currency.
  • Amounts are converted to the unit each provider expects. Stripe and Paddle send zero-decimal currencies such as JPY without multiplying by 100. Paystack and Razorpay always multiply by 100. Midtrans receives whole numbers.
  • Free trial days on a plan are passed to the provider by Stripe only. No other gateway delays the first charge.
  • Free plans never go through a gateway.

Plan sync

For Monthly and Yearly plans, most providers need a matching product or plan on their side. MagicPost creates it for you the first time someone buys the plan, so you do not copy plan IDs by hand. When you change a plan’s name, price, currency or type, MagicPost marks the provider copy as out of date. At the next purchase it creates a new price or plan and retires the old one where the provider allows it. Existing subscriptions are not modified. To sync ahead of time, run this from the project root:
--gateway accepts stripe, paypal, paystack, razorpay, mollie, flutterwave, paddle, yookassa, iyzico, midtrans, braintree or all. --plan limits the run to one plan ID. The command only processes active plans with a price above zero.

Cancelling a subscription

When a subscriber is cancelled, MagicPost always ends the subscription locally and returns the user to the base account group. For Monthly and Yearly plans it also tries to stop the recurring charge at the provider, but only Stripe and PayPal support this. For every other gateway the cancellation is local only, so also cancel the subscription in the provider’s dashboard. See Subscriptions and Orders and transactions for the admin side.

Troubleshooting

MagicPost writes gateway failures to storage/logs/laravel.log. The customer sees a short message, and the log has the provider’s reply. For a payment that succeeded at the provider but did not unlock a plan, see Billing problems.

Gateway guides

Stripe

Cards through Stripe Checkout.

PayPal

PayPal orders and billing plans.

Paystack

Hosted Paystack checkout.

Razorpay

Razorpay checkout window.

Mollie

Hosted Mollie checkout.

Flutterwave

Hosted Flutterwave checkout.

Paddle

Paddle Billing overlay.

YooKassa

Redirect to YooKassa.

Braintree

Braintree Drop-in.

Iyzico

Hosted iyzico pages.

Midtrans

Midtrans Snap popup.

Coinbase Commerce

Crypto, one-time plans only.

Bank transfer

Manual payment with approval.

Wallet

Pay from the account balance.