Skip to content
Membership points and vouchers: symptom, cause, fix

Membership points and vouchers: symptom, cause, fix

Start from the symptom. Each fix names the applet page that carries the detail. Read the first section before the tables: a membership question is usually not “how do I” but “where did this number go?”, and that needs a chain to walk rather than a row to look up.

Walk the chain when a member says their points are missing

“The balance shows zero and they have been shopping here for months.” That one sentence covers five different faults, and they have different fixes — one is unrecoverable, three are, and one is not a fault at all. Work the chain in order and stop at the first link that is broken. Each step has one thing to look at and one answer.

1. Did the sale happen the way points need it to? Open the bill. Is the member on the document? A bill rung up before the cashier attached the card earns nothing, for ever, and no retry will fix it — only a manual adjustment will. Is the bill the document type and posting status the company’s MEMBER_POINT configuration names? With no configuration the backend awards on INTERNAL_SALES_ORDER at FINAL, so a retailer selling on cash bills earns nothing at all. Those two plus the configured status are the whole of docTypeValid, and if any fails the processor returns without a word.

2. Do the bill’s lines carry a point amount? The processor only looks at lines that have both a point amount and a point currency. If no line qualifies it deliberately does not mark the document POSTED, so it can be retried once the rule is fixed — which means a zero here is recoverable and the fix is the price set, not an adjustment. Check one cause before the obvious ones: the backend point calculator skips any price set whose header filter has no Member Class rule, silently. See program design.

3. Are there transaction lines? The member’s Point Transaction tab is the ledger — one row per points-bearing document line, with the document it came from. Lines present here and a zero balance on screen means the fault is downstream and the points exist. No lines at all, with a document whose membership posting status is POSTED, is the one genuinely broken state: the document says it awarded and nothing did, and its fix is the data-fix run in the next section.

4. Are there lots? The Points Expiry tab shows the control-account lots — one per award, each with its own start date, end date and remaining balance. Lines with no lots, or lots with an end date in the past, explain a balance that fell without anybody spending anything.

5. Is the stored balance simply behind? The number on the till and in the applet is an accumulator — one stored row per member and point currency — not a live sum. Two different writers maintain it, and knowing which one last touched it is the whole diagnosis:

  • On the write path, an incremental writer adds the movement. On an EXPIRY or an insufficient-balance adjustment it does not subtract — it sets the stored balance to zero.
  • Immediately afterwards the line is queued to MEMBERSHIP_CTRL_ACC_AND_CURRENT_BALANCE_UPDATE_PROCESSOR, which recomputes the balance as the sum of every active transaction line for that member and currency and rebuilds the lot.

So the zero is normally momentary and the recompute restores the true figure. When that queue hop is lost, the zero is permanent and it is what the member sees — and that is the difference between the two symptoms worth separating:

What you seeWhat it meansWhat to do
Balance is stale — right until recently, wrong nowThe lines and lots are correct; the accumulator missed a hopRe-drive the balance: the recalculation queue in Membership Admin rebuilds it from the lines
Balance is zero with lines and lots presentThe incremental writer zeroed it on an expiry or shortfall line and the recompute never arrivedThe same re-drive; then check why the queue is not draining
Balance is zero with no lines, document POSTEDThe document was marked as having awarded, and no transaction lines exist behind itThe data-fix run in the next section, never a hand-inserted row
Balance is zero with no lines and no POSTED flagNothing ever awarded. Go back to step 1Fix the configuration or the price set; the retry will then award

The arithmetic that settles it in one line: the sum of a member’s active transaction lines for a point currency must equal their stored balance. The transaction-lines query against the current-balance query. When they differ, the stored figure is the one that is wrong.

Put the points back the right way

There are two ways to restore points that a document should have awarded and did not, and one of them quietly destroys the audit trail.

The right way — re-drive the processing for the document. A data-fix run, which BigLedger support can trigger for a company, finds every document for that company that carries a member and has no transaction lines behind it — including ones already flagged POSTED, which is exactly the broken state in step 3 — and reprocesses each. Void documents are excluded and never reprocessed. The points arrive with their real source, their real document and line, and their real validity dates, so the member’s history reads as what happened.

The wrong way — inserting transaction lines by hand. A hand-inserted line has no document behind it, and its per-line balance snapshot is computed against the accumulator as it stood at that moment, so it is not a running total and it is not evidence of anything. A member statement built from those rows has no sale to reconcile against, which means the next dispute has nothing to settle it with.

If neither applies — because the sale genuinely never had a member on it — the answer is a manual adjustment with a real reason, not a data fix. Whoever holds ALLOW_EDIT_MEMBERSHIP_POINTS makes it, and it will show up in somebody’s monthly adjustment review (security and compliance) — which is correct, because that is what the review is for.

Chase a missing identity number in membership, not in e-invoice

The symptom appears in e-invoice and the cause is in membership, which is why it is usually chased in the wrong place. Correcting a member’s identity number on the membership card does not write it to the customer record: editing a member never touches the customer, and only the API’s with customer routes run the mapping that copies name, identity number, phone, e-mail and date of birth across. On create the mainstream path does link an entity — creating one with the identity number if there is no match — but where it matches an existing customer by phone or e-mail it leaves that customer’s details as they were.

Fix it on the customer record as well as the membership card, and check both screens show the number before the next invoice. See data management.

Decide which system your counter is allowed to quote

A business running loyalty in BigLedger alongside another system has two balances and no reconciliation between them — nothing in the membership module reads, writes or compares an outside balance, and there is no import beyond the point-transaction CSV. That is a permanent operating condition, not a migration stage, so it needs an answer rather than a plan.

Decide which system the counter is allowed to quote, say it in the counter instructions, and give one person the job of reconciling the two on a fixed day. The instrument on our side is …/membership-points-txn/lines/query, which gives every movement with its date and source; the other side has its own. They know the reconciliation is honest when a member picked at random gets the same answer from both, and the two systems’ movements for the month agree.

Membership points

SymptomCauseFix
Bills for a member earn no points — everThe company member-point configuration does not name the document type you sell on. With no configuration the backend awards on INTERNAL_SALES_ORDER at FINALSet the MEMBER_POINT configuration through the company API to the cash-bill or invoice type and status (Organisation page); there is no screen
Member is on the bill, configuration is right, still no pointsThe bill lines carry no point amount and currency — no price set matched, or the POINT treatment is missingCheck the POS Default Pricebook, the price set’s Doc Hdr rules (Member Class, Branch, absolute Valid Date Range) and Single Line rules; add the POINT treatment (Pricebook). The document is left unmarked so a retry awards once the lines are fixed
A price set with a Member Label, Company, Currency or Settlement Method rule applies to everyoneThe counter calculator ignores those rule typesUse Member Class, Branch, Entity Type, Customer or Employee Category
Multi Line rules award no pointsThe counter calculator never reads that tab, and the till’s separate purchase-with-purchase pass — which does read it — only discounts; it applies no POINT treatmentPut the item conditions for a point treatment on the Single Line tab
Points from Level 1 or higher of a commission scheme never arriveThe points run uses the first treatment onlyPut the points logic on Level 0 (Commission Scheme)
Points never expireThe lots have no end date (no Validity Period on the treatment, no Valid Date To on the adjustment), or the elimination processor is not scheduledDate every earning path; schedule MEMBERSHIP_EXPIRY_POINTS_ELIMINATION_PROCESSOR
Points expired unexpectedlyThe lot’s end date passed and the processor ranPoints Expiry tab; extend Valid Date To on a new adjustment (Membership Admin)
After a void, the till still shows the bill’s points, or the redeemed points never came backA void does not reverse points: the bill’s point lines stay, and only the lots it earned are removedPost a Point Adjustment on the member; see Points Setup
Reward points not applied or points discount missing at POSPoints Discount Item Code not set, member not VERIFIED with POS_ALLOW_VERIFIED_MEMBER_REDEEM_POINTS on, or PTS to CCY rate missingPOS Default Selection; verify the member; PTS to CCY Config (POS General)
Point Transaction rows cannot be editedDISALLOW_EDIT_MEMBERSHIP_POINTS on and the user lacks ALLOW_EDIT_MEMBERSHIP_POINTSGrant the permission
OCR receipt is FINAL, no points, Process Status never APPROVEDNo enabled subscriber job template; or the template has no priceBookHdrGuid; or the price set has no POINT treatmentOCR Cash Bill troubleshooting table

Members

SymptomCauseFix
New members get random six-digit card numbersNo card-number rule — none of the three Field Settings switches is on, so the form assigns a random number and savesField Settings → custom running number (with its starting number), or assign IC / mobile to card number; members already saved keep the number they were given
Failed to generate card_no running numberRunning-number configuration missing or exhaustedField Settings → Card Running Number
Member search shows only some branchesBranch targets on the read permissionAdd the branches
Join Date shifted by a dayTimezoneDefault Selection → Default Timezone
Upload rejected on the Checking tabClass or label code not found, date format, missing mandatory columnFix the row; create classes and labels first
Member did not move to GOLD after spending the thresholdThere is no automatic upgradeChange the class on the member form

Vouchers

SymptomCauseFix
Voucher / coupon rejected at POSPer-customer or daily limit reached, or the voucher has no rule headerVoucher Management
A ticket redeemed after its redemption periodIt was redeemed directly (back office, merchant, storefront), which flips the status without reading the dates; redemption from a finalised document does check themThe direct calls refuse only an already-redeemed ticket, so even an EXPIRED one goes through: check the ticket’s dates before redeeming it directly, or redeem it on a document
Add button gone in Ticket ManagementENABLE_MULTIPLE_TICKET off and the voucher is FIXED with a ticket already generatedTurn the setting on
Import Tickets file failsCSV columns do not match the nine expected (voucher code, serial, soft pin, four statuses, code, name)Download the Sample Format and match it
Recurring vouchers never appearThe recurring-voucher run selects no template today, however it is scheduledMake each period’s voucher by hand or by import in Voucher Management
Voucher code cannot be editedENABLE_EDIT_VOUCHER_CODE offField Settings

Referral programmes

SymptomCauseFix
Lineage row will not save: …REFERRAL_SOURCE_IS_NULL_OR_EMPTYThe backend requires a referral source though the form marks it optionalPick one (MLM Admin)
Communication endpoint link will not save: …PRIORITY_IS_NULL_OR_EMPTYPriority is required server-sideEnter a priority
Invitations are never sentThe program has no communication endpoint link, or MLM_INVITATION_LINK_PROCESSOR is not scheduledLink a Unified Contact Center endpoint; schedule the processor
Accepted invitation but no lineageINVITATION_INSERTION_INTO_LINEAGE_PROCESSOR not scheduled, or the child is not yet a participantSchedule it; enrol the participant
QR link gives 404The program’s forwarding URL lacks <URL-KEY> or is not a valid URLFix the forwarding URL
…MAX_OR_MIN_LEVEL_IS_BREACHEDLineage deeper than 10 levelsFlatten the tree
Upline commission never paidThe scheme is not type MLM, or the Sales Commission cycle has not runCommission Scheme; Sales Commission applet

What is not a fault

  • Points that “post with a delay”: the balance is updated by a queue processor after the line is written; the line itself is immediate.
  • A class that does not change on its own.
  • A points balance that appears in no ledger account.
Last updated on