Separate the commercial decision from the payment action

A partial refund begins with a business decision: which part of the order will the shop return, why, and who approved that amount? It should not begin with an operator typing a figure into a payment dashboard. The order may include several items, delivery charges, discounts or a returned item in a different condition. Customer service needs to explain the decision; finance needs to trace the original sale and the money returned; the payment operator needs a permitted amount. These are related views of the same case, but they are not the same record. Keeping the original order intact makes the later explanation possible.

Use a short case record before anyone presses Refund: order ID, original payment reference, item or service affected, requested remedy, evidence reviewed, approved refund amount and currency, and decision owner. If the shop offers replacement, store credit or repair as alternatives, record which remedy the customer accepted under the shop's actual policy. Do not present a processor's technical ability to refund as proof that every return is owed or that a policy is lawful. The commercial decision depends on the sale terms and applicable obligations; the payment system only executes the amount that was approved.

Before choosing refund rather than cancellation, confirm the payment state. Stripe's documentation distinguishes canceling an unfinished payment from refunding all or part of a successful one; an uncaptured payment follows a different path from a completed charge. This article uses Stripe to show a concrete workflow, not to imply every Hong Kong merchant uses it. If your provider or payment method has different states, map those states first. A customer screenshot or a pending order label is not by itself enough to prove which payment action is available.

Calculate against the order and previous refunds

Suppose a customer paid HK$800 for two items in one order. The shop agrees to return HK$300 for one item, while the other item and delivery remain payable. Those amounts are an illustrative scenario, not observed shop performance or legal entitlements. Record the calculation and the policy basis in the case. The order still shows an HK$800 original payment; a separate HK$300 refund record shows the adjustment. A view that replaces the order total with HK$500 conceals what was charged and makes the payment trail harder to reconcile. A customer-facing statement can show original payment, approved refund and remaining amount clearly.

Check every refund already associated with the payment before approving another. Stripe says more than one refund can be issued against a charge, but the total cannot exceed the original charge. That processor limit is a useful backstop, not a substitute for business controls. A second staff member could request the same remedy while the first refund is still pending, or a partial refund could already exist for another item. The case view should show prior refund IDs, amounts, reasons and states, and make the remaining refundable amount visible to the approver.

Set an approval boundary that fits the shop's own risk and staffing. For example, the customer service agent can propose a remedy, a manager can approve exceptions to the stated policy, and a payment operator can execute an approved case. A very small team may combine roles, but the record should still distinguish proposal, approval and action. Do not use a made-up amount threshold as if it were a regulation. Choose any threshold from actual exposure, dispute patterns and internal authority, then keep it in the written procedure so staff can apply it consistently.

Issue and track the real refund

In Stripe's Dashboard instructions, the operator finds the payment, chooses Refund payment, enters a different amount for a partial refund, selects a reason and completes the action. Stripe says its bulk Dashboard refund feature handles full payments; partial refunds must be issued individually. If using an API, Stripe accepts an amount in the charge currency's smallest unit, with special handling for currencies whose smallest unit differs. An integration should not infer the amount from a formatted string. Its record must keep currency, approved minor-unit amount, payment reference and returned refund ID together.

A submitted refund is not identical to cash already visible to the customer. Stripe describes pending refunds when available balance is insufficient for certain card transactions, failed refunds, and cases requiring customer action for selected payment methods. It also notes that some early card refunds appear as a reversal of the original charge rather than a separate credit. Therefore the case needs a lifecycle: requested, submitted, pending or action required, succeeded, failed or canceled, with the provider reference and last checked time. Customer messages should match the actual state rather than promise a completed credit immediately.

Stripe says a refund normally returns to the original payment method, not to an arbitrary new card or bank account. This is a useful guardrail when someone asks support to redirect money. Where the original method is closed, the provider and issuing institution determine the next handling, and a refund may fail. Do not improvise a different destination inside the original transaction. Escalate a failed case under a documented alternative payment procedure, verify the customer through the appropriate channel and preserve a link back to the original refund attempt to prevent double payment.

Reconcile the order, processor and customer message

At close of day, compare three facts for each case: the order's original paid amount and approved adjustment, the processor's refund ID and state, and the customer message actually sent. A pending refund belongs on an exception list rather than being treated as a completed outflow. A failed refund needs an owner and next action. A reversal may not appear as a separate customer credit, so support should explain what the provider reports without claiming to see the customer's bank account. Use the provider's balance and reporting records for financial reconciliation; the order screen alone cannot prove settlement.

In the example, the expected commercial picture is an HK$800 original payment and an HK$300 approved refund, leaving HK$500 of the payment attached to the retained goods and agreed charges. That arithmetic is only the order view. The bank payout can differ because processing fees, settlement timing and other transactions are separate items. Stripe's documentation notes original processing fees are not returned on refunds and available balance matters. Reconcile by transaction and refund references before comparing aggregate deposits; do not force the payout to equal one order's net value.

A useful closeout rule is that no case becomes “resolved” merely because an operator clicked a button. Confirm the provider's final state, update the order adjustment, give the customer a truthful explanation and close any warehouse action such as a return inspection. Keep one exception queue for pending, failed, disputed or mismatched cases. Where a customer says the credit is missing, use the provider's available refund reference and status; Stripe notes reference availability varies and a reversal may have no ARN. Review the procedure with one real anonymised case and one failed-state rehearsal before relying on it.

Make the handoff auditable

A practical case timeline should retain each distinct action instead of overwriting a single “refund status” field. It can show the customer's request, evidence received, calculation, approval, submission to the processor, processor response, later state changes and customer notices. Attach the original order and payment references once, then attach every partial refund ID separately. This is especially useful when the same order has several returned items on different days. It allows a reviewer to see whether a second refund was another approved remedy or a duplicate attempt. Limit access to the case details according to staff duties; a traceable process does not require every employee to see every payment or customer detail.

Agree in advance who owns a refund that does not finish normally. A pending request may need a balance or provider check; an action-required request may need a customer message; a failed request may require a new authorised remedy. The case should stay open while that work is assigned. Avoid issuing another payment merely because the first is slow: first confirm the provider's latest state and whether the original credit could still complete. When the case finally closes, record the final customer outcome and the money movement that supports it. This gives customer service a truthful answer and finance a transaction trail without treating a dashboard click as settlement evidence.

A weekly exception review can catch cases that daily closeout could not resolve. List refunds still pending, those awaiting customer details, failed attempts, and orders whose approved adjustment differs from the provider record. Assign one owner and a next-check date to each case, then document the answer given to the customer. This is operational discipline rather than a claim that every provider has the same reports or timing. If the payment provider offers a different set of states, keep the same three-way comparison between order decision, provider outcome and customer communication.

Checks before release

  • Is the amount approved and tied to the original order?
  • Have previous refunds and the payment state been checked?
  • Does closeout follow the provider final state and customer message?

Sources & further reading