Los artículos de ayuda existen en alemán e inglés. Aquí los lees en inglés.
Instalación
How do refunds reach Metrunio?
Your shop server reports a refund through the Server Events API as refund, with the same order number, environment and currency as the purchase. Metrunio then reduces the value of that order. If it finds no matching purchase for 24 hours, it does not apply the refund and deletes it. Under “Data status”, the finding REFUND_WITHOUT_PURCHASE then counts how many there were per website and day, without order numbers.
How do I report a refund, and how can I tell that it has been applied?
A refund is a correction to a purchase, not a new measurement in the browser. Your shop server reports it through the Server Events API; a shop integration such as the Shopify app does this by itself.
POST /v1/server/events
Authorization: Bearer <server key>
{
"site_id": "site_…",
"events": [{
"event_id": "refund-12345-1",
"event_type": "refund",
"occurred_at": "2026-09-29T10:15:00Z",
"order_id": "12345",
"value": "10.00",
"currency": "EUR"
}]
}What “matching” means
- The same order number as the purchase, character for character. “#1001” and “1001” are two orders.
- The same environment: a test refund finds no purchase from production.
- The same currency. A refund without an amount applies to the whole purchase and needs none.
- A separate event_id per refund. The same event_id twice counts once; that protects against double delivery. Two partial refunds of the same amount therefore need two different event_ids.
When the refund arrives before the purchase
This happens: two webhooks overtake each other, a historical import runs in any order, or the purchase is stuck in a retry. Metrunio then waits up to 24 hours for the purchase: every half minute at first, later once an hour. When it arrives, the refund is applied as if it had come afterwards. The 24 hours count from the first processing attempt, not from receipt; after an outage the period does not start out already expired.
If no matching purchase arrives in that time, Metrunio does not apply the refund and deletes it. Under “Data status”, the finding REFUND_WITHOUT_PURCHASE counts how many refunds were discarded this way per website and day. Metrunio keeps no order numbers or other identifiers for this, because such a refund often belongs to a purchase that could not be stored. You can find out which ones they were in your shop by the day. The most common cause is order numbers written differently for the purchase and the refund. If the purchase does arrive later, send the refund again with a new event_id. The same event_id counts as already received.
How you can tell it has been applied
- Conversions: the order shows as “refunded” or “partly refunded”, with the refunded amount.
- Overview: “Revenue measured” is calculated after refunds; the tile’s explanation gives the amount before refunds and the total refunded. Attributed revenue and the figures per channel and campaign are also calculated after refunds.
- Export and read API: the column “wert” (value) is the original purchase value, “erstattet” (refundedValue) the sum of refunds, and “status” says refunded or partially_refunded. Nothing is subtracted inside the column; the refund sits next to it, so you can reconcile both against your shop.
Note
Gross or net? value is what your shop reports as the order value: usually the amount the customer pays, including tax. You send the net value separately as netValue; how a refund reduces the contribution margin is covered in “How do I send cart, new customers and margin from my shop?”.
In the demo shop
The demo shop simulates refunds in the bundled demo tenant, in full or in part. It reports “Erstattung angenommen” (refund accepted) once the collector has accepted it; the demo shop speaks German only. The refund is applied when the order shows as refunded under “Orders & goals”. If the shop measures in your own tenant, the button is locked: there the tracking script reports the purchase from the browser, and refunds would come through your tenant’s Server Events API. The demo shop does not have the server key for that.
Revisado por última vez el 13 oct 2026
En el portal del cliente
También se pregunta
- Refund does not show up in reports
- Refund is not deducted
- Report a refund to Metrunio
- Report a partial refund
- Refund sent before the purchase
- How long does a refund wait for its purchase?
- REFUND_WITHOUT_PURCHASE
- Is a refund counted twice?
- Is revenue before or after refunds?
- Simulate a refund in the demo shop
Artículos relacionados
- How do I report conversions server-side?
How do I send events from my shop, CRM or backend?
Through POST /v1/server/events to the collector, with the server key in the authorization header. The portal shows the address and the ready-made call for your website under “Setup” on the “Server Events API” tab. The call is independent of the browser and therefore robust against ad blockers and short-lived cookies.
- How do I send cart, new customers and margin from my shop?
How do I pass line items, the net value, the cost of goods and whether it was a new customer?
On checkout,
tracker.conversion(…)and the Server Events API also acceptnewCustomer, the breakdown of the order value (netValue,taxValue,shippingValue,discountValue,costOfGoods) and the cart line items (items). All fields are optional; without them Metrunio measures as before. With them you get new-customer cost, contribution margin and product-level reporting. - What do the error codes mean?
The collector answers with a code. What does it mean?
Every rejection carries a code together with a title, explanation, data effect and resolution steps. This table lists all codes of the collector and of processing with their meaning.
- Where do I install tracking in my shop system?
How do I install Metrunio in WordPress, Shopify, Shopware or Webflow?
For Shopify, Shopware 6 and WordPress with WooCommerce there is an extension that measures visits, consent and orders at once. The other systems have a place for custom head code; the table names the route per system. Without an extension, we additionally recommend the Server Events API for purchases, because it works independently of the browser.