---
title: "Create Manual Invoice"
method: POST
path: "/billing/invoice/create"
tags: ["provider", "billing"]
---

# Create Manual Invoice

`POST /billing/invoice/create`

Create and send a manual one-off invoice to a patient.

## Headers

- `TENANT` string, required
- `API-KEY` string, required

## Request body

- ManualInvoiceCreate
  - `patientId` string, required — Identifier of the patient to create the invoice for.
  - `message` string, required — Custom message to be sent with the invoice.
  - `invoiceMethod` 'CHARGE_CARD' | 'SMS' | 'EMAIL' | 'CALL' | 'MAIL' | 'EXPIRY', required — The method used to send an invoice to a patient.
  - `charges` ChargeDetailInput[], nullable — Optional charge to create before invoicing. If not provided, will invoice existing outstanding charges.
    - `id` string, nullable — A unique identifier for the charge. Auto-generated if not provided.
    - `patientId` string, required — Identifier of the patient being charged.
    - `patient` PatientSummary
      - `id` string, required — The unique identifier for the user.
      - `firstName` string, nullable — The user's first name.
      - `lastName` string, nullable — The user's last name.
      - `phoneNumber` string, nullable — The user's phone number.
      - `email` string, nullable — The user's email address.
      - `type` 'PROVIDER' | 'PATIENT' | 'ASSISTANT', required
      - `locationId` string, nullable — The location of the user.
      - `externalId` string, nullable — The user's external identifier if available.
      - `address` string, nullable — The user's primary address.
      - `addressLineTwo` string, nullable — Additional address information.
      - `city` string, nullable — The city of the user's address.
      - `state` string, nullable — The state of the user's address.
      - `zipCode` string, nullable — The postal code of the user's address.
      - `country` string, nullable — The country of the user's address.
      - `createdDate` string, date-time, required — The date and time when the user was created.
      - `addressValid` boolean, nullable — Whether the user's address is valid.
      - `meta` object, nullable — Any additional metadata about the user relevant to your system.
      - `isArchived` boolean, nullable — Whether the user is archived.
      - `primaryLocationId` string, nullable — The primary location of the user.
      - `gender` string, nullable — The gender of the patient.
      - `dateOfBirth` string, date, nullable — The date of birth of the patient.
      - `patientMedications` string[], nullable — List of patient's self-reported medications.
      - `onSchedulingBlacklist` boolean, nullable — Whether the patient is on the scheduling blacklist.
      - `surchargeDisabled` boolean, nullable — Whether surcharges are disabled for this patient.
      - `tags` PatientTagSummary[], nullable — List of patient tags
        - `id` string, required — Unique identifier for the patient tag
        - `name` string, required — Name of the patient tag
        - `emoji` string, nullable — Emoji associated with the tag
        - `color` string, nullable — Color code for the tag (hex format)
        - `isActive` boolean, required — Whether the tag is active
        - `createdDate` string, date-time, required — Date and time when the tag was created
        - `updatedDate` string, date-time, nullable — Date and time when the tag was last updated
      - `creditBalance` integer, nullable — Patient's credit balance in cents.
      - `preferredProviderId` string, nullable — The preferred provider ID for this patient.
    - `total` integer — Total amount of the charge.
    - `totalOutstanding` integer, required — Total outstanding amount that is yet to be paid.
    - `description` string, nullable — Description of the charge.
    - `status` 'OUTSTANDING' | 'PAID' | 'EXTERNAL_SETTLEMENT' | 'VOID' | 'WRITE_OFF' | 'REFUNDED' | 'CHARGEBACK' | 'PAYMENT_PLAN' | 'COLLECTIONS'
    - `discountAmount` integer, nullable — Any discount applied to the total outstanding.
    - `discountPercentage` number, nullable — Percentage of discount applied to the charge.
    - `externalId` string, nullable — External identifier for the charge, if applicable.
    - `externalCreatedDate` string, date-time, nullable — The creation date of the charge in your external system, if applicable.
    - `ruleSetId` string, nullable — Identifier for the `RuleSet` applied to this `Charge`, if any.
    - `createdDate` string, date-time, nullable — The date when the charge was created.
    - `creatorId` string, nullable — Identifier of the `Provider` who created the charge (i.e. the Clinician, or relevant Biller).
    - `items` ChargeItem[] — List of `Items` in the `Charge`.
      - `id` string, nullable — Unique identifier for the charge item
      - `itemId` string, nullable — Optional unique identifier for the item
      - `chargeId` string, required — Identifier of the charge this item is associated with
      - `name` string, nullable — Name of the item (None for items with associated inventory item)
      - `description` string, nullable — Description of the item
      - `quantity` integer, required — Quantity of the item being charged
      - `discountAmount` integer, nullable — Discount amount for the item
      - `discountPercentage` number, nullable — Discount percentage for the item
      - `discountReason` string, nullable — Reason for discount
      - `price` integer, required — Price of the item in cents
      - `soldPackageId` string, nullable — Unique identifier for the sold package usage
      - `bankedQuantity` integer, nullable — Quantity to bank for later use
      - `bankedItemId` string, nullable — ID of banked item being used (for tracking usage)
      - `issuedDiscountId` string, nullable — Unique identifier for the specific issued discount instance used
      - `soldByProviderId` string, nullable — Unique identifier for the provider who sold the item
      - `taxAmount` integer, nullable — Tax amount for the item in cents
      - `pricingId` string, nullable — Unique identifier for the pricing for the item
      - `shipmentIds` string[], nullable — Optional list of shipment IDs to reduce the stock quantity of
    - `tips` TipDetail[] — List of `Tips` in the `Charge`.
      - `chargeId` string, required — Charge ID this tip belongs to
      - `amount` integer, required — Tip amount in cents
      - `providerId` string, required — Provider ID receiving the tip
      - `id` string — Unique identifier for the tip
      - `provider` ProviderTiny
        - `id` string, required
        - `firstName` string, required
        - `lastName` string, nullable
        - `email` string, nullable
        - `createdDate` string, date-time, nullable
    - `locationId` string, nullable — Identifier of the `Location` where the charge was created.
    - `eventId` string, nullable — Identifier of the `Event` this charge is associated with, if any.
    - `memberId` string, nullable — Identifier of the `Member` this charge is associated with, if any.
    - `comment` string, nullable — Any additional comments about the charge.
    - `meta` object, nullable — Any additional metadata about the charge relevant to your system.
    - `merchantAccountId` string, nullable — Identifier of the `MerchantAccount` this charge is associated with.
    - `payments` ChargePaymentDetailInput[] — List of `Payments` in the `Charge`.
      - `paymentId` string, required — The unique identifier for the payment.
      - `amount` integer, required — The amount of the payment.
      - `createdDate` string, date-time, nullable — The date and time the payment was created.
      - `chargeId` string, required — The unique identifier for the charge.
      - `payment` PaymentInput, required
        - `id` string, required — The unique identifier for the payment.
        - `patientId` string, nullable — The ID of the patient associated with the payment.
        - `payinId` string, nullable — The ID of the payin associated with the payment.
        - `amount` integer, required — The total amount of the payment.
        - `status` 'CANCELED' | 'CREATED' | 'FAILED' | 'IN_REVIEW' | 'PRESENTING' | 'PROCESSING' | 'SUCCEEDED', required
        - `currency` string — The currency in which the payment was made.
        - `payinConfigId` string, nullable — The configuration ID for the payin.
        - `paymentMedium` string, required — The name of the payment medium.
        - `paymentMethodId` string, nullable — The ID of the payment method used.
        - `stripePaymentIntentId` string, nullable — Stripe's payment intent ID if used.
        - `failedReason` string, nullable — Reason for payment failure if applicable.
        - `updatedDate` string, date-time, nullable — The date and time the payment was last updated.
        - `createdDate` string, date-time, required — The date and time the payment was created.
        - `fee` integer — The fee charged by the payment processor.
        - `feeToPatient` integer, required — The fee charged to the patient for the transaction.
        - `paymentMethod` PaymentMethodSummary
          - `id` string, required
          - `patientId` string, nullable, required
          - `rainforestPaymentMethodId` string, required
          - `brand` string, nullable, required
          - `last4` string, nullable, required
          - `expMonth` integer, nullable, required
          - `expYear` integer, nullable, required
          - `accountHolderType` string, nullable, required
          - `accountNumberLast4` integer, nullable, required
          - `bankName` string, nullable, required
          - `routingNumber` integer, nullable, required
          - `description` string, nullable, required
          - `type` 'CARD' | 'ACH' | 'APPLE_PAY', required
          - `isDefault` boolean
          - `isArchived` boolean
        - `refunds` RefundSummary[] — List of refunds associated with the payment.
          - `id` string, required
          - `paymentId` string, required
          - `amount` integer, required
          - `reason` 'DUPLICATE' | 'DISPUTE' | 'BOOKING_FEE' | 'OTHER', required
          - `createdDate` string, date-time, required
          - `status` 'CANCELED' | 'CREATED' | 'FAILED' | 'IN_REVIEW' | 'PRESENTING' | 'PROCESSING' | 'SUCCEEDED', required
          - `rainforestRefundId` string, nullable
          - `fee` integer
    - `adjustments` AdjustmentSummary[] — List of `Adjustments` in the `Charge`.
      - `chargeId` string, required
      - `providerId` string, nullable
      - `locationId` string, nullable
      - `id` string, required — Unique identifier for the adjustment
      - `amount` integer, required — Amount of the adjustment
      - `reason` string, nullable — Reason for the adjustment
      - `createdDate` string, date-time, required — Date when the adjustment was created
      - `adjustmentType` 'WRITE_OFF' | 'ADJUSTMENT' | 'EXTERNAL_SETTLEMENT', required

## Response `200`

Successful Response

- InvoiceForTable
  - `id` string, required
  - `method` 'CHARGE_CARD' | 'SMS' | 'EMAIL' | 'CALL' | 'MAIL' | 'EXPIRY' — The method used to send an invoice to a patient.
  - `status` 'PENDING' | 'SENT' | 'FAILED' | 'PAUSED' | 'CANCELLED', required — The status of an invoice.
  - `rule` RuleDetails
    - `id` string, required
    - `name` string, required
    - `methods` InvoiceMethod[], required
    - `delayInDays` integer, required
    - `message` string, required
  - `amount` integer, required
  - `sendTime` string, date-time, nullable
  - `pausedDate` string, date-time, nullable
  - `resumedDate` string, date-time, nullable
  - `methodsAttempted` array[], required
    - unknown[]
      - unknown
  - `failedReason` string, nullable
  - `pdfPath` string, nullable
  - `emailStatus` string, nullable
  - `smsContent` string, nullable
  - `callStatus` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/decodahealth/apis/decoda-api.md) · [All operations](https://skmtc.dev/decodahealth/apis/decoda-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/decodahealth/decoda-api/revisions/4939a65a89d2/schema)
