invoices

Invoice anyone for anything, paid into your connected bank account

Changed on

Creates and finalizes a one-off invoice and answers with url, the Stripe page where your customer pays it (card). Nothing is sent: share url, or POST /api/v1/invoices/{id}/send to email it from your business name. Amounts are integer cents. Give amount, or line_items (then amount may be left out, or must equal their total). customer needs an email or a phone. due_date is a date (2026-11-01, due at the end of that day UTC) or unix seconds, within 365 days; without one the invoice is due 30 days after it is made. Every create needs an Idempotency-Key header (a UUID, new for each invoice): a retry with the same key within 24 hours answers with the same invoice instead of making a second one.

Money: a destination charge to your Stripe Connect account, made on its behalf, so the invoice, the payment page and the card statement carry your business name. Orgo keeps only what Stripe charges it for the invoice, the card fee (2.9% + 30¢) and the Invoicing fee (0.5%), as orgo_fee; payout is paid out to you. Needs Invoicing (every paid plan) and payouts set up in Settings → Invoicing. Use an account-wide API key.

post/api/v1/invoices

Request

  • Base URL
    https://www.orgo.ai
  • Auth
    HTTP bearer

Headers

Idempotency-Keystring required

A new key for each invoice, such as a UUID. Send the same key again only to retry that invoice.

Request body

amountinteger

Total in cents. Required without line_items.

currency'usd'
descriptionstring required

What it is for; shown on the invoice and in the email.

metadataobject

Your own keys (not type or orgo_*), returned as sent.

workspace_idstring uuid

Tag it with one of your workspaces, to filter the list by.

Example request

{
  "customer": {
    "phone": "+15551234567"
  }
}

Response

Created and open. url is where the customer pays.

idstring required
status'draft' | 'open' | 'paid' | 'void' | 'uncollectible' required
amountinteger required

Total, in cents.

amount_paidinteger
amount_remaininginteger
currencystring required
urlstring nullable required

Stripe’s hosted invoice page, where the customer pays.

pdf_urlstring nullable
numberstring nullable
descriptionstring nullable
due_datestring date-time nullable
createdstring date-time required
paid_atstring date-time nullable
voided_atstring date-time nullable
last_sent_atstring date-time nullable
orgo_feeinteger

Orgo’s fee in cents: Stripe’s card and Invoicing fees.

payoutinteger

What reaches your bank when it is paid, in cents.

workspace_idstring uuid nullable
metadataobject

Example response

{
  "id": "in_1QxYz2AbCdEf",
  "status": "open",
  "amount": 120000,
  "amount_paid": 0,
  "amount_remaining": 120000,
  "currency": "usd",
  "url": "https://invoice.stripe.com/i/acct_123/test_abc",
  "pdf_url": "https://pay.stripe.com/invoice/acct_123/test_abc/pdf",
  "number": "A1B2C3D4-0001",
  "description": "March security audit",
  "customer": {
    "email": "ap@acme.com",
    "phone": null,
    "name": "Acme Inc."
  },
  "line_items": [
    {
      "description": "March security audit",
      "quantity": 1,
      "unit_amount": 120000,
      "amount": 120000
    }
  ],
  "due_date": "2026-11-01T23:59:59.000Z",
  "created": "2026-10-07T18:00:00.000Z",
  "paid_at": null,
  "voided_at": null,
  "last_sent_at": null,
  "orgo_fee": 4110,
  "payout": 115890,
  "workspace_id": null,
  "metadata": {
    "project": "audit-2026-03"
  }
}

Changes

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the non-success response with the status