POST /api/partner-network/postbacks/<public-tracking-key>/conversions
Report a paid one-time order that carries a Refermate click. Post only orders with a click; an order without one is rejected with 422 missing_referral_click.
| Field | Description |
|---|
order_idRequired | Your stable order ID, up to 500 characters. It is the idempotency key: resending the same order is safe. |
|---|
click_idRequired | The rm_click value the capture script stored for this shopper. An order without one is rejected with 422 missing_referral_click. |
|---|
currencyRequired | Three-letter currency code. Only USD is accepted. |
|---|
order_subtotal_centsRequired | Order subtotal in cents, a whole number of 0 or more. |
|---|
occurred_atRequired | When it happened, in ISO 8601 with an explicit offset (Z or ±HH:MM), for example 2026-09-28T17:05:00.000Z. Any number of fractional digits is accepted; Refermate keeps milliseconds and drops the rest. JavaScript toISOString(), .NET "o", Java Instant.toString(), and Python isoformat() on a timezone-aware datetime all qualify. A time without an offset is rejected. |
|---|
eligible_amount_centsOptional | The commissionable part of the subtotal. Defaults to the subtotal and cannot exceed it. |
|---|
line_itemsOptional | [{ product_id, amount_minor_units, quantity }], summing to the eligible amount. Required when the program pays per product. |
|---|
order_nameOptional | A customer-facing order number. |
|---|
customer_idOptional | Your customer ID, for your own reporting. |
|---|
discount_codeOptional | A discount code used on the order. |
|---|
metadataOptional | An object of your own data, up to 4 KiB. |
|---|
testOptional | true only for the verification order from your setup page. |
|---|
{
"click_id": "a1B2c3D4e5F6g7H8",
"currency": "USD",
"eligible_amount_cents": 10000,
"occurred_at": "2026-09-28T17:05:00.000Z",
"order_id": "ORDER-1001",
"order_name": "#1001",
"order_subtotal_cents": 10000
}
POST /api/partner-network/postbacks/<public-tracking-key>/reversals
Report a refund or cancellation of a one-time order. Leave out amount_refunded_cents, or send the full subtotal, to reverse the order. For a partial refund, Refermate reduces the commission in proportion, but only within the program's refund hold; after it, a partial refund returns 422 partial_refund_not_adjusted and only a full refund reverses. A refund that arrives after Refermate has billed you for the commission returns 422 paid_conversion_not_auto_reversed and reverses nothing; contact support to settle it.
| Field | Description |
|---|
order_idRequired | The same order ID you sent to conversions. |
|---|
amount_refunded_centsOptional | Total refunded on this order so far, in cents, on the same basis as order_subtotal_cents (leave out refunded tax and shipping). Send the running total, not the latest refund. Resending a total already recorded returns that first answer, even after you are billed or the order is put on hold. Requires occurred_at. A new total lower than one already recorded returns 409 refund_amount_conflict unless its occurred_at is earlier. Above the subtotal returns 422 invalid_amounts. |
|---|
occurred_atOptional | When it happened, in the same format: ISO 8601 with an explicit offset. Defaults to when we receive the request; send it when you replay a late event. |
|---|
reasonOptional | A short reason such as refunded or cancelled. |
|---|
{
"occurred_at": "2026-10-02T09:30:00.000Z",
"order_id": "ORDER-1001",
"reason": "refunded"
}
POST /api/partner-network/postbacks/<public-tracking-key>/v2/recurring/relationships
Bind a new subscription to the Refermate click that started it. Send this once, when the subscription is created. Add a subscription commission rule for the product in Partners first: a bind with no matching rule returns no_matching_subscription_rule and keeps that subscription at zero commission, even after you add a rule.
| Field | Description |
|---|
event_idRequired | Your unique ID for this event; resending it is safe. |
|---|
relationship_idRequired | Your stable subscription ID. |
|---|
click_idRequired | The rm_click value for this shopper. |
|---|
product_idRequired | The subscribed product. |
|---|
price_idOptional | The subscribed price or plan. |
|---|
currencyRequired | Only USD is accepted. |
|---|
environmentRequired | Always live for production traffic. |
|---|
occurred_atOptional | When it happened, in the same format: ISO 8601 with an explicit offset. Defaults to when we receive the request; send it when you replay a late event. |
|---|
{
"click_id": "a1B2c3D4e5F6g7H8",
"currency": "USD",
"environment": "live",
"event_id": "evt-sub-1001-created",
"occurred_at": "2026-09-28T17:05:00.000Z",
"product_id": "plan-pro",
"relationship_id": "sub-1001"
}
POST /api/partner-network/postbacks/<public-tracking-key>/v2/recurring/billing-events
Report each invoice of a bound subscription, paid or not. Never send a click here: the relationship already names it.
| Field | Description |
|---|
event_idRequired | Your unique ID for this event. |
|---|
relationship_idRequired | The subscription ID you bound. |
|---|
invoice_idRequired | Your invoice ID. |
|---|
payment_stateRequired | paid, failed, open, void, or uncollectible. Only paid can earn a reward. |
|---|
amount_paid_minor_unitsRequired | Amount paid, in cents. |
|---|
eligible_amount_minor_unitsOptional | The commissionable part. Defaults to the amount paid and cannot exceed it. |
|---|
product_idRequired | The billed product. A product or price different from the bound one holds the subscription for review. |
|---|
price_idOptional | The billed price or plan. |
|---|
currencyRequired | Only USD is accepted. |
|---|
environmentRequired | Always live for production traffic. |
|---|
occurred_atRequired | When it happened, in ISO 8601 with an explicit offset (Z or ±HH:MM), for example 2026-09-28T17:05:00.000Z. Any number of fractional digits is accepted; Refermate keeps milliseconds and drops the rest. JavaScript toISOString(), .NET "o", Java Instant.toString(), and Python isoformat() on a timezone-aware datetime all qualify. A time without an offset is rejected. |
|---|
{
"amount_paid_minor_units": 1999,
"currency": "USD",
"environment": "live",
"event_id": "evt-inv-1001-paid",
"invoice_id": "inv-1001",
"occurred_at": "2026-09-28T17:05:00.000Z",
"payment_state": "paid",
"product_id": "plan-pro",
"relationship_id": "sub-1001"
}
POST /api/partner-network/postbacks/<public-tracking-key>/v2/recurring/reversals
Report a full refund of one subscription invoice. It takes no amount: a body with a refund amount returns 422 unsupported_reversal_type and reverses nothing.
| Field | Description |
|---|
event_idRequired | Your unique ID for this event. |
|---|
relationship_idRequired | The subscription ID. |
|---|
invoice_idRequired | The refunded invoice. |
|---|
reasonOptional | A short reason. |
|---|
environmentRequired | Always live for production traffic. |
|---|
occurred_atOptional | When it happened, in the same format: ISO 8601 with an explicit offset. Defaults to when we receive the request; send it when you replay a late event. |
|---|
{
"environment": "live",
"event_id": "evt-inv-1001-refunded",
"invoice_id": "inv-1001",
"occurred_at": "2026-10-02T09:30:00.000Z",
"reason": "refunded",
"relationship_id": "sub-1001"
}
POST /api/partner-network/postbacks/<public-tracking-key>/v2/recurring/relationships/end
Report that a subscription ended. Later invoices for it are rejected.
| Field | Description |
|---|
event_idRequired | Your unique ID for this event. |
|---|
relationship_idRequired | The subscription ID. |
|---|
reasonOptional | A short reason. |
|---|
environmentRequired | Always live for production traffic. |
|---|
occurred_atOptional | When it happened, in the same format: ISO 8601 with an explicit offset. Defaults to when we receive the request; send it when you replay a late event. |
|---|
{
"environment": "live",
"event_id": "evt-sub-1001-ended",
"occurred_at": "2026-12-28T17:05:00.000Z",
"reason": "canceled",
"relationship_id": "sub-1001"
}