---
title: Payment gateways
description: Configure PayPal & Manual (free) and the eight Pro gateways — Stripe, Square, Authorize.Net, Mollie, Bank Transfer, Cheque, Cash, Moneris. Test mode, webhooks, and currencies.
---
Pro
Easy Invoice Free ships PayPal & Manual. Easy Invoice Pro adds Stripe, Square, Authorize.Net, Mollie, Bank Transfer, Cheque, Cash, and Moneris — see all Pro gateways.
View pricing & buy →
# Payment gateways
Configure where the **Pay now** button on the public invoice sends the client. Each gateway has its own credentials, sandbox toggle, and (where applicable) webhook URL.
## Where to find them
Open Easy Invoice → Settings → Payment. Each enabled gateway becomes a row on the public invoice page; client picks one.
## PayPal Standard (Free)
The simplest gateway: paste your PayPal email, set sandbox vs live, and you're done.
| Field | Note |
| --- | --- |
| **PayPal email** | The address that receives money. |
| **Sandbox mode** | Toggle for testing — uses sandbox.paypal.com. |
| **IPN listener URL** | PayPal IPN posts back here when a payment clears. Easy Invoice handles this on `admin-post.php` automatically. |
> PayPal Standard uses **IPN** (Instant Payment Notification), not REST webhooks. Make sure your hosting allows incoming POSTs from `*.paypal.com`.
## Manual (Free)
For "I'll pay you offline" workflows — wire transfer, in-person cash, anything you reconcile manually.
| Field | Note |
| --- | --- |
| **Title** | Label shown to the client (default: _Manual Payment_). |
| **Description** | Instructions ("Wire to account 12345…"). |
| **Order status after submission** | Defaults to `pending`. |
## Stripe PRO
Modern card, Apple Pay, Google Pay, Link.
### Connect
- From Stripe dashboard → Developers → API keys: copy Publishable + Secret.
- Open Easy Invoice → Settings → Payment → Stripe.
- Toggle Test mode if you're using test keys.
- Paste the keys, save.
### Webhook
Add a webhook in Stripe dashboard:
- **Endpoint URL**: `https://yoursite.com/wp-admin/admin-ajax.php?action=easy_invoice_stripe_webhook`
- **Events**: `payment_intent.succeeded`, `payment_intent.payment_failed`, `charge.refunded`.
- Copy the **Signing secret** back into Stripe settings.
> Stripe is the cleanest gateway for digital businesses — see [PCI / SCA notes in the FAQ](/faqs#stripe-sca-and-3d-secure).
## Square PRO
US / Canada / UK / AU / JP card processing with in-person reader support.
| Field | Source |
| --- | --- |
| **Application ID** | Square dashboard → Apps → My app → Credentials. |
| **Access token** | same. |
| **Location ID** | Square dashboard → Locations. |
| **Webhook URL** | `admin-ajax.php?action=easy_invoice_square_webhook` |
> Square has a 15-minute reconcile cron (`easy_invoice_check_pending_square_payments`) for pending charges that webhook missed.
## Authorize.Net PRO
US-focused. Hosted Form (CIM) supported.
| Field | Source |
| --- | --- |
| **API login ID** | Authorize.Net merchant account. |
| **Transaction key** | same. |
| **Test mode** | Toggle for sandbox. |
| **Relay response URL** | `admin-ajax.php?action=easy_invoice_authorizenet_response` |
## Mollie PRO
Europe-friendly: SEPA, iDEAL, Bancontact, Sofort, plus card.
| Field | Source |
| --- | --- |
| **API key** | Mollie dashboard → Developers. |
| **Test API key** | toggle test mode. |
| **Webhook** | `admin-ajax.php?action=easy_invoice_mollie_webhook` |
## Bank Transfer PRO
Show your bank details on the invoice. Client wires the money. You mark the Payment as completed once it lands.
| Field | What it is |
| --- | --- |
| **Account name** | Beneficiary on the wire. |
| **Account number / IBAN** | Numbers only or IBAN. |
| **Swift / BIC** | International ID. |
| **Bank name + branch** | Printed below the account info. |
| **Instructions** | Free-text notes ("use invoice number as reference"). |
When client picks Bank Transfer at checkout, the invoice flips to `pending-bank`. Reconcile manually via Payments.
## Cheque PRO
Mailed cheques. Same flow as Bank Transfer (`pending-cheque` status).
| Field | What it is |
| --- | --- |
| **Mail to** | Address shown to the client. |
| **Make cheque payable to** | Name on the cheque. |
| **Instructions** | Anything else (drop-off times, etc.). |
## Cash PRO
In-person cash. Client picks "Cash"; invoice flips to `pending`. Mark completed once collected.
## Moneris PRO
Canadian-focused processor. Configure with **Store ID** + **API token**.
> Note: Moneris files exist in the Pro plugin tree. If you can't see the gateway after activation, see [Troubleshooting → Moneris missing from settings](/troubleshooting#moneris-not-showing).
## Currencies & gateways
| Gateway | Supported currencies |
| --- | --- |
| PayPal | All major (USD, EUR, GBP, AUD, JPY, INR, etc.) |
| Stripe | 130+ currencies — see [stripe.com/currencies](https://stripe.com/global). |
| Square | USD, CAD, GBP, AUD, JPY (single-currency per Square account). |
| Authorize.Net | Single currency per merchant account. |
| Mollie | EUR + many more for SEPA / iDEAL. |
| Bank / Cheque / Cash | Any (you set the displayed currency). |
| Moneris | CAD, USD. |
> If your invoice currency doesn't match the gateway's supported list, the client sees an error at the gateway redirect. Switch invoice currency before sending.
## Test mode best practice
For each gateway, toggle test mode and run **at least one full payment** before going live. Use:
- Stripe test card `4242 4242 4242 4242` (any future date / CVC).
- PayPal sandbox accounts (one buyer + one merchant).
- Authorize.Net test card `4242…` and sandbox login.
Then disable test mode and re-test with a small real payment ($1).
## Per-invoice gateway override
If a specific client should only see Bank Transfer, set their default gateway in their user profile (Pro). Otherwise the invoice shows every enabled gateway.
## Where to go next
- 🧾 [Payments](/payments) — Payment records, manual entries, refunds.
- ✉️ [Email & notifications](/email-settings) — receipt + reminder emails.
- 💎 [Pro features overview](/third-party-integrations) — every gateway + Pro module.
- 📋 [All Pro features](/features) — flat catalog.