> ## Documentation Index
> Fetch the complete documentation index at: https://help.autoady.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Measure confirmed payments and refunds

> Send backend outcomes, check integer amounts and identities, and verify net revenue in the right environment.

Website revenue is based on server-confirmed payments. A browser purchase-button click or successful form submission is not a paid order. Use **Websites → \[your site] → Confirmed revenue → Set up revenue tracking** with the developer who maintains your payment backend.

## Prepare a secure server integration

1. A website owner or editor opens **Install & settings** and generates a server key. Store it in the backend's secret store. Never put it in browser code, a URL, or a repository.
2. Give your developer the collector URL shown by the setup panel. Paid and refund outcomes are sent to its `/v1/outcomes` path using the public-key header and server-key authorization.
3. Use actual confirmed payment records, the website/provider/store/order identity, a revision ID, currency, and payment time. Amounts are integer minor units: EUR 100.00 is `10000`, not `100`.
4. Use a new transport ID for each new batch. Retry delivery with the identical transport ID and body; changing a body under the same transport ID causes a conflict. Keep the original payment revision or refund identity so retrying cannot invent a second financial outcome.

The detailed sample in **Set up revenue tracking** gives your developer the current request shape. This setup does not connect Shopify or convert browser events into payment records.

## Verify before Production

Start in **Test** with one paid sample and one refund sample. Confirm the receipt, wait for processing, and refresh the report for the same environment and dates. Check gross amount, refunded amount, currency, and net result against the source payment records.

Refunds use the same website, provider, store, and order identity, with a distinct refund ID and refunded amount in minor units. Do not submit another paid event to represent a correction. Verify duplicate delivery and a partial refund before switching to **Production**.

## Interpret the report

The totals cover the selected reporting window and environment. Conversion rate or return on ad spend can remain unavailable when the required visit, conversion, or spend inputs are missing; a received payment alone does not supply them.

If revenue is missing or duplicated, compare the receipt, transport and order identities, environment, timestamps, currency, and processing state before resending. Preserve those references for [support](/help/contact), with keys removed. If a server key leaks, use [key rotation](/websites/manage) and update the backend immediately.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.