Through the API
With Braintree, your server reports the sale to Meritt through the API, in three calls, as soon as Braintree confirms the payment. Attribution and the ledger are the same as for Stripe.
POST /v1/conversions to report the sale, POST /v1/identify to tie a customer to a visit, POST /v1/conversions/reverse for a refund. A sale sent twice is counted once.custom_fields at checkout.transaction.sale call is what counts, and that is where your server reports. Custom fields are declared first in the Control Panel.custom_fields.subscription_charged_successfully (or a card sale is approved), call POST /v1/conversions with the amount, the currency, the click and the customer id.POST /v1/conversions/reverse with the payment reference.One key, and two calls added to your webhook handling.
At that moment the payment is not confirmed, and when it is, in the webhook, the cookie is gone. The Braintree passthrough field carries the click between the two.
No. With the same reference, the second call answers “already received” and nothing is added.
They settle later: transaction_settled signals it, and that is when the sale is reported.
The subscription creation docs do not mention them. Tie the customer instead: the customer id is enough for renewals to go to the right affiliate.
Braintree documentation checked on October 19, 2026: developer.paypal.com › subscription, developer.paypal.com › transaction, developer.paypal.com › sale
Your affiliates' links run through your site, so ad blockers do not cut them.
An affiliate program on Recurly: the click in a custom field, the paid invoice and the refund reported to Meritt through the API.
Meritt reads the sales, refunds and reversals of your PayPal account and finds the click in custom_id.
Free until your first commission. No card asked for.