REST API - flag an invoice as sent without delivering it

Feature requested

REST API — flag an invoice as sent without delivering it

Typical use case

Hello,

I’m building an integration that pushes invoices from our own CRM into QuickFile using
the REST API (v2, api-beta.quickfile.co.uk). The CRM is the system of record: it
generates the invoices and already delivers them to customers itself. QuickFile’s job in
this setup is purely the accounting side.

The problem is that invoices created via POST /invoices land as Draft, and per your
own guidance a draft doesn’t affect the nominal accounts. So everything the integration
posts stays outside the ledger, reports and VAT return until someone opens QuickFile and
acts on each one, which rather defeats the automation.

What I’ve tried:

  • POST /invoices/send with by_email: false and by_snail_mail: false — the call is
    accepted, but the invoice stays in Draft.
  • by_email: true would send the customer a second copy of an invoice they have already
    received from us, so it isn’t an option.
  • by_snail_mail: true physically posts a letter and draws on snail mail credit, so it
    certainly isn’t an option.

The behaviour I need already exists in the web interface. On the Send Invoice screen
there’s an option to flag the invoice as sent without notifying the client, which is
exactly right — I just can’t reach it programmatically.

As far as I can tell there is no route to it today. In the v2 Swagger spec no request
schema carries a status, sent or draft field; InvoicesUpdateRequest is identical to
InvoicesCreateRequest; and auto_activate only applies to recurring profiles. The
legacy XML/JSON Invoice_Send exposes the same three delivery fields and no more.

So, two questions:

  1. Have I missed something? An account setting, or another endpoint that takes an invoice
    out of Draft without delivering it?
  2. If not, could this be added? Either would work for us:
    • a flag on POST /invoices/send, for example mark_as_sent: true alongside both
      delivery options set to false; or
    • a settable status on POST /invoices and PUT /invoices/{id}.

Any integration where delivery happens upstream will hit this, so I suspect I’m not the
only one asking. Happy to test either against the beta.

Thanks,
Andy

Hi @AndyChez

I’ve just tested this with the below, and this has updated the invoice:

[
  {
    "invoice_id": 12345678,
    "by_email": false,
    "by_snail_mail": false
  }
]

This invoice was flagged as “Sent” with nothing sent by email nor snail mail.

If you’re trying something different, please let me know and we can take a look for you.

ok, thanks for that, I will retest.

1 Like

My mistake I was posting a bare object where the endpoint wants an array — and the API returns 200 for the bare object while doing nothing, so it looked like both-flags-false was unsupported when actually my request shape was wrong. A silent success is a nasty failure mode; the Swagger body parameter doesn’t advertise the array either, though the legacy docs did show SendItem as an array, which I’d seen and not connected.