Payment terms and service period variables for recurring invoices

I’m trying to set up a mix of simple SMB AND advanced Enterprise SaaS recurring invoices, but can’t figure out how to deal with their different payment terms. Please see below:

  • Simple SMBs, has one fixed price per month, paid with creditcard, net-0.
  • I would like to show payment terms fx: “Paid with VISA ending in 1234”.
  • advanced Enterprise clients, has a mix of products, often a discount, pays with wiretransfer and has net-30, net 60 etc.
  • I would like to show payment terms fx: “Wire transfer to [bank name], [bank account] etc”.


  1. As we’re having thousands of SMBs and hundreds of Enterprises, how do we ensure to use the right payment terms, for the right client type? We want to automate this so we dont need a human touch point for our thousand SMBs…

  2. Can I use variables like creditcard type, creditcard num to be displayed in my SMB invoices?

  3. Can I use variables like [period start] and [period end] to be displayed on all invoices? These will tell the customer for which hosting period they are paying for.

  4. As for question 3, it becomes a bit more complicated for enterprise customers, having invoices being sent every 3 months, covering 3 months of service, with 30 days payment terms and invoice sent 30 days before period start. How to get around this?

  5. Can I design my own invoice template? We would like to put in an appetizer into the invoice - like new feature launches, tips&tricks, or just a warm message. We like invoices to be attracting and not just strictly business related. Can I put in a background image and change it once a month - this background image will have our monthly appetizer.

  1. Maybe set up two separate companies.

  2. No, we don’t store any information about the credit card.

  3. Yes, click the little question mark next to ‘How Often’ on /recurring_invoices/create to learn more.

  4. Not sure exactly, I think you’ll need to test.

  5. I’d suggest using an existing template as a base and customizing it. You can add images by first converting it to base64 but changing the design will update all existing invoices.


  1. That would work, thanks.

  2. Not in any way? We would use Stripe gateway, and it should be possible to integrate to their API to get this information? It’s important when dealing with companies with multiple creditcards. In this way the client can see which of their creditcards was used for payment. Would be really neat feature. +1 like.

  3. This means I could use from/to period as from:[MONTH] and to:[MONTH+3] ?

  4. I have tested, but can’t figure it out. I was hoping for a “yes, do this and this”, or “no, you cant do that”.

  5. I tried, but seems I can only change values of existing styling, but not introduce new styles/images. Let me know where to look please.

  1. We don’t store the information for security reasons, we only store the Stripe token which can be used to charge the card in the future.

  2. Correct.

  3. Maybe use from:[MONTH+1] and to:[MONTH+4]

  4. Check out the Photo design on /settings/customize_design. You’ll likely need to change the designer from ‘Form’ to ‘Code’ to make the changes. You can learn more about handling images here:

#2 I understand the security aspects of storing full credit card number. I just wanted to show the last 4 digits and credit card type. This is what many others are doing and what is always visible on a physical receipt in the real world, so I can’t see a security issue here - actually I see a very nice future feature :slight_smile:

#3, I just tested it and it works. However only for :MONTH, but I would like to show the date of exactly 3 months ahead like “Service period: February 10, 2016 until May 10, 2016”, as well as year overlapping like “Service period: Dec 10, 2016 until Jan 10, 2017”. Can I do this?

#5 Cool, I will check that out.

#5 It works to insert a new image using base64, cool! However it seems like I only have one “Custom” design. Can’t I have multiple? In that way I can choose a invoice design for our SMBs and another one for our Enterprise clients.

  1. We generally try to store as little sensitive data as possible, the last 4 digits of a card are often used as security checks.

  2. Sorry, no.

  3. Each company can have it’s own custom design.

I tried setting up a recurring invoice, billed every 3 months, but it does not multiply the product price by three on the invoice? Shouldn’t it be doing that? Or would I have to use Quantity=3 for that purpose?

You would need to set qty = 3

Thanks for your awesome support! You really have a flexible platform - trying to figure out where the limitations are and just trying to get around them, and so far it seems to be doable :slight_smile:

Do you have an API that we can bulk load data with? We can’t afford to have a manual human touch point in order to set up future recurring invoices for a new 10$/mo client. How can I automate this, so the client is aut. created and a recurring invoice is set up? Through Zapier?

Yes, you could use either our API or Zapier.

I have just tried to set up a Zapier Zap, but it seems it’s a simple integration. I can’t define address for a new client, and I can’t see how the client initially puts in his credit card information upon ordering our service? Is Invoice Ninja, only meant as post-signup tool, and not to capture the actual initial online order ?

Do you provide an online “self-service-client-portal”, where clients can keep their contact records up to date and update creditcard in case it’s expired etc? Or would that be a Stripe job?

If you click ‘View as recipient’ on the invoice page you can see the client portal.

You need to have a payment gateway configured to see the ‘Pay Now’ button.

Ok I see. So in order to use InvoiceNinja, I would need to create the invoice first, then wait for him to pay it online? I can’t integrate InvoiceNinja into our website, for our client to type in creditcard and then get invoice afterwards? Would I use Stripe to capture credit card details and then sync with InvoiceNinja afterwards?

With our API and Zapier you should be able to handle most cases.

To integrate with your website you could use the API to create the invoice on the fly.

It would most likely be easiest to configure Stripe in Invoice Ninja as new clients will be automatically connected when payments are entered.

So just to fully understand the split between InvoiceNinja and Stripe:

  1. I would implement Stripe payment UI on our site, and let InvoiceNinja take over the future recurring payments?

  2. Would I use InvoiceNinja or Stripe email alerts for keeping client credit card up to date, so eg. couple of months before the card is expiring the client will get an email? In case a future recurring payment gets rejected, would it be InvoiceNinja doing the email alerts or Stripe?

  1. Invoice Ninja would need to be used both for initial and recurring payments.

  2. We don’t store the card’s expiration date so aren’t able to do this, it’s possible it could be accomplished within Stripe.

  1. You don’t have any ready-made UI stuff, we can use to copy/paste a JS snippet into our site, so we can easily accept first time credit card payments? This would then trigger an invoice to be sent, and from there a recurring invoice and aut. payment each month?

  2. You already have email reminders, so I guess we could include a message one day after due date for recurring credit card payments, that says “Your card might be expired, so please update your credit card details here”, since an expired card also means no payment = an email reminder would trigger?

  1. You can display the invoice in an iframe. On /settings/email_settings choose ‘Website’ and then click the little question mark.

  2. A possible problem is the system would send a reminder for the first invoice if the client’s card isn’t on file.

  1. I would not like to confuse the client with invoices etc while signing up. Just a simple “purchase now” button where they should fill in as few data as possible. Once that is done, it’s OK to send invoice/payment confirmation on email and each month for all future charges. How to do that?

  2. You say reminder only “if the client’s card isn’t on file” ? In the most common cases, the client sign up today and everything is fine for several months, but then after lets say 6 months, the card is declined or even expired. This means the card IS actually on file - but just invalid. Will a reminder will sent as well in this case?