Home · Guides

Rebilling what a project cost you

Show me Acme's unbilled billable expenses as invoice lines with a 10 percent markup.

Paste this into Claude with the server connected.

expense_to_invoice. It returns the project's unbilled billable expenses in exactly the line-item shape invoice_create expects, per currency, with your markup applied. It marks nothing as rebilled, and there is no option to make it, which is the design decision that matters here.

Why the preview and the close-out are separate

Because you can preview and then not issue the invoice. If the preview closed expenses out, a conversation you abandoned would leave real costs marked as billed and invisible to the next preview. So the sequence is fixed: preview, create the invoice, then

Mark those expenses rebilled against INV-2026-0007.

Paste this into Claude with the server connected.

expense_mark_rebilled, and invoice_number is required. Marking by ids is the precise route. Marking by project and date range additionally requires a currency, so invoicing the EUR group cannot accidentally close the PLN one.

Currencies do not get folded together

One invoice carries one currency. A week of USD hours, a EUR receipt and a GBP mileage line comes back as three groups, each with its own expense_ids, and you pass one group. To get a single invoice, supply target_currency and your own fx_rates, which puts the rate you used on the record instead of a rate the server picked. The currency server's fx_rates_for returns European Central Bank reference rates in that shape; free covers history up to 90 days.

The VAT rule that stops double taxing

A stored rate of 0 is a rate, not a gap: an exempt receipt stays exempt. An expense recorded with no rate at all holds a gross amount and is rebilled as-is with tax_rate: 0 and a description saying so, precisely so a default rate on the invoice cannot tax a receipt that already included tax. To split those older lines anyway, pass assume_vat_rate and they come back flagged [vat assumed 23%].

The expense_settings default is applied when the expense is inserted and never retroactively at rebill time. Changing that default in March does not rewrite what a receipt entered in January meant.

A worked line

EUR
Stock photo licence, logged gross48.00
VAT split at 23 percentnet 39.02, VAT 8.98
Rebilled net with 10 percent markup42.92
On the invoice at 23 percent52.79 gross

The split rounds the VAT rather than the net, so net plus VAT is exactly the gross and a half-cent of VAT rounds up instead of disappearing.

Free tier

Logging is unlimited. expense_to_invoice handles 20 items at a time on free, markup included; Pro removes the item cap and adds xlsx export and unlimited projects and rules. Twelve tools on this server, counted from data/tools.json.

Questions

Can I rebill at cost with no markup?

Yes, that is the default. Markup is a parameter you pass, not a setting that lurks. Passing zero and passing nothing produce the same lines.

What if I already invoiced some of them?

The preview only returns unbilled billable expenses, so anything already closed out with expense_mark_rebilled is excluded. That is the whole reason the marker exists rather than a date cutoff, which would break the moment you invoiced out of order.

Can I unmark something?

expense_update with rebilled: false clears both the marker and the invoice number. Changing the amount, currency or VAT rate of an already-rebilled expense is refused unless you pass unlink_rebill: true, because the invoice charged something else and quietly diverging from it is worse than a refusal.

Does the markup show on the invoice?

No. It comes through in the line amount, not as a separate line, which is normally what you want. If you need it visible, put it in the line description before you create the invoice, which is free text.

Related

All MCP servers and prices · All guides · Buy the bundle $39