How can i keep vat treatment consistent between web checkout and in-app subscriptions?

We had customers buying the same subscription on web and inside the app but seeing different VAT treatments on their invoices. That caused support tickets and confusion.

I tried syncing subscription status and tax metadata from the web checkout to our mobile entitlement system so invoices and entitlements matched. The key bits were passing tax rate, VAT id, and a timestamped receipt into our subscription sync.

Has anyone successfully kept VAT treatment identical across web checkouts and mobile app entitlements? What did you sync and where did you store the tax info?

We pass a small tax payload when creating the subscription on the web and persist it with the user record.

Then we push that payload to our subscription service so the app reads the same tax data. It avoided mismatched invoices.

I used web2wave to centralize the web checkout then sync to RevenueCat for app entitlements which made the flow simpler.

I keep a canonical purchase record in the web backend and mirror essential tax fields into the mobile entitlement system. That way the invoice a user sees matches the app state.

With web-based paywalls I could change the fields immediately and the app picked up the correct entitlement without a new build.

Store tax rate and VAT id with the order and sync those to your subscription backend.

That value should be the source of truth for invoices and app entitlements to avoid surprises.

Make the web backend the source of truth for purchase metadata. When a web sale happens capture billing country, VAT id, tax rate, and the gateway receipt id. Push a minimal record to your subscription platform so the app has the same purchase metadata.

Ensure retry logic on the sync and reconcile mismatches nightly. This prevents users from seeing different VAT treatment depending on platform.

I always send VAT id and tax amount to the app backend.

That keeps invoices consistent across platforms.