How to identify reward points and virtual currency orders in payment webhooks

Last updated: July 6, 2026

How to identify reward points and virtual currency orders in payment webhooks

Some completed orders are not real-money payments. This most commonly happens when an order is paid entirely with reward points or virtual currency.

How to identify these orders

The most reliable signal is payment_method:

  • payment_method = zero_payments means the order was completed without a real-money charge.

You can also use currency as an additional hint:

  • RP = reward points
  • VC = virtual currency

Do not rely on receipt_number to distinguish them. A receipt number can be generated for any completed order, including zero-payment orders.

What to expect in amount and revenue fields

For reward-points orders, there is no real payment, so real-money amount fields are not populated.

  • payment_amount_usd may be null
  • revenue_usd may be null

This is expected behavior for orders that do not involve a real-money charge.

Recommendation for analytics

To keep revenue reporting correct, do one of the following:

  • write these orders to analytics with 0 USD, or
  • mark them as a separate order type and exclude them from revenue metrics.

Can item source help?

Yes. Product sources such as InternalCurrency_RP_30 can be used as a practical identifier for this kind of order, even if the source value itself does not describe what the item grants.