JupiterInvoice · Schema

Invoice

CompanyInvoicingFintechSoftware-as-a-ServiceFree

Properties

Name Type Description
created_at string
currency string 3-letter code. Left out: the account's default currency (USD if none is set).
customer_id integernull
discount object
due_date string Left out: the issue date plus the account's default payment terms (30 days if none is set).
footer_note string
id string Invoice number, e.g. ACME-0001
invoice_number string Same as id. Use it in /invoices/{invoice_number} URLs.
issue_date string
line_items array
paid_at string
po_number string
recipient object
scope_details string Long-form scope / statement of work shown to the recipient
sent_at string
share_token string
share_url string
status string
subscription_context string
subtotal_cents integer
tax object
terms_text string Left out: the account's standard terms text, if it has one.
total_cents integer
updated_at string
View JSON Schema on GitHub

JSON Schema

jupiterinvoice-com-invoice-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/jupiterinvoice-com/json-schema/jupiterinvoice-com-invoice-schema.json",
  "title": "Invoice",
  "x-generated": "2026-11-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/jupiterinvoice-com-openapi.yml#/components/schemas/Invoice",
  "properties": {
    "created_at": {
      "format": "date-time",
      "readOnly": true,
      "type": "string"
    },
    "currency": {
      "description": "3-letter code. Left out: the account's default currency (USD if none is set).",
      "type": "string"
    },
    "customer_id": {
      "type": [
        "integer",
        "null"
      ]
    },
    "discount": {
      "oneOf": [
        {
          "properties": {
            "type": {
              "const": "percent"
            },
            "value": {
              "type": "number"
            }
          }
        },
        {
          "properties": {
            "type": {
              "const": "flat"
            },
            "value_cents": {
              "type": "integer"
            }
          }
        }
      ],
      "type": "object"
    },
    "due_date": {
      "description": "Left out: the issue date plus the account's default payment terms (30 days if none is set).",
      "format": "date",
      "type": "string"
    },
    "footer_note": {
      "type": "string"
    },
    "id": {
      "description": "Invoice number, e.g. ACME-0001",
      "readOnly": true,
      "type": "string"
    },
    "invoice_number": {
      "description": "Same as id. Use it in /invoices/{invoice_number} URLs.",
      "readOnly": true,
      "type": "string"
    },
    "issue_date": {
      "format": "date",
      "type": "string"
    },
    "line_items": {
      "items": {
        "$ref": "#/$defs/LineItem"
      },
      "type": "array"
    },
    "paid_at": {
      "format": "date-time",
      "readOnly": true,
      "type": "string"
    },
    "po_number": {
      "type": "string"
    },
    "recipient": {
      "$ref": "#/$defs/Recipient"
    },
    "scope_details": {
      "description": "Long-form scope / statement of work shown to the recipient",
      "type": "string"
    },
    "sent_at": {
      "format": "date-time",
      "readOnly": true,
      "type": "string"
    },
    "share_token": {
      "readOnly": true,
      "type": "string"
    },
    "share_url": {
      "readOnly": true,
      "type": "string"
    },
    "status": {
      "enum": [
        "draft",
        "sent",
        "viewed",
        "change_requested",
        "updated",
        "approved",
        "paid",
        "cancelled"
      ],
      "type": "string"
    },
    "subscription_context": {
      "type": "string"
    },
    "subtotal_cents": {
      "readOnly": true,
      "type": "integer"
    },
    "tax": {
      "properties": {
        "amount_cents": {
          "readOnly": true,
          "type": "integer"
        },
        "label": {
          "type": "string"
        },
        "rate": {
          "description": "Percentage, e.g. 20.0 for 20%",
          "type": "number"
        }
      },
      "type": "object"
    },
    "terms_text": {
      "description": "Left out: the account's standard terms text, if it has one.",
      "type": "string"
    },
    "total_cents": {
      "readOnly": true,
      "type": "integer"
    },
    "updated_at": {
      "format": "date-time",
      "readOnly": true,
      "type": "string"
    }
  },
  "required": [
    "line_items"
  ],
  "type": "object",
  "$defs": {
    "Address": {
      "properties": {
        "city": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "line1": {
          "type": "string"
        },
        "line2": {
          "type": "string"
        },
        "line3": {
          "type": "string"
        },
        "postal_code": {
          "type": "string"
        },
        "state": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "LineItem": {
      "properties": {
        "description": {
          "type": "string"
        },
        "discount": {
          "oneOf": [
            {
              "properties": {
                "type": {
                  "const": "percent"
                },
                "value": {
                  "type": "number"
                }
              }
            },
            {
              "properties": {
                "type": {
                  "const": "flat"
                },
                "value_cents": {
                  "type": "integer"
                }
              }
            }
          ],
          "type": "object"
        },
        "line_total_cents": {
          "readOnly": true,
          "type": "integer"
        },
        "note": {
          "description": "Optional per-line detail shown under the line",
          "type": "string"
        },
        "quantity": {
          "default": 1,
          "type": "number"
        },
        "unit_price_cents": {
          "description": "Cents (or smallest currency unit)",
          "type": "integer"
        }
      },
      "required": [
        "description",
        "unit_price_cents"
      ],
      "type": "object"
    },
    "Recipient": {
      "properties": {
        "address": {
          "$ref": "#/$defs/Address"
        },
        "ap": {
          "properties": {
            "email": {
              "format": "email",
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "cc_emails": {
          "items": {
            "format": "email",
            "type": "string"
          },
          "type": "array"
        },
        "company": {
          "type": "string"
        },
        "email": {
          "format": "email",
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "tax_id": {
          "type": "string"
        }
      },
      "type": "object"
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/jupiterinvoice-com-invoice"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.