Skip to main content

Pre-Checkout Tax Preview & Target Net Revenue API for One-Time Payments

Problem

We operate Code Nexus, a cloud hosting platform where customers purchase prepaid USD wallet credits to pay for hosting services.

We use Creem as our Merchant of Record for one-time payments.

Our biggest challenge is that we cannot accurately calculate the retail price required to receive a specific net amount after Creem's processing fees and the customer's applicable VAT/GST/Sales Tax.

Creem calculates the final tax only during checkout, based on the buyer's country, billing address, and business/VAT status.

However, Creem's processing fee is calculated on the total payment including tax.

This means that the merchant's net revenue changes depending on the customer's tax jurisdiction, even if the product price remains the same.

Real Example

A customer wants to purchase $10.00 in wallet credits.

Our requirements are:

  • Customer receives exactly $10.00 in wallet credits.

  • Creem calculates and collects the applicable local taxes.

  • We want approximately $10.00 in net merchant transaction proceeds after Creem's processing fees.

  • Customers see transparent and accurate pricing before payment.

For example, assuming a 19% German VAT rate and a processing fee of 3.9% + $0.40:

  • Wallet credit: $10.00

  • Required retail base price: approximately $10.91

  • VAT (19%): approximately $2.07

  • Customer total: approximately $12.98

  • Creem processing fee: approximately $0.91

  • Merchant net proceeds: approximately $10.00

However, we cannot reliably determine the required price before checkout, because the exact tax treatment is only known to Creem.

This becomes even more challenging with:

  • Different VAT/GST rates across countries.

  • US state-level sales taxes.

  • Canadian provincial taxes.

  • EU B2B reverse-charge exemptions.

  • Customers changing their billing country during checkout.

  • Different tax treatments for digital services.

  • Tax-inclusive versus tax-exclusive pricing.

  • Rounding differences.

We also observed a sandbox checkout where a $10.91 price was displayed as $9.17 subtotal + $1.74 German VAT, rather than VAT being added on top. This makes it especially important to expose the effective tax mode and actual calculation.

Requested Feature 1: Pre-Checkout Tax Preview API

Please provide an official API endpoint that calculates the applicable taxes without creating or charging a payment.

For example, an endpoint conceptually similar to:

POST /v1/checkouts/preview

Suggested inputs:

  • Product ID.

  • Custom price and currency.

  • Quantity.

  • Tax mode (inclusive or exclusive).

  • Billing country.

  • State/province and postal code when required.

  • Optional validated customer or business tax information.

Suggested response:

  • Base product price.

  • Effective tax mode.

  • Tax rate.

  • Tax amount.

  • Tax jurisdiction.

  • Whether B2B reverse charge applies.

  • Total customer payment.

  • Estimated Creem processing fee.

  • Estimated merchant net proceeds.

  • Quote expiration or validity information.

The preview should use the same tax calculation engine as the actual Creem checkout, rather than requiring merchants to maintain separate international tax tables.

Requested Feature 2: Target Net Revenue / Gross-Up Pricing

An even better solution would be an optional feature that allows merchants to specify the net amount they want to receive.

For example:

Target merchant net: $10.00

Creem would calculate the appropriate retail selling price based on:

  1. The target net amount.

  2. Applicable customer taxes.

  3. Creem's actual processing fee schedule.

  4. The customer's tax jurisdiction.

  5. Applicable rounding rules.

Creem would then return the suggested selling price and a complete breakdown.

This should be treated as product pricing, not a separate card-processing surcharge.

It should also respect regional restrictions and clearly disclose the final retail price to customers.

Requested Feature 3: Quote Consistency

If the buyer changes their billing address, tax country, or VAT details during checkout, Creem should:

  • Automatically recalculate the quote.

  • Update the displayed total.

  • Recalculate the estimated merchant net.

  • Clearly show any changes before the customer confirms payment.

Ideally, merchants could generate a short-lived pricing quote that can be passed to Checkout, ensuring consistent pricing assumptions without charging the customer prematurely.

We understand that exact net proceeds may still depend on payment-method-specific fees or other factors that are unknown until settlement. Those limitations can be explicitly reported rather than presenting estimates as guaranteed amounts.

Why This Matters

This feature is particularly valuable for:

  • Prepaid wallet top-ups.

  • API credit platforms.

  • Cloud hosting providers.

  • AI credit purchases.

  • Usage-based SaaS platforms.

  • Digital marketplaces.

  • International one-time digital purchases.

For example, when a customer purchases $10 in prepaid credits, the merchant may need to preserve the full $10 as an internal service balance.

If the merchant receives only $8–$9 after taxes and payment fees, it creates a financial mismatch between the issued customer credits and the actual merchant proceeds.

Maintaining our own global tax engine is not an ideal solution because Creem is the Merchant of Record and ultimately determines the actual taxes collected.

Suggested Minimum Viable Implementation

If a full automated gross-up engine is too complex initially, even a simple read-only tax and fee preview endpoint for one-time checkouts would solve most of this problem.

Merchants could calculate the appropriate retail markup themselves while relying on Creem's authoritative tax calculations.

This would be a valuable improvement for developers building international SaaS and prepaid credit platforms.

Thank you for considering this feature!

Code Nexus Team
https://codnex.xyz

Log in to comment and vote

No comments yet

Be the first to share your thoughts.