Billing for an app's sold products from a merchant store

17 0 2

I have an app which adds a product to merchants' store, which gets sold from the merchant store. I'm looking into how the app will get paid for the sales of it's product on the merchant stores.

I've looked into the Shopify Billing APIs and found that there are 3 ways to setup Billing model

1. One time charge
2. Fixed monthly fee
3. Variable monthly based on app Usage

I don't want to set up a One time charge or Fixed monthly fee. So I'm left with the last option i.e UsageCharge with which I want to set up billing based on how many products(my app's product) have been sold from a merchant's store. How is it possible?

For example, if the merchant store sells 10 of my products, how can I get paid for those products sales?

I'm still researching on this, and I came across UsageCharge. Is there a way that this could be used for my use-case to set up pricing based on number of products sold(my app's product)?

Replies 2 (2)
Shopify Expert
24 4 6

Hi @seriousdev 

I develop an app that does the same kind of thing. Every time the product is sold we do a usage charge immediately.

What you need to watch out for is that the merchant must authorize a set monthly total that you can make usage charges up to. This needs to be authorized before you would know exactly how many products will get sold from that merchant - which is tricky as asking to authorize a large number might scare some merchants away but asking too little will cause you billing problems.

Some basic strategies are to ask - on app install - the average number of orders a store normally receives per month and make some calculation based on that. This won't work for new stores

You could also just check the shopify plan they are on and ask for higher authorization for advanced and plus stores

Just make sure you store whether a billing attempt passed or failed so you could recharge the failed ones in a subsequent month or in a separate invoice


Jordan Holmes
Shopify Expert and Ruby on Rails Developer
17 0 2

Yes, it's a tricky scenario to be dealing with. We have but no option to make an approximate amount to be used as `capped_amount`.  Once, the `capped_amount` is reached, I have two options;
First is to change status of the product to `archived` which hides the product from store and hence no un-billed orders can be made in this case.

The Second option is that I generate a  new RecurringCharge plan and ask the merchant to approve the very next time he visits my app, and as long as the new plan is not approved I'm manually tracking the billing in my database. When the new plan gets approved, I will add those pending bills to this plan's charges. 

Personally, I prefer the first approach as it's fool proof and transparent but don't know what the client will be feeling about deactivating the product. The second approach needs to deal with a lot of edge cases and may still not be as transparent as it needs to be.