LifterLMS Manual Payment Gateway: Bank Transfer and Invoices

Use the LifterLMS manual payment gateway for bank transfers, cheques and invoiced customers: how to set it up, what students see, how to approve an order, and how manual recurring payments behave.

  • Add as a preferred source on Google
Illustration for “LifterLMS Manual Payment Gateway: Bank Transfer and Invoices”

Not every buyer pays by card. Companies want an invoice, public bodies pay by bank transfer, and some markets still run on cheques or local transfers that no gateway supports. LifterLMS handles all of these with its built-in manual payment gateway, at no extra cost.

This tutorial shows how to set up LifterLMS manual payment for offline methods, what the student sees at checkout, how you approve an order once the money arrives, and how manual payments behave on subscriptions and payment plans. It also covers a small code snippet for offering bank transfer only on selected plans.

It is for course sellers who already have access plans set up. If you have not configured checkout yet, start with our LifterLMS checkout guide.

What the LifterLMS manual payment gateway is for

The manual gateway is part of core LifterLMS. In the gateway table under LifterLMS > Settings > Checkout it is listed as Manual, described as "Collect manual or offline payments. Also handles any free orders during checkout."

It does not move any money. It creates an order, tells the student how to pay, and waits for you to confirm the payment arrived. That makes it suitable for:

  • Bank transfers and local payment methods.
  • Company purchases paid against an invoice or purchase order.
  • Cheques, cash at an in-person event, or payment collected through another system.
  • Internal training where no money changes hands but you still want an order record.

It is not suitable for high-volume, low-price courses. Every paid order needs a person to check a bank statement and approve it, and the student waits until you do.

The second half of that description matters too. LifterLMS uses the manual gateway behind the scenes to process orders that cost nothing at checkout, such as a free trial or a 100% coupon, even when you have not enabled it. You do not need to enable it for free courses.

Enable it and write payment instructions

  1. Go to LifterLMS > Settings > Checkout and open the Manual section.
  2. Under Enable / Disable, tick Enable Manual. (The setup wizard's Enable Offline Payments checkbox sets the same option.)
  3. Change the Title from "Manual" to something buyers understand, such as "Bank transfer" or "Pay by invoice".
  4. Replace the Description, which defaults to "Pay manually via check", with one line about the method.
  5. Fill in Payment Instructions with everything the buyer needs to pay.
  6. Save.

Good payment instructions answer every question the buyer would otherwise email you about:

  • Account name, bank, account number or IBAN, sort code or BIC.
  • The reference to use, ideally the order number, so you can match the payment.
  • How long transfers usually take, and when access starts.
  • Who to contact for a formal invoice or purchase order.

The instructions are shown to the buyer on their order page while the order is waiting for payment, so they can come back and find them later.

What the student sees

  1. At checkout, the student picks your manual method from the list of payment options and clicks the buy button.
  2. LifterLMS creates the order with the status Pending Payment and takes the student to the order's page in their dashboard, which shows your Payment Instructions.
  3. The Gateway: Manual - Payment Due notification fires. By default it shows the student an on-site popup and sends them an email.
  4. The student has an account but is not enrolled yet. The course stays locked until you approve the order.

Set expectations clearly on the checkout page and in the email. "Access starts within one working day of your payment arriving" prevents most "I paid, where is my course?" messages.

One default to change: the Payment Due email goes to the student only. Its custom subscriber option is off, so nobody on your side is told that a manual order was placed. Open the notification under LifterLMS > Settings > Notifications, enable the custom recipient and add your accounts address.

Approve a manual order when payment arrives

There are two ways to approve an order. Recording the payment is the better one.

  1. In the WordPress admin, open the Orders menu and find the pending order.
  2. In the Transactions box, click Record a Manual Payment.
  3. Enter the Payment Amount. Optionally add a Payment Source (for example "Bank transfer"), a Payment Transaction ID (your bank reference) and a Payment Note.
  4. Click Record Payment.

A successful transaction moves the order to Completed for a one-time plan or Active for a recurring plan. That status change enrolls the student, and the purchase receipt is sent if that notification is on. Because a transaction exists, the payment also shows up correctly in revenue reporting.

Option 2: change the status

You can instead set the order status directly with Update Order Status in the order's action box and save. Moving it to Completed or Active also enrolls the student. The drawback is that no transaction is recorded, so your sales figures will not include it. Use this for zero-value or internal orders where there is no payment to record.

If the buyer never pays

Pending orders do not cancel themselves. Review them weekly. The LifterLMS orders documentation describes each status if you are unsure which to use. Send a reminder, and if the buyer has gone quiet, set the order to Cancelled so your order list stays clean.

Manual payments on subscriptions and payment plans

The manual gateway supports recurring plans, but every instalment is manual too. Here is what happens on each due date:

  1. LifterLMS moves the order to On Hold.
  2. Putting an order on hold removes the student's enrollment in the course or membership until it is paid.
  3. The Payment Due notification is sent again.
  4. When the money arrives, you record a manual payment on the same order. The order returns to Active, the student regains access, and LifterLMS schedules the next due date.

For a short payment plan, for example three monthly instalments from a company client, this is manageable. For an open-ended monthly membership, it means a monthly lock-out for every subscriber who pays a day late, and a monthly admin task for you. In that case use a card gateway; see our guide to payment plans and free trials for structures that fit.

If you must run manual subscriptions, add the payment details and due date to your payment reminder emails, and consider giving trusted clients a separate plan with longer billing periods so there are fewer due dates.

Refunds on manual orders

Because no gateway took the money, no gateway can return it. On the order's Transactions box, use Refund Manually, enter the amount and an optional note, and confirm. LifterLMS records the refund, and the tooltip on the button reminds you that you need to send the money back yourself. LifterLMS covers partial refunds in its guide to refunds in LifterLMS. A refunded order removes the student's enrollment by default.

Offer bank transfer only on selected plans

An enabled manual gateway appears on every paid plan. If you want bank transfer only for, say, a corporate package, you can limit it with the core llms_can_gateway_process_access_plan filter in a small custom plugin:

<?php
/**
 * Plugin Name: LLMSX Manual Gateway Limits
 */

add_filter( 'llms_can_gateway_process_access_plan', 'llmsx_limit_manual_gateway', 10, 4 );
function llmsx_limit_manual_gateway( $can_process, $plan, $order, $gateway_id ) {

	if ( 'manual' !== $gateway_id || ! $can_process || ! $plan ) {
		return $can_process;
	}

	// Never block free plans: core uses the manual gateway to process them.
	if ( ! $plan->requires_payment() ) {
		return $can_process;
	}

	// Access plan IDs that may be paid by bank transfer.
	$allowed_plan_ids = array( 123, 456 );

	return in_array( absint( $plan->get( 'id' ) ), $allowed_plan_ids, true );
}

Replace the IDs with your own access plan IDs. One caveat: core also uses the manual gateway when a 100% coupon makes a paid plan free at checkout, and this snippet does not see the coupon, so test any full-discount coupons on plans outside the list. For more on extending core this way, see how to customize LifterLMS without breaking updates.

Common mistakes

  • Leaving the default title and description. "Manual" and "Pay manually via check" confuse buyers outside the US.
  • No admin alert. Orders sit pending for days because nobody knew they existed.
  • Approving by status change instead of recording payment. Revenue reports come out short.
  • Manual subscriptions for a large membership. The monthly on-hold cycle creates support work and churn.
  • Enabling it by accident in the wizard. Buyers choose bank transfer, never pay, and wonder why they have no access.

Frequently asked questions

Is the manual payment gateway free?

Yes. It is part of core LifterLMS and needs no add-on.

Does a student get access before paying?

No. The order stays Pending Payment and the student is not enrolled until you record the payment or complete the order.

Can I use the manual gateway alongside Stripe or PayPal?

Yes. Enable each gateway on the Checkout tab and buyers choose at checkout. Drag the rows in the gateway table to set the order.

Can I enroll a student without any order at all?

Yes, an administrator can enroll students directly from the course's student management screen. Use an order instead when you want a financial record of the sale.

Next steps

Enable the gateway, rename it, write clear instructions, add yourself as a recipient of the Payment Due email, and place a test order to see exactly what your buyer sees. Then record a payment on it and check the enrollment.

If your business invoices companies at scale, with purchase orders, seat counts and tax documents, the manual gateway is usually the starting point rather than the whole answer. Our LifterLMS customization team builds invoicing and approval workflows on top of it. Tell us how your customers pay.

Add LifterLMS Expert to your preferred sources

Add lifterlmsexpert as a preferred source on Google, or open this article in your AI assistant to use it as a source.

  • Add as a preferred source on Google
Free consultation

Prefer expert help over DIY?

Skip the trial and error. Get specialist LifterLMS help and ship faster.

Talk to a LifterLMS Expert Explore our services

Replies within one business day