E-commerce
August 5, 2026
"Keep the product, refund me 30%." "The package arrived late, I want partial compensation." "I'll accept the store credit if you refund me the promo difference." Three requests addressing the same blind spot: partial refunds without policy, thresholds, or traceability.
Shopify points out that a partial refund must be documented on the order with an internal note and exact amount, as it appears in chargeback disputes (Shopify, partial refund 2026). Chargeflow estimates that untracked commercial gestures increase the risk of bank disputes when the customer expects a full refund (Chargeflow, chargebacks 2026).
This guide #368 covers e-commerce partial refund customer support: post-dispute discounts and internal rules. No existing content covered this ops topic from end to end. It complements pricing errors (#237) (checkout delta) with the angle of PART-REF policy, PART-REF-GATE flow, threshold grid, and agent macros. It prepares for the future refund status bot (#370).
Summary
Why do partial refunds generate disputes?
A support partial refund ticket occurs when the customer agrees to keep the product or close a dispute in exchange for compensation lower than the order amount. Without a PART-REF policy, agents improvise 10% or 50%, finance loses control, and a chargeback follows.
Five customer frustrations
Arbitrary amount: u20ac15 one day, u20ac40 the next for the same dispute
Verbal promise: agent promises a partial refund, nothing appears on the Shopify order
Unclear timeframe: "within 48 hours" without ARN refund tracking
Store credit vs refund confusion: customer wants card refund, receives a promo code
Partial refused without alternative: all or nothing, escalating to chargeback
Gorgias notes that non-standardized "commercial gesture" tickets extend the resolution time by 40% vs policy macros (Gorgias, CS 2026).
Angle #368
The pricing (#237) and damaged parcel (#363) guides mention occasional partial refunds. #368 isolates the partial refund as a CS process: typology, tier thresholds, approval, Shopify execution, and abuse KPIs.
DTC Example
Home decor brand, 38 partial tickets/month, 55% without a Shopify note. After implementing PART-REF policy + tier grid: partial_refund_resolution 92%, partial_abuse_rate 4%, post-partial chargebacks -35%, CSAT gesture 4.3/5.
Partial refund SLA
Decision within 24 hours if the file is complete. Shopify execution within 48 hours post-approval. ARN communication or 3-5 days bank processing time.
Typical volume
On a store with 5,000 orders/month, expect 0.5% to 1% of tickets resulting in a partial refund or explicit request. Peaks occur post-promotion and post-delivery dispute.
Partial vs full refund
Partial = customer keeps product or drops part of claim. Full refund = return or cancellation. Do not mix without the tag part_ref_keep_product.
Cost of framing-free partial refunds
Agent grants 40% on an intact parcel without a policy: margin collapsed + bad precedent set. PART-REF grid caps by tier and reason.
Customer journey touchpoint
Post-delivery dispute, post-return negotiation, promotion correction, partial split order. Rarely pre-purchase except for pricing errors before shipping.
How does it differ from pricing errors and full refunds?
Eight related pieces of content, eight distinct support roles on customer compensation.
Pricing errors (#237)
Pricing errors (#237): delta checkout bug. #368 = general partial post-dispute, not just pricing.
Damaged parcel (#363)
Damaged parcel (#363): partial aesthetic dmg. #368 unifies the partial grid for all motives.
Size exchange (#366)
Size exchange (#366): partial if customer keeps wrong size. #368 documents fashion partial thresholds.
Partial bundle returns
Partial bundle returns: partial kit SKU. #368: partial refund amount, not partial RMA alone.
Escalation matrix
Escalation matrix: tier 2 partial. #368 = amounts grid by agent tier.
Chargebacks
Chargeback prevention: tracked partial reduces dispute. #368 requires Shopify note + PART-REF macro.
Status bot (#370)
The future refund status bot (#370) will reassure post-partial. #368 sets the ops execution policy.
Support templates
Support templates list partial. #368 details 8 PART-REF-* macros and decision tree.
Promise #368
PART-REF policy, PART-REF-GATE flow, tier grid, 8 macros, partial_refund KPI.
Which part_ref scenarios should be tagged before the tier grid?
Map the partial refund scenarios before macros and finance thresholds.
Ten part_ref intents
part_ref_keep_product: keeps product, wants compensationpart_ref_dmg_cosmetic: cosmetic damage, product usablepart_ref_ship_delay: delivery delay, requests shipping fee gesturepart_ref_promo_miss: forgotten code, partial promo deltapart_ref_split_order: part of order OOS or not deliveredpart_ref_service_fail: support error, goodwill compensationpart_ref_negotiation: customer refuses full refund, proposes partialpart_ref_vip_gesture: high LTV, relationship gesturepart_ref_chargeback_risk: chargeback threat, preventive partialpart_ref_supervisor: amount > tier agent cap
Mandatory ticket fields
order_id, order_total, partial_amount, partial_pct, part_ref_intent, keep_product (bool), tier_approval, shopify_refund_id, chargeback_risk_flag.
90-day ticket mining
Export "partial", "gesture", "compensation", "partial refund". Quantify amounts without Shopify note. Prioritize top reasons.
Helpdesk routing
Auto-tag part_ref if keywords or requested amount < order_total. Queue P2 except part_ref_chargeback_risk → P1.
MVP policy prioritization
Week 1: part_ref_dmg_cosmetic + part_ref_keep_product. Week 2: part_ref_ship_delay + promo. Week 3: tier supervisor + finance audit.
How to draft the PART-REF policy and the PART-REF-GATE flow?
The PART-REF policy aligns agents, finance, and escalation on a single partial grid.
Twelve policy blocks
Definition: refund < order_total, customer keeps product or closes dispute
Tier 1 ceiling: max €50 or 15% of order, whichever is lower
Tier 2 ceiling: max €150 or 25% of order
Tier 3 supervisor: > tier 2 or repeat partial 90 days
Authorized reasons: part_ref_* list in section 3
Prohibited reasons: partial to bypass hygiene/final sale return
Written customer agreement: PART-REF-ACCEPT macro before execution
Shopify execution: partial refund API, notes mandatory
No double partial: max 1 partial/order unless supervisor
Credit note vs Credit Card: default credit card refund, credit note if customer requests or credit card expired (#369)
Documentation: part_ref_* tag + partial_amount ticket
Finance review: monthly audit of partial > 20% order margin
Six-step PART-REF-GATE flow
Auth: order_id + dispute context
PART-TRIAGE: intent part_ref_* + reason eligibility
Amount grid: calculation of max % based on reason and tier
Approval: agent tier or supervisor if > ceiling
Customer agreement: PART-REF-ACCEPT macro confirmation
Execution: Shopify partial + closure + CSAT
Reason × ceiling grid
dmg_cosmetic: 10-30% max. ship_delay: 5-15% or shipping fees waived equivalent. promo_miss: exact promo delta max €30. service_fail: 10-20%. vip_gesture: tier 2 max. chargeback_risk: supervisor mandatory.
Calculation of partial_amount
Always min(reason_grid, tier_ceiling, order_total - non_refundable_shipping). Rounded to €0.01. Document formula in ticket.
Which tier grid and which ceilings should be applied?
The PART-REF tier grid prevents agent over-limit actions and speeds up supervisor approval.
Agent tier matrix
Tier 1 frontline: ≤ €50 or 15%, motifs dmg_cosmetic, minor ship_delay
Tier 2 specialist: ≤ €150 or 25%, promo_miss, service_fail, negotiation
Tier 3 supervisor: > €150, chargeback_risk, 2nd partial order, VIP exception
Finance director: > €500 or > 40% order, bulk incident
Repeat partial abuse
Flag if customer > 2 partial 90 days: mandatory supervisor review. Tag partial_abuse_watch. No automatic deny without LTV review.
Customer agreement PART-REF-ACCEPT
“We offer a partial refund of €[X] on your order [order_id]. You keep the product. Do you accept? Reply YES for processing within 48 hours.” Capture email/chat timestamp.
Customer partial refusal
Offer full refund with return if eligible (#365) or supervisor escalation if dispute is legitimate. Do not force partial.
Partial vs store credit voucher
If customer accepts store credit +5% bonus: optional tier 2 policy. Otherwise standard CC refund. Document choice.
Finance coordination
Weekly export partial > tier 1 without supervisor tag = audit alert. Quarterly abuse motifs review.
Which PART-REF-* macros should be imported into the helpdesk?
Eight PART-REF-* macros cover proposal, agreement, and partial confirmation.
PART-REF-PROP-01 (proposal)
"We understand [dispute]. We propose a commercial gesture of [X] € ([Y] % of the amount), without product return. Would you like to accept?"
PART-REF-ACCEPT-01
"Thank you for your confirmation. Partial refund of [X] € initiated within 48 hours to your payment method. Bank processing time: 3-5 business days. Order Ref [order_id]."
PART-REF-DMG-01
"Aesthetic damage noted: gesture of [X] € without return. Product usable according to your description." See #363 partial branch.
PART-REF-SHIP-01
"Delivery delay of [N] days: compensation [X] € or shipping costs refund [Y] €." Express link (#338) if cut-off.
PART-REF-PROMO-01
"Code [CODE] eligible on your order: partial refund delta [X] €. Usage policy: 1×/year/customer." See #237.
PART-REF-ESCALATE-01
"Your request exceeds my limit. A manager will respond to you within 24 hours. Ref. [ticket_id]."
PART-REF-DENY-01
"Our policy does not allow a partial refund for this reason. Options: eligible full return [link] or [alternative]."
PART-REF-CHARGEBACK-01
"To close this file quickly, we propose [X] € subject to written acceptance and waiver of dispute." Legal review if amount > 200 €.
Import helpdesk
Variables {{partial_amount}}, {{partial_pct}}, {{order_id}}. Agent checklist: customer agreement before Shopify refund click.
How do I perform a partial refund on Shopify?
The Shopify partial workflow executes the refund trace and avoids double payment.
Admin/API Execution
Orders → order_id → Refund
Select line items or custom partial amount
Amount = approved grid partial_amount
Note: "PART-REF [intent] ticket [id] tier [N]"
Restock: No if keep_product=true
Tag order part_ref_done + metafield partial_refund_amount
Chargeback proof
Attach customer agreement screenshot + Shopify note + delivery tracking if service dispute. See chargeback guide.
Partial split order
Refund undelivered line item only. Amount = line price + proportional tax. Link split (#356).
Errors to avoid
Refund > order_total. Double partial without supervisor. Partial without written agreement. Dispatched but customer is waiting for credit card refund.
Post-refund communication
Macro PART-REF-ACCEPT + ARN if available. Invite to CSAT. Close ticket part_ref_resolved.
How do I configure the PART-REF ops on the helpdesk?
The PART-REF ops setup connects third-party helpdesk, Shopify, and finance.
Technical Checklist
Draft PART-REF policy section 4
Publish Notion tier grid + agent training
Import 8 PART-REF-* helpdesk macros
Configure partial_amount, tier_approval sidebar fields
Auto-tag part_ref_* keywords
Customer metafield partial_refund_count
Supervisor approval workflow > tier 1 limit
Weekly finance dashboard partial_refund_volume
Agent training 30 min
Role-play: 20% dmg, €15 promo, tier exceedance, partial refusal, chargeback risk escalation.
FAQ page /help
"Can I get a commercial gesture?": explain that partial is rare, standard return is priority. Reduces abusive requests.
Bot alignment
Bot never promises partial without grid. Agent handoff if part_ref requested. Future #370 post-partial status.
Which partial_refund KPIs should be monitored?
Without partial_refund KPIs, finance does not control margins and abuse occurs.
Seven Key Metrics
partial_refund_volume: partials / monthly orders
partial_refund_resolution: resolved within 48h post-agreement / total
partial_amount_avg_pct: average amount / order_total
partial_tier_escalate_rate: supervisor / partials
partial_abuse_rate: customers with 2+ partials in 90 days / partial customers
partial_chargeback_rate: chargebacks post-partial / partials
CSAT intent part_ref: satisfaction with goodwill gesture
DTC Benchmark
Target: partial_refund_resolution > 90%, partial_amount_avg_pct 8-15%, partial_abuse_rate < 5%, partial_chargeback_rate < 2%.
Monthly Finance Review
Top part_ref reasons, partial margin cost vs. avoided full refund. Adjust tier caps if abuse increases.
Partial vs. Full Refund Cost
Track logistics savings when keep_product=true. A 20% partial is often < return shipping cost + 100% refund.
What edge cases and escalations should be anticipated?
These edge cases partial refund require a supervisor or a rejection policy.
B2B or wholesale order
Partial according to commercial contract, not DTC grid. Handoff account manager.
Subscription or installment
Partial on BNPL order: check provider rules. Possible credit note vs partial credit card.
Multi-currency Markets
Partial in original order currency. No approximate conversion by agent.
Gift order partial
Refund to buyer's payment method, not recipient. Buyer agreement if amount > 50 €.
Partial + return same order
Prohibited without supervisor: partial then full return = double compensation. Choose one.
Legal warranty claim
Legal product defect: no partial keep_product warranty substitute. Route warranty (#349).
Negative review threat for partial
Do not grant partial under pressure alone. Supervisor + policy parallel legitimate reason.
Bulk incident 100+ orders
Partial batch script ops + finance director approval. No inconsistent agent-by-agent.
How does Qstomy handle partial refund requests?
Qstomy triages part_ref intents, calculates tier grid and handoff supervisor if amount > agent limit.
Partial refund capabilities
part_ref_triage: classify reason part_ref_*
part_ref_grille_calc: max tier amount + reason
part_ref_accept_collect: customer confirmation YES/NO
part_ref_escalate: supervisor payload amount + history
part_ref_status_handoff: post-execution to #370
Quantified DTC Scenario
Home brand, 42 partial tickets/month, inconsistent amounts.
After Qstomy PART-REF triage + grid: 48% auto-proposal bot amount, partial_refund_resolution 94%, partial_abuse_rate 3%, CSAT 4.4/5.
Explore AI support, Shopify, request a demo.
What is the checklist for launching PART-REF?
Checklist PART-REF (10 steps)
Audit partials 90 days without Shopify note
Draft policy PART-REF section 4
Publish tier grid section 5
Import 8 macros PART-REF-* helpdesk
Configure fields partial_amount sidebar
Workflow supervisor approval limit
Train agents PART-REF-GATE 30 mins
Tag part_ref_* + metafield customer count
Dashboard partial_refund_volume finance weekly
Monthly review abuse + chargeback post-partial
In brief
#368 = partial refund ops, not pricing error alone (#237)
PART-REF-GATE: triage → grid → approval → agreement → Shopify
Tier limits: €50 T1, €150 T2, supervisor beyond
Written customer agreement before execution
KPI partial_refund_resolution: target > 90%
FAQ
Partial = store credit?
No by default. Credit Card refund unless customer requests credit or card is expired (#369).
Can an agent grant 30% freely?
No. Reason × tier grid. Exceeding limit = supervisor.
Customer refuses partial?
Offer full return if eligible or escalate dispute.
Two partials same order?
Prohibited unless supervisor documented exception.
Difference with bot #370?
#368 = policy and execution partial. #370 = refund status post-action.
Going further
Test mystery shop: simulated cosmetic dmg dispute, check 20% grid tier 1 + macro PART-REF-ACCEPT before Shopify refund.
Share this guide #368 with support and finance: a tracked partial refund protects margin and turns a dispute into a negotiated closure.

Enzo
August 5, 2026





