Skip to main content

Salesforce refunds

In the Salesforce Commerce Cloud (SFCC) integration, Ingrid Returns calculates and tracks refund amounts but does not issue refunds in SFCC.

J
Written by Jakub Talarek

What is it?

In the Salesforce Commerce Cloud (SFCC) integration, Ingrid Returns calculates and tracks refund amounts but does not issue refunds in SFCC. When items are processed at the warehouse, Ingrid works out exactly what the customer is owed and signals that the refund is ready. Your system then issues the actual refund in SFCC.

This is a deliberate design boundary: Ingrid Returns makes no refund API calls to SFCC at any point. What Ingrid provides is the calculated amount, refund status tracking, event notifications, and Public API access to the full breakdown — so your system always issues the correct amount without manual calculation.

How it works

  1. A customer starts a return in the Ingrid Returns widget.

  2. The return is confirmed and a carrier label is issued.

  3. Items arrive at the warehouse and are confirmed received — through quality check, a warehouse integration, or a report from your system.

  4. Ingrid calculates the refund amount: item prices minus any return shipping cost, handling fee, or exchange adjustment.

  5. Ingrid records the refund internally and, if you've set up a subscription, sends a REFUND_PENDING_EXTERNAL event to your webhook endpoint when the amount is ready.

  6. Your system fetches the refund details from the Public API and issues the refund in SFCC.

  7. Optionally, your system confirms the refund back to Ingrid, which updates the status so reconciliation stays accurate.

Ingrid never calls SFCC to move money. Your system issues every refund.

Configuration

Webhook setup

Configure webhooks in Returns Back-office → Integrations → Webhook Outgoing Subscriptions. Subscribe at minimum to the REFUND_PENDING_EXTERNAL event, which fires once Ingrid has finished calculating the refund amount and it's ready to issue. The Back-office shows example payloads for each event — review these before building your listener.

Setting

Description

Webhook URL

Your HTTPS endpoint that receives event payloads from Ingrid Returns

Authentication

API key (you generate it), OAuth 2.0, or Microsoft Business Central authentication

Event type

The return lifecycle events you want to act on

Public API access

Generate an API key in Returns Back-office → Settings → API Keys and pass it as x-api-key in your requests.

Endpoint

Description

GET /merchant/return/{returnId}

Full return details, including the calculated refund amount and any refund transactions

GET /merchant/refund/transaction

Paginated list of refund transactions with status

POST /merchant/items/returned

Report items received at the warehouse (if you report receipt via API)

For the full, current list of endpoints — including the refund confirmation endpoint — see the API reference at https://api.ingrid.com/returns/swagger-ui/index.html.

Examples

Automated refund driven by a webhook

A merchant wants refunds issued as soon as items are confirmed at the warehouse.

  1. Warehouse staff confirm receipt in Ingrid Returns using quality check.

  2. Ingrid calculates the refund and sends a REFUND_PENDING_EXTERNAL event to the merchant's endpoint.

  3. The merchant's system reads the refund transaction ID from the payload and fetches the details from the Public API — for example, two items totaling SEK 654.00 with no return shipping fee.

  4. The merchant issues the SEK 654.00 refund in SFCC.

  5. The merchant confirms completion via the Public API.

Result: the refund appears in SFCC within minutes of warehouse confirmation, and Ingrid shows it as completed.

Manual refund processing

A smaller merchant processes refunds on a schedule.

  1. The merchant filters the Returns Back-office for returns received but not yet refunded.

  2. The Back-office shows the calculated refund amount for each return.

  3. The merchant issues the refund manually in SFCC, matching that amount.

  4. Optionally, the merchant confirms the refund via the Public API to keep status in sync.

Result: amounts are calculated centrally by Ingrid, never estimated, and the audit trail stays accurate when confirmation is used.

FAQ

The return is confirmed received but no refund appeared in SFCC. Why?
Ingrid does not issue refunds in SFCC. Your system must issue it — automatically via a webhook listener or manually. Check that your webhook subscription is active and your endpoint is reachable.

Where do I see the calculated refund amount?
In the Returns Back-office on the individual return, or via GET /merchant/return/{returnId}, which returns the Ingrid-calculated amount with a line-by-line breakdown.

The refund shows as pending in Ingrid even though I issued it in SFCC — is that a problem?
It means the refund confirmation step wasn't called. It doesn't affect the actual refund in SFCC, but Ingrid's reconciliation reports will show it as outstanding until you confirm it via the Public API.

Can the Ingrid amount differ from what I issue in SFCC?
Yes. Ingrid calculates from purchase prices and configured deductions. If you issue a different amount — say, extra goodwill — the two won't reconcile automatically. Record the actual amount using the confirmation endpoint.

Is there any case where Ingrid refunds in SFCC automatically?
No. There is no automatic outbound refund call to SFCC in any configuration.

Limitations

Constraint

Type

Details

No automatic refund in SFCC

Hard limit

Ingrid makes no refund API calls to SFCC. Your system issues every refund.

No automatic restock in SFCC

Hard limit

Inventory isn't updated in SFCC after a return. Restock is handled on your side.

Status needs manual confirmation

Configurable behavior

Without calling the confirmation endpoint, refund status stays pending in Ingrid, affecting reconciliation reports.

Webhook delivery failure

Behavior

If your endpoint is unreachable, event delivery may fail. Use Public API polling as a fallback and verify current retry behavior with the Returns team.

Did this answer your question?