Skip to main content
Question

External Purchases API access for a Brazilian payment provider (Asaas): lifecycle mapping questions

  • Oct 29, 2026 9:05 PM UTC
  • 0 replies
  • 6 views

Forum|alt.badge.img

Hi RevenueCat team 👋

We run a subscription app (iOS + Android via RevenueCat) and also sell subscriptions on the web through Asaas, a Brazilian payment provider (credit card, Pix, boleto). It is not one of the supported Web billing engines, and switching to Stripe/Paddle isn't an option for us right now because of local payment methods and our partner-pricing setup.

What we do today: when an Asaas payment is confirmed, our backend grants a promotional entitlement via POST /v1/subscribers/{id}/entitlements/{entitlement}/promotional and stamps plan attributes on the customer. Access works, but web revenue doesn't show up in Charts (MRR, churn, trial conversion, LTV), so RevenueCat only covers half of our business.

We read the External Purchases API thread for Airwallex and would like to request access as well, for our production project and our staging project (we'd like to validate there first with environment: sandbox). Happy to share both project IDs privately via DM, just let me know who to send them to.

Our backend already keeps an idempotent ledger of every Asaas webhook (payment confirmed/received, overdue, refunded, subscription deleted), so we can post each status change and each payment. Before building it, we have some questions the public docs don't cover:

  1. Installments: our annual plan can be paid in installments on a credit card, so Asaas sends one charge per installment. Should we post one annual purchase with the full price, or one payment per installment? Which one keeps MRR/ARR correct in Charts?
  2. Currency: prices are in BRL. Can we send price + currency: BRL and have Charts convert it the same way it does for store purchases?
  3. Trials: we offer a 7-day trial on the web. Is a trial posted as an initial purchase with price 0 and then a separate conversion event, as other integrators describe?
  4. Refunds: do we post a negative amount, a refunded/expired status, or both?
  5. Migration: existing web subscribers currently have promotional grants. What is the recommended way to move them to external purchases without a gap in access or double-counting in Charts? Should we revoke the promotional entitlement right after posting the external purchase?
  6. Webhooks: we also consume RevenueCat webhooks. We assume events for these purchases arrive with store: EXTERNAL, so we can tell them apart from store events. Is that right?
  7. Plan changes: we have two plan tiers on the same entitlement. Since product changes aren't supported in the beta, is expiring the old subscription and posting a new one the recommended approach?
  8. Billing: does revenue tracked through the External Purchases API count toward our MTR the same way store revenue does?

Thanks a lot! Happy to share feedback on the beta as we integrate.