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.
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.
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 acceptsPOST requests only:
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.
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 tostorage/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.

