Invoice Payment to Credit

Hello! We’re loving the software so far! I do have a question that I can’t figure out.

Instead of making the customer go in and do a pre-payment what I would like to do is invoice them for hours ahead of time. Then I would like that payment to become an account credit. Is there a way to convert that or what’s the best way to accomplish what I’m looking to do? I don’t want double entry or to show the customer has paid twice as much as they really did.

Thank you in advance!

Hey, I could imagine that the following issue might be related to your problem, right? It’s also about your customer (for now, independent of your workflow) where a payment should be automatically assigned to the upcoming invoice, if I understand correctly, correct?

If that’s the case, it’s best to add an UpVote on GitHub.

What I want to do is send an invoice before the work happens – for like 3 hours. Have the customer pay it and then be able to bill against that (using tasks or invoices) until they are out of credit on their account. We only deal in quotes for projects – otherwise we just sell blocks of time. Works fine if the customer does a pre-pay without an invoice but I want to take some of the responsibility off the client.

I think then you simply use the credit form, I would say: Free Source Available Invoicing, Expenses & Time-Tracking | Invoice Ninja

I have also submitted a feature request for projects and billing, which informs the customer when their time budget is reached: Implementation of Time Budget and Email Notification in Ninja Invoice for SLAs - #3 by juwillsee

The credit is at the moment not auto-linked, I guess, but that should be able to be done with the following request: [Feature request] Receiving an advance payment via client portal for a quote and create credit note · Issue #9068 · invoiceninja/invoiceninja · GitHub

Is there a way to offset it even with it not being auto linked? I don’t mind a little manual work but I can’t have it showing that the customer paid effectively twice the amount.

@david can you please advise?

1 Like


This particular workflow is tricky, because you want to generate an invoice / have the client pay and then reapply that payment against future invoices.

The pre payment system is the easiest option here but does require some work from the client side. However, once the client has paid once (and has a payment method on file) you can manage future pre payments yourself as needed.

There is no other way to do this cleanly in Invoice Ninja without encountering the double payments you refer to without losing references to your payment transaction references etc etc…

The “unclean” way would be to invoice => receive the payment. Clone the invoice to a credit and then delete the payment.

This will leave the credit available for future use as needed.

1 Like

Is there a way to only allow the client to pick from certain items to prepay for? We sell time in 1-10 hour blocks – I don’t want them putting in any amount – can I make it so they have to select an item?

This is supported using payment links.

Note: you’ll need to add /v2 to the end of the URL to activate the optional products feature.

1 Like

Sorry for being daft but do you have an example I can follow?

The documentation is here: Free Source Available Invoicing, Expenses & Time-Tracking | Invoice Ninja

Note: the docs are a bit out of date, they’re called ‘Subscriptions’ in the docs but we’ve updated the label to ‘Payment Links’ in the app.

1 Like

So like this?

That looks correct to me

1 Like

How do I get that to show up in the client portal or do I send that link directly to the client?

You would share the link with your client

I did this and it created an invoice and then applied the payment to the invoice instead of it being an unapplied pre-purchase. What did I do wrong?

Sorry if I wasn’t clear before, that’s how the feature works.

If you want a client to be able to make a payment without an invoice you can enable “Client initiated payments” in the payment settings.

I don’t want them to be able to enter a custom amount though – I want them to have to choose amounts that we designate – is that how the client initiated payments work? I can already have them freeform an amount – which I want to avoid.

The app supports setting a minimum payment amount but not a maximum amount.