Hey Shopify merchants,
I run into a lot of subscription/box businesses here and I’m doing some early research before building a small tool, so wanted to ask directly rather than guess.
For those running subscriptions on Recharge (or Shopify’s native subscriptions): when it’s time to reconcile your books each month, how do you currently separate recurring subscription revenue from one-time orders and refunds? Is that clean, or does it take manual work?
Also curious — has anyone been caught off guard by a spike in failed payments or a subscription issue you only found out about after the fact (not from the dashboard, but from a customer complaint or noticing churn later)?
Trying to figure out if this is a real pain point before I spend time building something. Appreciate any honest answers, even “this isn’t really an issue for me.”
This is a very real headache, especially once subscription volume scales up.
On the reconciliation side, most merchants struggle because standard Shopify reports mix line items together unless you rely on third-party bridge tools (like A2X) or filter by specific order tags/attributes injected by Recharge. Without automated mapping set up at the order-tag level, splitting recurring revenue from one-time purchases usually means exporting raw CSVs and manually pivoting data every month.
As for failed payments, standard dunning automated emails pick up routine card declines, but merchants rarely get real-time threshold alerts when a sudden payment gateway glitch or card processor rule update causes an abnormal spike in failed renewals.
Are you looking at building a lightweight reconciliation reporting module first, or focusing more on automated real-time alert notifications for dunning spikes?
Hey @Rohit_1997 ,
I think this can be a genuine pain point especially for stores with a growing subscription business. While Shopify and subscription apps provide reporting, many merchants still end up doing some manual reconciliation to separate recurring subscription revenue, one time orders, and refunds for accounting purposes.
Proactive monitoring is another area where there’s room for improvement. Failed payments or subscription issues can sometimes go unnoticed until customers reach out or merchants notice higher churn. A tool that provides clearer reconciliation and timely alerts could be valuable, particularly if it reduces manual work without adding complexity.
If you found my reply helpful feel free to mark it as the solution so it can help others with a similar question.
Thank You !
For reconciliation, Recharge tags every order it creates with a subscription identifier and order type attribute (subscription vs onetime vs recurring), which is exposed through the Shopify Admin API on the order’s tags and note_attributes fields. Instead of exporting CSVs monthly, pull orders through the Admin GraphQL API filtered by tag, or better, listen to the orders/create and orders/updated webhooks and store the tag data in your own database as orders come in. That gives you a running, always current split between recurring and one time revenue instead of a monthly manual pivot, and it survives refunds too since refund events fire their own webhook (refunds/create) tied to the original order ID, so you can net them out automatically rather than reconciling them by hand.
For failed payments, the fix is subscribing to the right webhook topics directly instead of relying on dashboard checking. Recharge fires its own webhook events for charge failures, and on the Shopify native subscriptions side the relevant topics are subscription_billing_attempts/failure and subscription_billing_attempts/success. Build a listener that logs every failure event with a timestamp, then run a simple threshold check, for example more than X failures in a rolling hour compared to your normal baseline, and fire an alert through Slack or email when that threshold is crossed. This catches gateway wide issues immediately instead of days later through churn, because a processor rule change or outage shows up as a spike in this event stream before it shows up anywhere else.
Both of these are standard webhook consumption, no polling, no scraping the dashboard. If you’re validating a product idea here, the alerting layer is the stronger wedge, reconciliation tools already exist (A2X, Recharge’s own analytics), but real time failed payment spike detection with a sensible threshold is genuinely underserved.