Our documentation has moved!

You are currently viewing a legacy version of our help articles.
For the most up-to-date version, please use the new Chargify Help & Support Site.

Defining a One-Time-Purchase Product

We occasionally hear from merchants who would like to set up a product that their customers can buy, but they don't want that product to recur. Instead, they want the product to generate one charge to their customer, and that's all.

Please note that this is different than executing an instant credit card charge, which is covered in another document. This page is about defining a Product, but one that only causes a single charge when your customer subscribes to it, then it quits.

We do not have a non-recurring product type. However, many merchants have set up recurring products to act as non-recurring products.

  1. Define a new product.

  2. Define a One-Time Up-front Charge that is the amount you want to collect once for this product.

  3. Define a Trial Period of 0 days for $0.

  4. Define a Recurring Price of $0 that is billed Every 1 Days.

  5. Define the Expiration of this product as 1 Day.

See the attached graphic for an example.

When your customer subscribes to this product (or if you subscribe them to this product), they will be charged the Up-Front Fee and then the product will go into recurring mode... but that will end 1 day later. And there will be no charge for the 1 day of recurring time that passed.

We realize this is not perfect, as it may be confusing to your customers to get a receipt with the above details on it, but as we mentioned above, it seems to work reasonably well for a number of merchants who need to occasionally sell a product that only charges their customer once.

Customer-Submitted Info

One of our merchants wrote a blog entry about doing this. He had concerns about how coupon discounts get applied and about how the receipt page shows up, so he worked on fixes for both issues.


Here's the CSS from the blog entry, to hide some of the receipt page text that may be confusing:

Simply add these 2 lines of CSS code to the custom CSS box and it will hide the confusing, unnecessary purchase summary text:

.section_one { display: none; }

.tint { display: none; }

This will hide all references to monthly billing or recurring payment.

Was this article helpful?
2 out of 2 found this helpful
Have more questions? Submit a request


  • 0
    Savvas Verdis

    These options work very well for a business that relies both on subscriptions and one off payments. After a week of comparing the competition, Chargify is the closest match for this type of 'combined' business models. If only we could hack into the CSS of the Statements as well so that our customers would not see the 'Recurring' wording for the one-time purchases!  Any ideas Michael?

  • 0
    Kaushal Cavale

    I have a product which is a download /install product and hence requires a one time charge. I tried entering 0$ for the recurring amount and 0 months for the time period. But I get the following error message 

    There was a problem with your submission

    Please correct the following problems:

    Recurring Interval: must be greater than 0.

    So how can I set up a one time payment plan?

  • 0
    Kori Francis


    You don't need to hack the statements - merely send them yourself. If you access the statements via the API, you can use the html version and add/remove whatever you like. Then sending it using sendgrid/postmark is a trivial thing.

    -- Kori (@djbyter)

  • 0
    Michael Klett

    Kaushal: you have to set the recurring interval to something, i.e. 1 day, and set the expiration to the same.

  • 0
    Simon Renström

    I'm surprised why there isn't a more simple way to add one-time purchase products mixed with your subscription products in an otherwise excellent service. Chargify, please add this feature!

    Here's my custom javascript hack to hide the confusing payment details shown to customers ("$0 paid after 1 day"). It was quite difficult to implement since the payment details are injected after page load using ajax. It works in both Firefox and IE. You need to replace the product id with your one-time purchase product.


    if ( $('#product_id ').val() == '12345' ) {

    var sheet = document.styleSheets[0];

    if (sheet.insertRule) // firefox

      sheet.insertRule(".section_one, .tint{ display:none; }", 0);

    else if(sheet.addRule) // ie

      sheet.addRule(".section_one, .tint", "display:none;");  


  • 0
    Savvas Verdis

    Nice one Simon! Does this fix the hosted payment page, receipt or statement?

  • 0
    Simon Renström

    You can only modify the hosted payment page.

  • 0
    Mike Blackman

    I have a similar scenario, and while I have not yet completed my Chargify implementation, I am considering doing this as a "Metered Usage Product".  I assume that if this product is used zero times, it won't even appear, but if I set it as being used once during a billing period, then it would appear and would not/should not be listed as "Recurring".

    I theorize this based on the Chargify Docs I just read - Does this make sense - would it work?

  • 0
    Michael Klett

    @Mike Blackman: what do you mean by "won't even appear" and "would not/should not be listed as Recurring" - do you mean on the statements?  It sounds like it would work - I would encourage you to try it out.  You can force a new period (and a new statement) by manually changing the next billing date in the UI.

  • 0
    Mike Blackman

    Yes, I meant "won't even appear" on the statement.  The original post seemed to suggest a recurring product that costs $0 after the "trial" period, and then CSS hacks to "hide" the stuff that should not show.  Rather than trying to hide something that should not be seen, the "metered usage" looks like a good way to only have that add-on/1-time-charge show on the statement if it's actually used.

    Thanks for the testing tip.

    @Michael Klett: Aside, can someone at Chargify support please comment on this?  http://help.chargify.com/entries/20847882-billing-dates-for-end-of-month-subscriptions  I read the Docs and searched but that unanswered question was all I could find - Thanks!!


  • 0
    Matt Wilkinson

    Simon's script works for me in Chrome and IE but not Firefox 22.0. Anyone else have this issue or found a solution?

    Quite surprised one-off payments can't be handled without workarounds like this.

  • 0

    If you are doing this via an API call, it should look like this:


      "name":"Your product name",












Please sign in to leave a comment.
Powered by Zendesk