---
title: "Send Invoice Now"
method: POST
path: "/api/v1/admin/block/s3-invoices/send-now"
tags: ["Admin APIs", "block-s3-invoices"]
---

# Send Invoice Now

`POST /api/v1/admin/block/s3-invoices/send-now`

Finalize and email one held invoice immediately, recording who and why.

Brings the send forward; it does not authorise one. The daily pass would send the same
invoice on its next run, which for a send date already behind us means tomorrow morning —
this is for the operator who is looking at it now. Irreversible — a finalized invoice cannot
be returned to draft — so the caller is expected to have confirmed it with the operator, and
``reason`` is required.

``sent=false`` covers three different endings, and only the returned ``invoice.state``
separates them: still ``ready`` means a guard held it — an S3 credit is not yet on Stripe —
and the daily pass retries; ``void`` means Stripe has voided or written off the invoice, so
the review row is retired and nothing retries; ``sent`` means it had already gone. A caller
that reads ``sent`` alone will tell the operator the wrong thing in two cases out of three.

## Request body

- BlockInvoiceSendNowRequest — Send one held invoice immediately, outside the daily schedule. ``reason`` is required and recorded: this is irreversible, and an audited path has to be more attractive than finalizing in the Stripe Dashboard, which leaves CAMS holding a row that thinks the invoice is still waiting.
  - `block_invoice_draft_id` string, uuid, required
  - `reason` string, required

## Response `200`

Successful Response

- BlockInvoiceSendNowResponse
  - `sent` boolean, required
  - `reason` string, nullable
  - `invoice` BlockInvoiceReviewRow, required — The review state of one held Block invoice, for E3's Upcoming Invoices tab. Deliberately carries no payment fields. ``state`` answers "where is this in our own flow", ``payment_state`` answers "does the customer owe us money", and a draft is emphatically not money owed — merging the two would put "Overdue" on an invoice the customer has never been shown.
    - `id` string, uuid, required
    - `stripe_invoice_id` string, required
    - `client_id` string, uuid, required
    - `period_seq` integer, nullable
    - `state` string, required
    - `send_date` string, date-time, nullable
    - `edit_window_days` integer, required
    - `approval_overdue_at` string, date-time, nullable
    - `marked_ready_at` string, date-time, nullable
    - `marked_ready_by` string, nullable
    - `finalized_at` string, date-time, nullable
    - `sent_at` string, date-time, nullable
    - `positive_subtotal_cents` integer, nullable
    - `tokens_applied_cents` integer, nullable
    - `net_cents` integer, nullable
    - `manual_override_at` string, date-time, nullable
    - `manual_override_by` string, nullable
    - `manual_override_reason` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api.md) · [All operations](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/carbonarc/carbon-arc-client-admin-api/revisions/a8ca30023371/schema)
