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.
-
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.
-
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.
-
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.
-
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.
-
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
| Field | Required | Notes |
|---|---|---|
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:
balance | The balance after the change |
previousBalance | The balance before it |
amount | How much moved |
reason | The reason recorded |
transactionId | The ledger record it created |
Reads a balance without changing it, so a workflow can branch on it. No fields to fill in. Returns:
balance | The current balance |
hasCredit | True when the balance is above zero |
isEmpty | True 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
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
- A new customer names their referrer on a form, or arrives through a tracked link.
- Wait until their first invoice is paid — so nobody earns on a booking that never converts.
- Add Account Credit of $25 to the referrer, reason "Referral reward".
- The Credit Added trigger starts a second workflow that texts them.
- 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 do | What 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
