How to Collect Deposits in WHMCS (Before Starting Work)
WHMCS has no native deposit collection for custom projects. Learn the workarounds hosting providers use and how to collect upfront payments properly inside WHMCS.
MX Modules Team

A client approves a $6,000 server migration. You start provisioning hardware, allocating staff, blocking out your week. Two weeks in, the client goes silent. No deposit was collected. You just burned real time and money on a project with zero financial commitment from the other side.
WHMCS handles recurring billing well. Monthly hosting plans, domain renewals, SSL certificates. But when you need to collect a partial payment on a custom project before starting work, there is nothing. No deposit field on invoices. No "collect X% now, invoice the rest later" option. No way to tie a partial payment to a scope the client has formally accepted.
Why Deposits Matter for Custom Hosting Projects
Standard hosting products don't need deposits. The client buys a plan, pays monthly, done. Deposits matter when the deal is custom:
| Scenario | Typical Value | Why a Deposit Protects You |
|---|---|---|
| Server migration | $2,000 - $15,000 | Hours of labor before any deliverable |
| Managed services setup | $1,000 - $5,000 | Infrastructure provisioning costs |
| Custom development | $3,000 - $20,000 | Developer time is your biggest cost |
| White-label reseller build | $2,000 - $8,000 | Configuration across multiple services |
| Dedicated server deployment | $1,500 - $10,000 | Hardware commitment and rack space |
Without a deposit, you carry all the risk. The client can walk away at any point, and your only option is an awkward email about work already done.
When someone puts $2,000 down on a $6,000 project, the dynamic changes. They stop ghosting. They respond to emails faster. Scope disputes almost disappear because both sides have skin in the game.
What WHMCS Offers Natively (Not Much)
WHMCS invoicing is built for product billing, not project billing. Here is what you can do out of the box:
Create a manual invoice for the deposit amount. Go to the client profile, create an invoice, add a line item for "Deposit - Server Migration," and set the amount to $2,000. Send it.
That works for one invoice. But it creates several problems:
- The deposit invoice has no connection to the project scope
- There is no record of what the client agreed to pay in total
- The remaining $4,000 needs a separate invoice created manually later
- No signature, no formal acceptance, no audit trail
- If the client disputes "I never agreed to $6,000 total," you have nothing to show
Use WHMCS quotes. WHMCS has a quoting system that can convert to invoices. But quotes invoice the full amount on acceptance. There is no "invoice 33% now and the rest later" option. If you send a $6,000 quote, the client gets a $6,000 invoice.
Use WHMCS credit. Some providers add a credit balance to the client account and apply it to future invoices. This is technically possible but confusing for both sides. The client sees a credit they didn't ask for, and the deposit isn't tied to any specific project.
None of these are real deposit collection. They are workarounds, and they usually create more work than they save.
Common Workarounds (and Why They Break)
Workaround 1: Two separate invoices
Create Invoice A for the deposit ($2,000) and Invoice B for the balance ($4,000) with a future due date.
Why it breaks:
- Invoice B exists before the work is done, which looks wrong to clients
- If the scope changes, you have to void and recreate Invoice B
- No link between the two invoices. They appear as unrelated charges
- The client might pay Invoice B early (or dispute it before work is complete)
Workaround 2: Partial payment on a full invoice
Create one $6,000 invoice and ask the client to "just pay $2,000 for now."
Why it breaks:
- WHMCS shows the invoice as unpaid until the full $6,000 is collected
- The client sees "$4,000 remaining" on every login, which feels like they owe money they haven't been billed for yet
- Overdue reminders trigger on the full amount
- No clear separation between "deposit collected" and "balance due after delivery"
Workaround 3: Email agreement + manual invoice
Send a PDF scope document by email, wait for a reply saying "approved," then create the deposit invoice.
Why it breaks:
- An email reply is not a signature. It is weak in disputes.
- No tracking of whether the client actually read the scope
- Manual process for every project. Doesn't scale past 3-4 deals per month.
- The scope document and the invoice live in different systems
Workaround 4: External tools (PandaDoc, Stripe links)
Use PandaDoc for the proposal and Stripe for the deposit payment.
Why it breaks:
- Two external systems plus WHMCS. Three places to check for one project.
- The deposit payment in Stripe has no connection to the WHMCS client record
- PandaDoc costs $49/user/month on top of WHMCS
- You still need to manually create the WHMCS invoice and order after the deposit clears
These all fail for the same reason: WHMCS treats every payment as a standalone invoice. There is no concept of "this payment is a deposit on a larger project that the client agreed to."
How MX Proposals Handles Deposits in WHMCS
MX Proposals adds deposit collection to WHMCS. The client reviews the scope, signs the proposal, and pays the deposit in one step.
Setting Up a Deposit
When you create a proposal in MX Proposals, you configure the deposit on the same screen as the line items:
- Add your line items (services, setup fees, migration work)
- Set the deposit type: percentage or fixed amount
- Enter the value (e.g., 33% or $2,000)
- MX Proposals calculates the deposit based on selected items automatically
If the proposal has optional items that the client can toggle on or off, the deposit recalculates in real time based on their selections. A 33% deposit on a $6,000 proposal is $1,980. If the client deselects a $1,000 optional item, the deposit drops to $1,650. No manual recalculation needed.
What the Client Sees
The client opens the proposal link and sees:
- The full scope with line items, quantities, and pricing
- Any optional items they can select or deselect
- The deposit amount clearly labeled: "Deposit due on acceptance: $1,980"
- A signature pad to formally accept the terms
- A payment form for the deposit amount only (not the full total)
The client signs and pays in one action. No confusion about how much is due today versus the total project cost.
What Happens After the Deposit Is Paid
Once the deposit clears, several things happen without you touching anything:
- WHMCS invoice created with itemized line items and tax
- Payment recorded against the invoice
- WHMCS order created with the products/services from the proposal
- Proposal status updates to "Paid"
- Webhooks fire (Pro plan) to notify Slack, n8n, or your CRM
You open WHMCS and the order is there, the invoice is paid, the client record is linked. Done.
Collecting the Remaining Balance
After the deposit, you have options for the remaining amount:
Manual invoice: Create a WHMCS invoice for the balance when the work is complete. Simple, works for any project size.
Payment plans (Pro): Split the remaining balance into scheduled installments with custom amounts and dates. The client sees a payment progress bar on their proposal page. For details on structuring installments, see how to offer payment plans in WHMCS.
What's Included with Deposits
MX Proposals ($25/month) includes deposit collection along with all other features. Start with a 15-day free trial.
| Feature | Included |
|---|---|
| Deposit collection (% or fixed) | Yes |
| Digital signature on acceptance | Yes |
| Automatic WHMCS invoice creation | Yes |
| Automatic WHMCS order creation | Yes |
| Payment plans (installments) | Yes |
| Webhooks for automation | Yes |
| View tracking and activity log | Yes |
| Unlimited proposals | Yes |
How Much Should You Charge as a Deposit?
No universal rule, but these ranges work for most hosting projects:
| Project Value | Recommended Deposit | Reasoning |
|---|---|---|
| Under $1,000 | 50-100% | Small projects. Full payment or half upfront is standard. |
| $1,000 - $3,000 | 40-50% | Covers your initial setup costs. |
| $3,000 - $8,000 | 30-40% | Enough to confirm commitment without sticker shock. |
| $8,000 - $20,000 | 25-33% | Larger projects need smaller percentages to keep the deposit accessible. |
| Over $20,000 | 20-25% | Enterprise deals. Consider milestone-based payments instead. |
The minimum deposit should cover your out-of-pocket costs. If a $5,000 project requires $1,500 in server hardware and $500 in third-party licenses before you start, your deposit should be at least $2,000. If the client disappears after paying the deposit, you should not be in the red.
Frequently Asked Questions
Can I collect a deposit through WHMCS without a proposal tool?
You can. Create a manual invoice for the deposit amount and send it. But the invoice has no connection to the project scope. No signature, no formal acceptance, no record of what was agreed. For a one-off $300 job, a manual invoice is fine. Once you are doing this for multiple clients per month or projects over $1,000, the manual approach starts costing you time and creating disputes.
What payment gateways work for deposit collection?
MX Proposals uses whatever payment gateways you have configured in WHMCS. PayPal, Stripe, bank transfer, credit card. If the client can pay a regular WHMCS invoice with it, they can pay a deposit with it. You can also restrict which gateways are available per proposal.
Is the deposit refundable if the project is cancelled?
That depends on your business terms. MX Proposals collects the payment and records it. Your refund policy should be stated in the proposal's terms and conditions section, which the client must accept before signing. Common approaches: non-refundable deposits (most hosting providers), or refundable minus work completed.
What if the client wants to negotiate the deposit amount?
Update the deposit percentage or fixed amount on the proposal before sending. If the proposal has already been sent, you can still edit it and resend (the status reverts to "sent"). Once the client signs and pays, the terms are locked.
Can I collect a deposit from a new client who is not in WHMCS yet?
Yes. MX Proposals can create a new WHMCS client record when someone accepts a proposal. The client fills in their information on the proposal page, signs, and pays. MX Proposals creates the client, invoice, and order in WHMCS automatically.
How does this differ from WHMCS payment plans for products?
WHMCS recurring billing is for ongoing product subscriptions (monthly hosting, annual domains). Deposit collection is for one-time custom projects where you need partial payment upfront before starting work. They solve different problems. You would use WHMCS billing for the client's hosting plan and MX Proposals deposits for the migration project that sets up that hosting.
Related: Learn how to offer payment plans on large projects, see how to send proposals from WHMCS with the complete workflow, or understand why WHMCS quotes are not enough for custom projects. For installation steps, visit the MX Proposals documentation.
MCP Server
AI Integration for WHMCS
Connect AI to your WHMCS. Query clients, invoices, and tickets using natural language. Cancel anytime.
Documentation
Did you find this helpful?
Join other WHMCS professionals and get our latest guides and AI tips directly in your inbox.
MX Modules Team
We run a hosting business on WHMCS. These modules are the tools we built to solve our own problems, and now we share them with other providers.


