Skip to content
Log in

Refund an order (without a POS register)

On this page

Use this process to refund an order when the customer is not at a register, for example a web order refunded by phone or email. It applies to any order, whichever channel created it.

If the customer is returning items at a register, including a web order brought back in store, process the return there instead. See Item returns - refund and exchange at POS.

Choose how to refund

There is no refund button on the Order record in Salesforce. Outside the register, a refund goes through one of two routes:

Route Use it when How the money moves
Refund through the StoreConnect API You have a developer integration that calls the StoreConnect API, and the order was paid through a provider the API can refund StoreConnect sends the refund to the payment provider and records it on the order
Record a refund in Salesforce You have no integration, or the provider is not on the API’s list You issue the refund in the payment provider’s dashboard and record it in Salesforce yourself

Refund through the StoreConnect API

The StoreConnect API refunds an order item by item, against the payment that paid for it. A developer builds this into your own tools; the requests are described in StoreConnect API.

The API can refund payments taken through these providers:

  • Adyen and Adyen ACH
  • Afterpay
  • Authorize.Net
  • Braintree
  • CyberSource
  • eWAY (not eWAY v2)
  • Latitude
  • PayPal
  • PayWay
  • Square
  • Stripe and Stripe ACH
  • Tyro
  • Windcave
  • Zip Pay AU

It can also return an Account Credit or loyalty points payment to the same balance it came from. A payment made through any other provider, such as eWAY v2, Authorize.Net ACH, or NMI, cannot be refunded through the API. Use Record a refund in Salesforce for those.

A refund cannot exceed what is left to refund on the original payment or on the order item, so earlier partial refunds are taken into account.

A processed refund appears on the original order as a Payment with a negative Amount and a Status of Success. Its Linked Payment field points to the payment it refunds, and its Reason field holds the reason given in the request.

Record a refund in Salesforce

Use this process when you cannot refund through the API. The refund is recorded as its own order with negative quantities, so the original order keeps a true history of the sale.

Before you start

  • Negative quantities are enabled for order products. In Salesforce Setup, open Order Settings, select Enable Negative Quantities for Order Products, and save.

Create the refund order

  1. Open the original Order and note its products, quantities, and payment transaction reference number.
  2. Create a new Order linked to the same Account, Contact, Store, and original order.
  3. Add the products being refunded as Order Products with negative quantities, for example -1 instead of 1. For a partial refund, add only those products.
  4. Check that the order total shows the negative refund amount, then activate the order.
  5. In your payment provider’s dashboard, find the original transaction by its reference number and refund the full or partial amount. Note the refund reference number the provider gives you.
  6. On the refund order, add a Payment record with a negative Amount, for example -50.00, set Status to Success, and enter the provider’s refund reference in Transaction Number.

The refund order now shows the negative total with a matching negative payment, and the original order is unchanged.

Do not add a negative payment to the original order instead. It changes the record of the sale, which causes problems for audits and integrations.

If your payment provider’s transaction URL can be built from data already in Salesforce, such as the transaction ID, a formula field on the Order or Payment object can generate a link straight to the transaction. For a provider whose URLs follow the pattern https://dashboard.provider.com/transactions/{transaction_id}, the formula constructs that URL from the stored reference number, which saves your team searching the provider’s portal. Ask your Salesforce administrator to set it up.

Was this article helpful?

Was this article helpful?