# Invoice

A model the API reference uses in a request or a response. The operation pages link every field typed as this model here.

Represents an invoice in the system.

## Fields
- `customerId` (string(uuid)): The unique identifier of the customer associated with this invoice. (nullable)
- `amounts` ([TrxAmounts](https://devportal.signapay-sbx.winkpg.io/docs/api/models/TrxAmounts.md)) required: The amounts associated with this invoice.
  Fields:
  - `base` (number(double)): The base amount of the transaction. This value cannot be negative and is required. (nullable)
  - `tip` (number(double)): The tip amount of the transaction. This value cannot be negative. (nullable)
  - `tax` (number(double)): The tax amount of the transaction. This value cannot be negative. (nullable)
  - `shipping` (number(double)): The shipping amount of the transaction. This value cannot be negative. (nullable)
  - `convenience` (number(double)): The convenience fee amount of the transaction. This value cannot be negative. (nullable)
  - `conveniencePercentage` (number(double)): The convenience fee percentage of the transaction. This value cannot be negative. (nullable)
  - `surcharge` (number(double)): The surcharge amount of the transaction. This value cannot be negative. Applies only when the surcharging feature is enabled for the merchant: on an initial transaction submit, a non-zero value is rejected at the create boundary when surcharging is disabled. (nullable)
  - `surchargeAssessed` (boolean): Server-owned marker indicating the gateway itself computed `surcharge` for this transaction. Only the trusted surcharge-enrichment path may set this; every other create/update path must leave it null, including when a caller supplies a raw `surcharge` value. (nullable)
  - `convenienceChargedSeparately` (boolean): Server-owned marker indicating the convenience fee is billed as a separate, linked charge transaction rather than folded into this transaction's `total`. Only the trusted transaction pipeline may set this; every create/update path must leave it null, including when a caller supplies a raw `convenience` value. (nullable)
  - `cardPriceAdjustment` (number(double)): The card price uplift under a dual pricing program, in the transaction currency: the amount by which the card price exceeds the cash price, which `base` holds. This value cannot be negative. Applies only to a merchant enrolled in dual pricing, where the gateway computes it. (nullable)
  - `dualPricingAssessed` (boolean): Server-owned marker indicating the gateway itself applied the card price to this transaction under the merchant's dual pricing program, so `cardPriceAdjustment` is part of `total`. Only the trusted dual pricing path may set this; every create and update path must leave it null, including when a caller supplies a raw `cardPriceAdjustment` value. (nullable)
  - `cashback` (number(double)): The cash handed to the cardholder at the point of sale on a PIN debit or EBT Cash purchase. This value cannot be negative. (nullable)
  - `total` (number(double)): The total amount of the transaction. This property is calculated based on the sum of Base, Tip, Tax, Shipping, Convenience, (when `surchargeAssessed` is true) Surcharge, and (when `dualPricingAssessed` is true) CardPriceAdjustment amounts. When `convenienceChargedSeparately` is true the Convenience amount is excluded, because the fee bills as its own linked charge transaction. The value must be positive and is required. (nullable)
- `isEstimatedAmount` (boolean): Value indicating whether the amount on this invoice is estimated. (nullable)
- `isTaxExempt` (boolean): Value indicating whether this invoice is tax exempt. (nullable)
- `shippingAddress` ([Address](https://devportal.signapay-sbx.winkpg.io/docs/api/models/Address.md)): The shipping address for this invoice.
  Fields:
  - `id` (string(uuid)): Gets the unique identifier for the address. (read only)
  - `address1` (string): Gets or sets the first line of the address (e.g., street address). (nullable, max length 100)
  - `address2` (string): Gets or sets the second line of the address (e.g., apartment, suite, unit, building, floor, etc.). (nullable, max length 100)
  - `city` (string): Gets or sets the city of the address. (nullable, max length 100)
  - `state` (string): Gets or sets the state or region of the address. (nullable, max length 100)
  - `province` (string): Gets or sets the province of the address (if applicable). (nullable)
  - `zip` (string): Gets or sets the US ZIP code of the address (for example 12345 or 12345-6789). Conditional: Conditional (see validator source). Pattern: ^\d{5}(-\d{4})?$. Conditional: When IsUsCountry(Country) is false. Max length: 20. (nullable)
  - `postalCode` (string): Gets or sets the international postal code of the address, for a country other than the US. (nullable, max length 20)
  - `country` (string): Gets or sets the country of the address. Defaults to "USA". (nullable, max length 100)
  - `isMailing` (boolean): Gets or sets a value indicating whether this address is a mailing address.
  - `isDefault` (boolean): Gets or sets a value indicating whether this address is the default address.

## See also

- [All documentation](https://devportal.signapay-sbx.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
