GoHighLevel Payments and Invoices: Collect Money Without the Manual Chase

GoHighLevel Payments and Invoices: collect money without the manual chase

Payment collection breaks down in predictable ways. Someone forgets to send the invoice. The invoice sits in an inbox. The client says they never got it. You send a reminder too early and look pushy, or too late and the client has already spent the budget elsewhere. Manual follow-up feels awkward, so it gets delayed. Before you know it, thirty days have passed and you are chasing money that should have cleared weeks ago.

HighLevel Payments and Invoices, connected to Stripe, give you a way to automate the entire cycle from invoice creation to payment confirmation to overdue follow-up. You can fire invoices from workflow actions when opportunities close, appointments complete, or tags apply. You can branch follow-ups based on invoice status: sent, paid, overdue, partially paid. You can record manual payments so contacts exit the chase sequence. You can choose SMS or email channels without spamming anyone at 2am. And you can tag contacts to prevent duplicate invoices from landing in the same inbox twice.

This guide walks through the practical setup, workflow triggers, common failure modes, and maintenance habits that keep payment collection running without the manual chase.

Abstract illustration of an invoice transforming into a payment confirmation

HighLevel Payments Overview and Stripe Connect

HighLevel Payments is the native billing layer inside the platform. It connects to Stripe via Stripe Connect, which means your Stripe account holds the funds and handles card processing while HighLevel provides the interface, invoices, and automation hooks.

To connect Stripe, navigate to Settings, then Payments, then Connect Stripe Account. You will authenticate with Stripe and grant HighLevel permission to create charges, invoices, and subscriptions on your behalf. Once connected, HighLevel can send invoices that include a payment link pointing to a Stripe-hosted checkout page or an embedded payment form.

Before you go live, verify a few things. First, check that your Stripe account is fully activated and not in restricted mode. Stripe sometimes holds new accounts in review until you provide business details or identity verification. Second, confirm that your business name, support email, and statement descriptor in Stripe match what you want customers to see on their credit card statements. Third, review your Stripe email receipt settings. Stripe sends its own receipts by default, which can duplicate the confirmation emails HighLevel sends. You may want to disable Stripe receipts to avoid confusion.

Inside HighLevel, you can enable or disable specific payment methods: credit card, ACH, or both. Most operators start with credit card only because ACH requires additional Stripe verification and has longer settlement times. You can also set a default currency, though changing currency mid-account can create reporting headaches, so pick one and stick with it.

One more thing to check: make sure the contact record has a valid email address. HighLevel sends invoice links by email or SMS, but the Stripe payment page confirmation always goes to the email on file. If the email is missing or wrong, the customer will not receive a receipt, and you will field support questions.

Creating and Sending Invoices Manually

Manual invoice creation is straightforward. Go to Payments, then Invoices, then Create Invoice. Select the contact, add line items with descriptions and amounts, set a due date, and optionally attach a PDF or note. Each line item can have its own price and quantity, so you can itemize services, products, or fees on a single invoice.

The due date controls when the invoice is considered overdue. If you set a due date seven days out, the invoice status will flip to overdue on day eight if unpaid. This status change is what triggers the overdue workflow, so pick due dates that match your actual payment terms.

Once you save the invoice, HighLevel generates a unique payment link. You can send this link via email or SMS directly from the invoice detail screen. The email template is basic: it includes the invoice number, amount, due date, line items, and a Pay Now button. The SMS version is shorter and includes the same payment link.

From the customer perspective, clicking the payment link opens a Stripe-hosted page with your business name, invoice details, and a card entry form. After payment, Stripe processes the charge and sends a confirmation. HighLevel updates the invoice status to paid and fires any workflows listening for the paid trigger.

Manual invoicing works fine for one-off projects or irregular billing. But if you send the same invoice structure repeatedly, or if you want invoices to fire automatically when certain events happen, you need templates and workflow actions.

Invoice Templates: What to Standardize

Invoice templates let you save line items, descriptions, amounts, and due date offsets so you do not rebuild the same invoice every time. Templates live under Payments, then Invoice Templates. You create a template by naming it, adding line items, and setting a default due date offset, such as due in seven days or due in thirty days.

Templates are useful when you bill the same service repeatedly. For example, if you charge a monthly retainer of $500, you can create a template called Monthly Retainer with one line item for $500 and a due date of seven days. When you need to invoice a client, you select the template, choose the contact, and send. The line items populate automatically.

Templates also work well for productized services: website setup, ad campaign launch, onboarding fee. Anything with a fixed scope and fixed price benefits from a template because you eliminate the risk of forgetting a line item or mistyping an amount.

What still needs human review? Contact selection, due date adjustment, and any custom line items. Templates do not auto-select the contact, so you still pick the recipient manually or via workflow. If a client negotiated a different due date or a discount, you edit the invoice after applying the template. Templates save time on structure, not on decision-making.

One tip: name your templates clearly. Monthly Retainer is better than Template 1. If you have multiple service tiers, name them Bronze Monthly, Silver Monthly, Gold Monthly so you can find the right one quickly. You will thank yourself when you have twenty templates and need to pick the correct one inside a workflow action.

Workflow Action: Send Invoice

The Send Invoice workflow action is where automation starts. This action creates and sends an invoice to the contact in the workflow, using a template you specify. You can fire it from opportunity triggers, appointment triggers, tag applied triggers, or any other workflow entry point.

Common use cases: send an invoice when an opportunity moves to Closed Won, send an invoice when an appointment is marked complete, send an invoice when a tag like Ready to Bill is applied. The workflow picks up the contact, applies the template, generates the invoice, and delivers it via email or SMS.

Inside the action, you select the invoice template, choose the delivery channel, and optionally set a due date offset if you want to override the template default. You can also choose whether to send immediately or wait. Most operators send immediately because the trigger itself is the billing event, but you can add a wait step before the action if you want a delay.

One important detail: the Send Invoice action does not check whether the contact already has an open invoice. If the workflow runs twice, it will send two invoices. This is where tagging becomes critical. After sending the invoice, add a tag like Invoice Sent or Invoice Pending. Then add a filter at the top of the workflow: if the contact has the Invoice Sent tag, exit the workflow. This prevents duplicate invoices from landing in the same inbox.

Another detail: the action requires a valid email or phone number on the contact record. If both are missing, the action will fail silently or log an error. Check your contact import and form processes to ensure email or phone is always captured.

You can also use the Send Invoice action inside opportunity pipelines. For example, when a deal moves to Closed Won in your pipeline stages that keep deals moving, fire a workflow that sends the invoice and tags the contact. This ties billing directly to deal progression and eliminates the step where someone manually remembers to invoice after closing.

Abstract illustration of timed payment follow-up flowing into a paid status

Workflow Action: Send Recurring Invoice

The Send Recurring Invoice action creates a subscription-style invoice that repeats on a schedule: weekly, monthly, quarterly, or yearly. This is useful for retainers, memberships, SaaS-style billing, or any recurring service where the amount and line items stay the same each cycle.

Inside the action, you select the invoice template, set the recurrence interval, and choose the start date. HighLevel will generate and send a new invoice on each cycle until you cancel the recurring invoice or the contact cancels their subscription.

Guardrails are important here. First, tag the contact with something like Recurring Invoice Active so you can filter them out of one-time invoice workflows. Second, set up a workflow that listens for the invoice paid trigger and confirms the subscription is still active. If a contact cancels service but the recurring invoice keeps firing, you will charge them incorrectly and create a refund headache.

Third, decide what happens when a recurring invoice payment fails. Stripe will retry the charge automatically based on your Stripe settings, but HighLevel does not pause the subscription by default. You need a workflow that listens for payment failed and either pauses the subscription, sends a follow-up, or escalates to a human.

Use cases for recurring invoices: monthly retainer clients, membership sites, ongoing maintenance contracts, subscription boxes. Anything where the billing cycle is predictable and the amount does not change month to month. If the amount varies, you are better off using a one-time invoice workflow triggered by a tag or opportunity stage each cycle.

Invoice Workflow Trigger: Sent, Paid, Overdue, Partially Paid

HighLevel provides an Invoice trigger that fires when an invoice reaches a specific status: sent, paid, overdue, or partially paid. This trigger is the backbone of automated follow-up because it lets you branch logic based on what the customer did or did not do.

Sent: This status fires the moment the invoice is delivered. You can use it to add a tag like Invoice Sent, start a follow-up sequence, or log the event in a custom field. Most operators do not send an immediate follow-up on sent because the customer just received the invoice, but you might send a confirmation SMS if the invoice was emailed, or vice versa, to increase visibility.

Paid: This status fires when the full invoice amount is received. Use this trigger to add a tag like Invoice Paid, remove the Invoice Sent tag, stop any follow-up workflows, and optionally send a thank-you message or trigger fulfillment. Paid is the happy path, and your workflow should clean up tags and exit the contact from any chase sequences.

Overdue: This status fires when the due date passes and the invoice is still unpaid. This is where follow-up begins. A typical overdue workflow waits one day, sends a polite reminder via email, waits three more days, sends an SMS reminder, waits another three days, and escalates to a human or sends a final notice. The key is to space reminders so they feel helpful, not harassing.

Partially Paid: This status fires when the customer pays some but not all of the invoice amount. Partial payments are less common but happen when a customer disputes a line item or pays in installments. You can use this trigger to send a message acknowledging the partial payment and requesting the balance, or to tag the contact for manual review.

One workflow pattern that works well: create four separate workflows, one for each status. Each workflow starts with the Invoice trigger filtered to the specific status. This keeps logic clean and makes it easy to adjust follow-up timing for overdue without touching the paid workflow.

Payment Failed Follow-Up: Retry Timing and Channel Choice

Payment failures happen. Cards expire, accounts hit spending limits, billing addresses mismatch, or the customer simply has insufficient funds. Stripe retries failed payments automatically based on Smart Retries, but you still need a workflow to notify the customer and give them a chance to update their payment method.

A basic payment failed workflow starts with the Invoice trigger filtered to payment failed status. Wait one hour to give Stripe time to retry, then send an email or SMS letting the customer know the payment did not go through and providing a link to update their card. The message should be clear and non-judgmental: Payment for invoice #1234 was declined. Please update your payment method here.

If the payment is still failed after 24 hours, send a second reminder. If it is still failed after 48 hours, escalate to a human. Tag the contact with Payment Failed and assign a task to your billing team to call or email directly. Automated follow-up is helpful, but after two or three attempts, a human conversation is more effective than another automated message.

Channel choice matters here. Email is less intrusive and gives the customer a clickable link to update payment details. SMS is more immediate and has higher open rates, but it can feel aggressive if sent too soon or too often. A good middle ground: email first, SMS second if no response after 24 hours.

One more consideration: if the payment failure is due to a canceled card or closed account, the customer may not be able to pay through the original invoice link. You may need to send a new invoice or provide an alternative payment method like ACH, check, or wire transfer. Your workflow should account for this by offering a reply path or a phone number to call.

Tagging and Contact Hygiene to Prevent Duplicate Invoices

Duplicate invoices are one of the most common failure modes in automated billing. A contact moves through two workflows, both fire the Send Invoice action, and the customer receives two invoices for the same service. This creates confusion, erodes trust, and generates support tickets.

The fix is tagging and workflow filters. Every time you send an invoice, add a tag like Invoice Sent or Invoice Pending. At the top of every workflow that sends an invoice, add a filter: if the contact has the Invoice Sent tag, exit the workflow. This prevents the workflow from running twice on the same contact.

When the invoice is paid, remove the Invoice Sent tag and add an Invoice Paid tag. This clears the contact for future invoices while preserving a record that they paid. If you send recurring invoices, you might use tags like Recurring Active or Retainer Billed to track subscription status separately from one-time invoices.

Contact hygiene also means cleaning up old tags. If a contact has an Invoice Sent tag from six months ago but never paid and the invoice was written off, remove the tag so they can receive new invoices. You can do this manually or with a workflow that checks for overdue invoices older than 90 days and removes stale tags.

Another hygiene tip: use custom fields to store invoice numbers or amounts if you need to reference them later. Tags are binary, on or off, but custom fields can hold data. For example, you might store the last invoice date in a custom field so you can filter contacts who have not been invoiced in the past 30 days.

SMS vs Email for Invoices and Payment Reminders

Choosing between SMS and email for invoices and reminders depends on urgency, customer preference, and message length. Email is better for detailed invoices with multiple line items, attachments, or long explanations. SMS is better for short reminders, urgent follow-ups, or contacts who rarely check email.

For the initial invoice, email is usually the right choice. The invoice includes line items, due date, terms, and a payment link. All of that fits naturally in an email. SMS works as a secondary notification: Invoice sent, check your email or click here to pay.

For overdue reminders, SMS has higher open rates and faster response times. A short message like Your invoice is overdue, please pay here gets attention. But SMS can feel intrusive if sent too often or at the wrong time, so space reminders at least 48 hours apart and respect quiet hours.

Quiet hours matter. Do not send payment reminders at 2am or 6am. HighLevel lets you set quiet hours in workflow SMS actions, typically 9am to 8pm in the contact’s time zone. If you do not set quiet hours, the workflow will send immediately, and you risk waking someone up or annoying them first thing in the morning.

Deliverability is another factor. SMS delivery is not guaranteed, especially if the contact opted out of SMS or their carrier blocks short codes. Email deliverability is higher, but emails can land in spam if your domain reputation is poor. Test both channels and monitor delivery reports to see what actually reaches the customer.

One pattern that works: send the invoice via email, wait 24 hours, send an SMS reminder if unpaid, wait 48 hours, send an email reminder if still unpaid. This gives the customer multiple touchpoints without overwhelming them.

Recording Manual Payments vs Card Charges

Not every payment happens through a credit card. Customers pay by check, cash, ACH transfer, wire, or third-party platforms like PayPal or Venmo. When a customer pays outside of Stripe, you need to record the payment manually inside HighLevel so the invoice status updates to paid and your workflows stop chasing them.

To record a manual payment, open the invoice, click Record Payment, enter the amount, select the payment method (cash, check, other), and optionally add a note. HighLevel updates the invoice status to paid and fires the invoice paid trigger. Any workflows listening for that trigger will run, which means the contact will be tagged as paid, removed from follow-up sequences, and sent a confirmation if your workflow includes one.

Recording manual payments is critical for automation hygiene. If you do not record the payment, the invoice stays open, the overdue workflow keeps firing, and the customer receives reminders for an invoice they already paid. This damages trust and creates support work.

One common mistake: recording a payment but forgetting to update the amount. If the customer paid $450 on a $500 invoice, record $450 as a partial payment, not $500. HighLevel will mark the invoice as partially paid, and you can follow up for the remaining $50 without closing the invoice prematurely.

Another tip: use the payment note field to record details like check number, transaction ID, or the date you deposited the check. This creates an audit trail and helps you reconcile payments later.

If you accept ACH or wire transfers regularly, consider adding those as payment methods in your Stripe account so payments flow through HighLevel automatically. This reduces manual work and ensures every payment is recorded in real time.

Common Failure Modes

Even a well-designed payment automation system can fail in predictable ways. Here are the most common failure modes and how to prevent them.

Wrong contact: The workflow sends an invoice to the wrong contact because the trigger fired on a duplicate record or the contact was merged after the workflow started. Prevention: deduplicate contacts before launching workflows, and use contact ID instead of email as the unique identifier in workflows.

Stripe disconnect: Your Stripe account becomes disconnected from HighLevel due to expired credentials, a password change, or Stripe security review. When this happens, invoices fail to send and payments cannot be processed. Prevention: check your Stripe connection monthly, and set up a workflow that alerts you if an invoice send action fails.

Overdue loops: The overdue workflow fires repeatedly because the invoice status never updates to paid. This happens when a manual payment is not recorded or when the workflow does not check for the Invoice Paid tag before sending reminders. Prevention: always record manual payments, and add a filter to the overdue workflow that exits if the contact has the Invoice Paid tag.

Duplicate invoices: Two workflows send invoices to the same contact for the same service. Prevention: use tags like Invoice Sent and add filters to every invoice workflow that exit if the tag is present.

Charging after cancel: A recurring invoice continues to charge a customer after they cancel service because the subscription was not paused in HighLevel. Prevention: when a customer cancels, immediately pause or delete the recurring invoice, and add a tag like Service Canceled to prevent future billing workflows from running.

Spammy reminders: The follow-up workflow sends reminders too frequently or at odd hours, annoying the customer. Prevention: space reminders at least 48 hours apart, set quiet hours on SMS actions, and limit total reminders to three or four before escalating to a human.

Missing paid tags: The invoice is paid, but the workflow does not add the Invoice Paid tag, so the contact remains in follow-up sequences. Prevention: every paid workflow should add the paid tag and remove the sent tag as the first two actions.

One more failure mode: the customer pays the invoice but the payment fails to sync from Stripe to HighLevel due to a webhook delay or API issue. This is rare but can happen during Stripe outages or network issues. If a customer reports paying but the invoice still shows unpaid, check the Stripe dashboard directly to confirm the payment, then record it manually in HighLevel.

Testing Checklist and Maintenance Habits

Before you launch payment automation live, test every workflow with real contacts and real invoices in test mode. Stripe provides test card numbers that simulate successful payments, failed payments, and declined cards. Use these to walk through the entire flow from invoice send to payment confirmation to overdue follow-up.

Testing checklist: Create a test contact with a valid email and phone number. Send a test invoice using a workflow. Confirm the invoice arrives via email or SMS. Click the payment link and complete a test payment using a Stripe test card. Confirm the invoice status updates to paid in HighLevel. Confirm the paid workflow fires and adds the Invoice Paid tag. Wait for the due date to pass without paying and confirm the overdue workflow fires. Send a payment failed test and confirm the follow-up workflow fires. Record a manual payment and confirm the invoice status updates and workflows stop.

Maintenance habits: Check your Stripe connection once a month. Review failed invoice sends and payment failures weekly. Audit contact tags monthly to remove stale Invoice Sent tags. Review overdue invoices monthly and decide whether to write them off or escalate. Monitor workflow error logs for failed actions and fix broken triggers.

One habit that saves time: create a dashboard or report that shows all open invoices, overdue invoices, and failed payments in one view. HighLevel does not provide this out of the box, but you can build it using custom reports or export invoice data to a spreadsheet. This gives you a single place to spot problems before they become support tickets.

Practical Advice on Unpaid Invoice Follow-Up

Even with automation, some invoices will go unpaid. Customers forget, budgets shift, priorities change. The goal is not to eliminate unpaid invoices entirely but to reduce them and handle the rest efficiently.

Timing matters. The first reminder should go out one to three days after the due date, not immediately. Immediate reminders feel aggressive. Waiting a week feels neglectful. Three days is the sweet spot. The second reminder should go out three to five days after the first. The third reminder should go out one week after the second, and that is when you escalate to a human.

Tone matters. The first reminder should be polite and assume good intent: Just a friendly reminder that invoice #1234 is due. The second reminder can be more direct: Invoice #1234 is now overdue. Please pay by Friday to avoid service interruption. The third reminder should offer a way out: If there is an issue with this invoice, please reply or call us. For more strategies on handling unpaid invoices, this guide on collecting unpaid invoices offers useful frameworks.

Escalation paths matter. After three automated reminders, a human should take over. Tag the contact with Escalate to Billing, assign a task to your billing team, and pause the automated workflow. A phone call or personal email is more effective at this stage than another automated message.

Write-off policies matter. Decide in advance when you will write off an invoice as uncollectible. Thirty days overdue? Sixty days? Ninety days? Once you write it off, remove the Invoice Sent tag, add a tag like Written Off, and stop all follow-up. This keeps your workflows clean and prevents you from chasing invoices that will never be paid.

Closing: Clear Next Steps

Payment collection does not have to be a manual chase. Connect Stripe to HighLevel, build invoice templates for your most common services, and set up workflows that send invoices when opportunities close or appointments complete. Use the invoice trigger to branch follow-ups based on sent, paid, overdue, and partially paid statuses. Tag contacts to prevent duplicate invoices and stop follow-ups when payment is received. Record manual payments so your automation knows when to stop. Test every workflow before going live, and maintain the system monthly to catch failures early.

Start with one workflow: send an invoice when an opportunity moves to Closed Won. Get that working, then add overdue follow-up. Then add recurring invoices for retainer clients. Build the system one piece at a time, test each piece, and clean up tags and filters as you go. The result is a payment process that runs without you, collects money faster, and frees your time for higher-value work.

by Darius Gaynor