Credit Wallet

Setup and documentation

Everything from installing to what happens when an invoice gets voided. If you're new, the first section is the only one you need today.

Start here

About five minutes, most of which is GoHighLevel doing the work.

  1. Install the app on a sub-account

    Choose the sub-account you want it on and approve the permissions. Credit Wallet needs contact, invoice and custom object access — it uses them to read contacts, write the ledger, and put credit onto invoices.

  2. Wait a few seconds while it sets itself up

    On first install it creates two custom objects in your sub-account — Credit Transactions and Credit Accounts — and links them to your contacts. You don't have to configure anything. They'll appear in your left navigation.

  3. Open Credit Wallet from the left navigation

    It runs as a page inside GoHighLevel, so there's no separate login. Anyone on your team who can see contacts can open it.

  4. Search a contact and add some credit

    Type a name, email or phone number, pick the contact, enter an amount and a reason, and press Add. The balance updates immediately and the entry appears in the history below it.

  5. Decide who can move credit

    Open Settings (admin only) and set Who can add or deduct credit. By default it's admins only. Everyone with contact access can still view balances either way.

That's a working ledger. Everything below — workflows, invoices, the review list — is optional and can wait until you need it.

Adding and deducting credit by hand

Search for a contact and you'll see their balance, a form to change it, and their full history. Every entry records the amount, the reason, who made it, and where it came from — tagged manual, workflow, invoice or adjustment.

The reason is optional but worth filling in
It shows in the history, in the note written to the contact timeline, and it's the only thing that will explain the entry to whoever looks at it in six months.
Balances cannot go below zero
Deducting more than the contact has is refused outright — not partly applied. Deduct what's there, or check the balance first.
Every change writes a note on the contact
So the credit history is visible in the contact timeline where your team already works, not only inside Credit Wallet. You can turn this off in Settings.
History can lag a few seconds behind the balance
GoHighLevel's record search is an index that catches up shortly after a write. The balance is always exact and correct; a brand-new entry may take a moment to appear in the list below it. Nothing is lost.

Workflows

Three actions and two triggers, available in any workflow in a sub-account that has Credit Wallet installed.

Actions

Add Account Credit Deduct Account Credit
FieldRequiredNotes
Amount Yes A positive number, up to two decimal places. Accepts a workflow variable.
Reason No Free text. Defaults to "Workflow add" or "Workflow deduct" if left empty.

Returns, for use in later steps:

balanceThe balance after the change
previousBalanceThe balance before it
amountHow much moved
reasonThe reason recorded
transactionIdThe ledger record it created
Check Credit Balance

Reads a balance without changing it, so a workflow can branch on it. No fields to fill in. Returns:

balanceThe current balance
hasCreditTrue when the balance is above zero
isEmptyTrue when the balance is exactly zero

The last two are there so you can branch with an If/Else on a true/false rather than building a numeric comparison.

Triggers

Credit Added Credit Deducted

Fire whenever a contact's balance changes in that direction — however it changed. A manual entry, a workflow action, and credit applied to an invoice all fire the same trigger. That's deliberate: "the customer's balance went up" is one event regardless of what caused it.

Worth knowing before you build on it: returning credit from a voided invoice raises the balance, so it fires Credit Added too. If your Credit Added workflow texts the contact, it will text them about a refund as well as a reward. Branch on the reason if you need to tell them apart.

A deduction larger than the balance fails the step. It does not partly apply and it does not silently pass. Put a Check Credit Balance step and an If/Else in front of any deduction where the amount might exceed what's there.

Worked example: a referral program

  1. A new customer names their referrer on a form, or arrives through a tracked link.
  2. Wait until their first invoice is paid — so nobody earns on a booking that never converts.
  3. Add Account Credit of $25 to the referrer, reason "Referral reward".
  4. The Credit Added trigger starts a second workflow that texts them.
  5. With auto-apply on, their next invoice comes out $25 lower on its own.

Invoices

Available on the Automatic plan. Off by default — turn it on in Settings, per sub-account.

When an invoice is created for a contact with a balance, Credit Wallet adds a line item called Account Credit Applied for the smaller of the balance and the invoice total, and deducts exactly that from the ledger. An invoice can never be pushed below zero and turned into a refund.

Reload the invoice before you send it.

An invoice doesn't exist until it's saved, so there's nothing to apply credit to before then. Once saved, the credit is applied within a second or two — but GoHighLevel's invoice editor is a form holding its own copy, and it doesn't refresh. The line is on the invoice; you just can't see it until you reload.

This matters most when you save and send straight away. What your customer receives is correct — the send uses the stored invoice — but you'd have no way to tell from your screen. Reload, check, then send.

Don't save an invoice from a tab you opened before the credit applied.

That tab still holds the version without the credit line. Saving it writes that version back, wiping the line — while the balance stays deducted. Your customer is charged full price and their credit is gone.

Credit Wallet detects this on the next invoice update, files it in the review list, and writes a note on the contact naming the amount. The fix is manual: either add the credit back to their balance or re-apply the line to the invoice. Avoid it by reloading after saving, or opening the invoice fresh.

What happens when an invoice changes

What you doWhat Credit Wallet does
Void or delete an unpaid invoice Returns the credit to the contact's balance automatically, logged as "Returned".
Void or delete an invoice that took a payment Returns nothing. Flags it for you, because a refund may already cover it and doing both would pay the contact twice.
Edit an invoice down below the credit already applied Changes nothing. Flags it for review.
Remove the credit line yourself Flags it and notes the contact. The balance stays deducted until you decide.
Create a second invoice for the same contact Applies whatever balance is left, capped at that invoice's total.

When it asks for a human

Credit Wallet will not move someone's money to resolve an ambiguity. When it hits one, it does three things: files an entry in Needs review on the Settings page, writes a note on the contact naming the amount and what happened, and stops.

A paid invoice was voided
Decide whether the refund already covered the credit. If not, add it back by hand.
The credit line was removed from an invoice
Either re-apply the line to the invoice, or add the credit back to the balance.
A balance disagrees with its own history
Usually means someone edited the balance record directly in the CRM. Open the contact in Credit Wallet and use Check balance against history, which writes an adjustment entry so the two agree and the change is on the record.

Protecting the ledger

Your credit data lives in your own sub-account as custom object records, not in our database. That's deliberate — it stays visible, filterable and exportable in your CRM, and it's still there if you uninstall the app.

The trade-off is that anyone with object access can edit those records by hand, and a hand-edited balance is a wrong balance. We can't prevent that; it's your CRM and your users.

Recommended: in your sub-account user roles, restrict Credit Transactions and Credit Accounts to admin users. Credit Wallet writes to them through the app regardless, so nothing stops working.

As a backstop, the transaction log is treated as the source of truth and the balance as a running total of it. If they disagree, that's reported rather than silently corrected — a silent correction would move someone's money without a person deciding, and would undo a legitimate manual fix.

Settings reference

Admin only, and per sub-account.

Apply credit to invoices automatically
Off by default. Automatic plan only. When on, any available balance is applied to each new invoice, capped at the invoice total.
Write a note on the contact for every change
On by default. Adds a note to the contact record whenever credit is added or deducted, so the history shows up in the timeline.
Who can add or deduct credit
Admins only, or anyone with contact access. Viewing balances is never restricted. This is enforced on the server, not just hidden in the interface.
Needs review
Anything waiting on a decision from you. Empty is the normal state.

Troubleshooting

I added credit and it's not in the history
Check the balance — if it went up, the entry exists. GoHighLevel's record search takes a few seconds to index a new record. Reload and it will be there.
I created an invoice and no credit was applied
Reload the invoice first — the editor doesn't refresh itself. If it's still not there: check that auto-apply is on in Settings, that you're on the Automatic plan, and that the contact actually has a balance.
My workflow action failed
The most common cause is deducting more than the contact has, which fails rather than partly applying. The step's error message says which. Put a Check Credit Balance step in front of it.
The workflow triggers aren't firing
Remove the trigger from the workflow and add it back, then save. That makes GoHighLevel re-register it. If it still doesn't fire, get in touch.
Workflow actions and triggers are missing
They're part of both paid plans. If you're past the trial without a subscription, the app drops to manual credit only.
A balance looks wrong
Open the contact and use Check balance against history. It sums every transaction, compares, and writes an adjustment if they disagree — so the balance and the log end up telling the same story.

Still stuck?

Email me directly. Include the sub-account name and roughly when it happened and I can look at exactly what the app did.

aaron@canitbeautomated.com