CVGo Exception Recovery
What to do when a CVGo POS Data record is stuck, fails, or doesn't reconcile. Use the Daily Cycle as the happy path and come here when something goes sideways.
Anyone running the daily CVGo workflow who has hit an error or a stuck record. Read CVGo Daily Cycle first if you're not yet familiar with the normal flow.
State map
The cron jobs run every minute and automatically advance Draft → Validated → Posted, unless the record hits a config gate (most commonly an unconfigured MOP). A record can sit in Validated indefinitely with no error visible on the form — always check the Logs tab when something looks stuck.
Diagnostic — start here
| Symptom | Most likely state | Jump to |
|---|---|---|
| Upload itself failed | Pre-Draft | Upload failures |
| Record stuck in Draft for more than a minute | Draft | Stuck in Draft |
| Record stuck in Validated, no error on screen | Validated | Stuck in Validated |
| Posting fails with a visible error | Validated | Posting failures |
| Reconciliation tab shows Unbalanced | Posted | Unbalanced reconciliation |
Skipped transactions > 0 on the record | Posted | Skipped transactions |
| Register Payments button missing | Posted | Already paid |
Upload failures
File Hash already existing!
Root cause: Same ZIP was already uploaded — files are deduped by hash on purpose. Recovery: Search existing CVGo POS Data records by date and station. You almost certainly already have this file. Don't: Rename or re-zip the file to bypass the check — that creates a true duplicate.
Upload succeeds but the record never appears in the list
Root cause: Active company switcher is set to a different branch than the file is for; the new record is filtered out by the branch filter. Recovery: Switch to the correct branch (top-right). Or remove the company filter on the list view.
Stuck in Draft
The validation cron runs every minute. If a record stays in Draft for more than ~2 minutes, validation has failed silently.
Where to look: Open the record > Logs tab > filter by Error.
Common causes
| Log entry | Cause | Recovery |
|---|---|---|
XML parse error / not a valid CVGo export | The ZIP is corrupted or contains non-CVGo files | Get a clean export from CVGo. Delete this record and re-upload the new ZIP. |
Missing required XML file | ZIP is missing the Periods or Transactions XML | Same — request a complete export and replace. |
| Permission / file-system errors | Server-side issue (disk full, perms) | Escalate to IT. Do not retry. |
After fixing the source file, re-uploading does not require deleting the old Draft record if the hash differs — just upload the corrected ZIP and remove the bad Draft. If the hash matches, you must delete the bad record first.
Stuck in Validated
By far the most common stuck state. The posting cron skipped this record because something is gating it.
Where to look: Open the record > verify the MOP tab > then Logs tab.
MOPs are not configured (most common)
Symptom: Posting fails — manually or silently from the cron — with an error listing one or more MOPs.
Root cause: Validation auto-created a new MOP account for an unfamiliar payment method. New MOPs are created with Configured = False and block posting until reviewed.
Recovery:
- Open each MOP listed in the error — see MOP Accounts.
- Set: posting mode (Detailed / Summarized), partner, sale journal, payment journal, accounts.
- Click Mark Configured.
- Return to the CVGo record and click Post (or wait one minute for the cron).
_check_company error
Symptom: Posting fails with Some records are incompatible with company X or similar _check_company error.
Root cause: A tax, journal, or partner referenced by the MOP belongs to a different branch than the CVGo record's branch. Multi-branch scoping is strict.
Recovery: On the MOP account, verify sale_journal_id and payment_journal_id are scoped to the same company_id as the CVGo record. Re-check the "12% CVGo (Incl.)" tax exists for that branch — see Taxes. Then re-post.
Tax not applied to SO lines
Symptom: Posting succeeds but invoices show wrong totals; no tax line on SOs. Root cause: No "12% CVGo (Incl.)" tax exists for that branch. Recovery: Run the multi-branch SQL sanity check in Troubleshooting. If the tax is missing, contact IT — it should have been seeded by the post-install hook.
Posting timeout
Symptom: Posting hangs or times out, especially in Detailed mode. Root cause: Detailed mode creates 1 SO per transaction; high-volume days exceed the request budget. Recovery: The system processes 50 at a time per click/cron tick. Either wait — the cron will continue picking up where it left off — or click Post again. No data loss; no duplicates.
Posting failures
If posting fails on click (not silently), the error appears in a popup. Match it against the table above. If it doesn't match anything documented, capture:
- The full error text
- The CVGo POS Data record ID
- The branch
- A screenshot of the Logs tab
…and escalate. Do not delete the record while a fix is pending.
Unbalanced reconciliation
Symptom: After posting, the reconciliation tab shows Unbalanced or non-zero variance on one or more MOPs.
Distinguish the two flavors
| Variance size | Likely cause | Recovery |
|---|---|---|
| ≤ 1.00 (any MOP) | Rounding | Acceptable; the system tolerates rounding under 1.00 |
| > 1.00, single MOP | Manually edited / cancelled invoice or payment | Audit that MOP's invoices and payments; restore or correct |
| > 1.00, multiple MOPs | Skipped transactions during posting | See Skipped transactions below |
| Whole-day mismatch vs. CVGo | Station-side data issue | Escalate to station before closing the day |
Skipped transactions
Symptom: The record shows Skipped transactions > 0. Some transactions are marked posted but no SO was created for them.
Where to look: Logs tab — error logs include the receipt identifier of the failing transaction.
Recovery:
- From the log, identify the failing receipt(s).
- Open the underlying transaction record. Check for: missing partner, invalid product, malformed amount, unknown tax code.
- Fix the data issue at the source if possible. For one-off failures, hand-create the matching SO + Invoice + Payment using the receipt number as the reference, then mark the transaction
posted = Truemanually. - Re-run reconciliation; variance should resolve.
If skipped transactions are recurring across multiple days, escalate — there's likely a code or config bug, not a data issue.
Already paid (non-issue)
Symptom: Register Payments button is missing on an invoice. Root cause: All invoices on the record are already paid (typically because the auto-confirm + auto-pay flow ran during posting). Recovery: Nothing to do. This is the success case for auto-paid MOPs.
Escalate to IT when…
- A failure happens on more than one CVGo record from different branches on the same day
- The same exception recurs after the documented fix
- You see file-system, database, or
_check_companyerrors that don't trace to a clear MOP/tax misconfig - Reconciliation is off by a whole-station amount with no skipped transactions
- The cron jobs have stopped advancing records globally (check with another team — affects everyone)
Capture before escalating: record ID, branch, full error text, Logs screenshot, the source ZIP if available.
Recovery checklist
- Identified the state where the record is stuck
- Read the Logs tab for the underlying error
- Applied the documented recovery for that error
- Re-ran the failing step (validate / post)
- Confirmed the record advanced to the next state
- Reconciliation variance is 0.00 (or within ±1.00 rounding)
- No skipped transactions remain unaccounted for
Related
- Workflow: CVGo Daily Cycle
- Reference: Validation, Posting, Reconciliation, Troubleshooting
- Configuration: MOP Accounts, Taxes, Sequences, Cron Jobs