> ## Documentation Index
> Fetch the complete documentation index at: https://help.vori.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a transaction

> Records a transaction your own system processed, such as an order taken on your website. Send a UUID version 7 as `id`; sending the same one again returns the transaction already recorded rather than creating a second. `lane_id` and `employee_id` must reference the virtual lane and employee Vori provisions for your store — find the lane with `GET /v1/lanes?virtual=true`, and contact Support if your store has none.



## OpenAPI

````yaml /api/openapi.json post /v1/transactions
openapi: 3.0.0
info:
  title: Vori API
  description: ''
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.vori.com
    description: production
security: []
tags: []
paths:
  /v1/transactions:
    post:
      tags:
        - Transactions
      summary: Create a transaction
      description: >-
        Records a transaction your own system processed, such as an order taken
        on your website. Send a UUID version 7 as `id`; sending the same one
        again returns the transaction already recorded rather than creating a
        second. `lane_id` and `employee_id` must reference the virtual lane and
        employee Vori provisions for your store — find the lane with `GET
        /v1/lanes?virtual=true`, and contact Support if your store has none.
      operationId: createTransaction
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTransactionRequest'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
        '400':
          description: ''
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/TransactionLaneNotFoundError'
                  - $ref: '#/components/schemas/TransactionLaneNotVirtualError'
                  - $ref: '#/components/schemas/TransactionEmployeeNotFoundError'
                  - $ref: '#/components/schemas/TransactionEmployeeNotVirtualError'
                  - $ref: '#/components/schemas/TransactionShopperNotFoundError'
                  - $ref: '#/components/schemas/TransactionStoreProductsNotFoundError'
                  - $ref: '#/components/schemas/TransactionItemModifiersNotFoundError'
                  - $ref: '#/components/schemas/TransactionAlreadyExistsError'
                  - $ref: '#/components/schemas/TransactionStoreMismatchError'
                  - $ref: '#/components/schemas/TransactionTotalsMismatchError'
                  - $ref: '#/components/schemas/TransactionLineItemInvalidError'
        '403':
          description: ''
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/InsufficientPermissionsError'
                  - $ref: '#/components/schemas/NoBannerAssociationError'
      security:
        - bearer: []
components:
  schemas:
    CreateTransactionRequest:
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique transaction ID generated by your system (UUID version 7).
            Sending the same transaction twice with the same ID will not create
            a duplicate.
          format: uuid
        completed_at:
          type: string
          description: When the transaction was completed in your system.
          format: date-time
        employee_id:
          type: string
          description: ID of the employee to record this transaction under.
          pattern: ^[0-9]+$
        lane_id:
          type: string
          description: ID of the lane to record this transaction under.
          pattern: ^[0-9]+$
        line_items:
          minItems: 1
          maxItems: 2500
          description: Products on the transaction.
          type: array
          items:
            $ref: '#/components/schemas/CreateTransactionLineItem'
        payments:
          minItems: 1
          maxItems: 50
          description: Payments applied to the transaction.
          type: array
          items:
            $ref: '#/components/schemas/CreateTransactionPayment'
        shopper_id:
          type: string
          description: >-
            ID of the loyalty shopper who placed the transaction, if known.
            Links the transaction to their loyalty account.
          format: uuid
        tax_total:
          type: string
          description: >-
            Total sales tax charged on the transaction. Must equal the sum of
            the line-item tax totals.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        total:
          type: string
          description: >-
            Final transaction total including tax. Must equal the sum of the
            line totals, and the payments must add up to this amount.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
      description: >-
        A completed checkout to record against a lane and cashier, with its
        products, payments, and totals.
      required:
        - id
        - completed_at
        - employee_id
        - lane_id
        - line_items
        - payments
        - tax_total
        - total
    Transaction:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        cashback_amount:
          type: string
          description: >-
            Cash back requested by the shopper, as a decimal string in
            major/minor currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        completed_at:
          type: string
          description: Date and time when the transaction was finalized.
          format: date-time
        coupon_total:
          type: string
          description: >-
            Total savings from coupons, as a decimal string in major/minor
            currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        discount_total:
          type: string
          description: >-
            Total savings from manual or employee discounts, as a decimal string
            in major/minor currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        employee_id:
          type: string
          description: ID of the employee who processed the transaction.
          pattern: ^[0-9]+$
        gift_card_sales:
          description: Gift cards purchased in the transaction.
          type: array
          items:
            $ref: '#/components/schemas/TransactionGiftCardSale'
        gift_card_sales_total:
          type: string
          description: >-
            Total face value of gift cards purchased in the transaction, as a
            decimal string in major/minor currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        issued_coupons:
          description: Coupons issued to the shopper by the transaction.
          type: array
          items:
            $ref: '#/components/schemas/TransactionIssuedCoupon'
        item_modifier_total:
          type: string
          description: >-
            Total value of item modifiers, as a decimal string in major/minor
            currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        lane_id:
          type: string
          description: ID of the checkout lane that processed the transaction.
          pattern: ^[0-9]+$
        line_items:
          description: Product line items included in the transaction.
          type: array
          items:
            $ref: '#/components/schemas/TransactionLineItem'
        loyalty_rewards_total:
          type: string
          description: >-
            Total savings from loyalty reward redemptions, as a decimal string
            in major/minor currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        payments:
          description: Payments collected for the transaction.
          type: array
          items:
            $ref: '#/components/schemas/TransactionPayment'
        promo_savings:
          type: string
          description: >-
            Total savings from promotions, as a decimal string in major/minor
            currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        promo_total:
          type: string
          description: >-
            Sum of line-item totals after promotions are applied, as a decimal
            string in major/minor currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        receipt_type:
          nullable: true
          description: How the shopper took their receipt.
          allOf:
            - $ref: '#/components/schemas/ReceiptType'
        refund_total:
          type: string
          description: >-
            Total value refunded against this transaction, as a decimal string
            in major/minor currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        refunds:
          description: >-
            Refunds of the transaction. Retrieve one with `GET
            /v1/transactions/{id}` for the products returned and how the money
            went back.
          type: array
          items:
            $ref: '#/components/schemas/CompactRefund'
        retail_total:
          type: string
          description: >-
            Sum of line-item retail totals after promotions and before discounts
            and tax, as a decimal string in major/minor currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        shopper_facing_id:
          type: string
          description: Human-readable transaction identifier shown to the shopper.
        shopper_id:
          type: string
          nullable: true
          description: >-
            ID of the loyalty shopper associated with the transaction, or null
            for an anonymous transaction.
          format: uuid
        started_at:
          type: string
          description: Date and time when the cashier started the transaction.
          format: date-time
        status:
          description: Current lifecycle status of the transaction.
          allOf:
            - $ref: '#/components/schemas/TransactionStatus'
        store_id:
          type: string
          description: ID of the store where the transaction was placed.
          pattern: ^[0-9]+$
        subtotal:
          type: string
          description: >-
            Sum of line-item subtotals before promotions, discounts, and tax, as
            a decimal string in major/minor currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        tax_total:
          type: string
          description: >-
            Total tax charged on the transaction, as a decimal string in
            major/minor currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        taxable_amount:
          type: string
          description: >-
            Portion of the transaction subject to tax, as a decimal string in
            major/minor currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        tip_amount:
          type: string
          description: >-
            Tip added by the shopper, as a decimal string in major/minor
            currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        total:
          type: string
          description: >-
            Final transaction amount including tax, as a decimal string in
            major/minor currency units. Sales are positive and refunds are
            negative.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        total_collected:
          type: string
          description: >-
            Total collected from the shopper, including the transaction total,
            tip, and cash back, as a decimal string in major/minor currency
            units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        type:
          description: Financial transaction type represented by the transaction.
          allOf:
            - $ref: '#/components/schemas/TransactionType'
      description: >-
        A completed checkout at a store, covering the lane, cashier, and
        shopper, the products sold, the savings applied, the payments collected,
        and any refunds against it.
      required:
        - id
        - cashback_amount
        - completed_at
        - coupon_total
        - discount_total
        - employee_id
        - gift_card_sales
        - gift_card_sales_total
        - issued_coupons
        - item_modifier_total
        - lane_id
        - line_items
        - loyalty_rewards_total
        - payments
        - promo_savings
        - promo_total
        - receipt_type
        - refund_total
        - refunds
        - retail_total
        - shopper_facing_id
        - shopper_id
        - started_at
        - status
        - store_id
        - subtotal
        - tax_total
        - taxable_amount
        - tip_amount
        - total
        - total_collected
        - type
    TransactionLaneNotFoundError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - transaction_lane_not_found
        error_details:
          $ref: '#/components/schemas/TransactionLaneNotFoundErrorDetails'
      required:
        - error_code
        - error_details
    TransactionLaneNotVirtualError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - transaction_lane_not_virtual
        error_details:
          $ref: '#/components/schemas/TransactionLaneNotVirtualErrorDetails'
      required:
        - error_code
        - error_details
    TransactionEmployeeNotFoundError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - transaction_employee_not_found
        error_details:
          $ref: '#/components/schemas/TransactionEmployeeNotFoundErrorDetails'
      required:
        - error_code
        - error_details
    TransactionEmployeeNotVirtualError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - transaction_employee_not_virtual
        error_details:
          $ref: '#/components/schemas/TransactionEmployeeNotVirtualErrorDetails'
      required:
        - error_code
        - error_details
    TransactionShopperNotFoundError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - transaction_shopper_not_found
        error_details:
          $ref: '#/components/schemas/TransactionShopperNotFoundErrorDetails'
      required:
        - error_code
        - error_details
    TransactionStoreProductsNotFoundError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - transaction_store_products_not_found
        error_details:
          $ref: '#/components/schemas/TransactionStoreProductsNotFoundErrorDetails'
      required:
        - error_code
        - error_details
    TransactionItemModifiersNotFoundError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - transaction_item_modifiers_not_found
        error_details:
          $ref: '#/components/schemas/TransactionItemModifiersNotFoundErrorDetails'
      required:
        - error_code
        - error_details
    TransactionAlreadyExistsError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - transaction_already_exists
        error_details:
          $ref: '#/components/schemas/TransactionAlreadyExistsErrorDetails'
      required:
        - error_code
        - error_details
    TransactionStoreMismatchError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - transaction_store_mismatch
        error_details:
          $ref: '#/components/schemas/TransactionStoreMismatchErrorDetails'
      required:
        - error_code
        - error_details
    TransactionTotalsMismatchError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - transaction_totals_mismatch
        error_details:
          $ref: '#/components/schemas/TransactionTotalsMismatchErrorDetails'
      required:
        - error_code
        - error_details
    TransactionLineItemInvalidError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - transaction_invalid_line_item
        error_details:
          $ref: '#/components/schemas/TransactionLineItemInvalidErrorDetails'
      required:
        - error_code
        - error_details
    InsufficientPermissionsError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - insufficient_permissions
        error_details:
          $ref: '#/components/schemas/InsufficientPermissionsErrorDetails'
      required:
        - error_code
        - error_details
    NoBannerAssociationError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - no_banner_association
      required:
        - error_code
    CreateTransactionLineItem:
      type: object
      properties:
        discount_total:
          type: string
          description: >-
            Total discounts applied to this line. Recorded exactly as provided.
            Defaults to 0.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        item_modifiers:
          maxItems: 50
          description: >-
            Fees and deposits (bottle deposits, CRV, bag fees) charged on this
            line.
          type: array
          items:
            $ref: '#/components/schemas/CreateTransactionLineItemModifier'
        promo_savings:
          type: string
          description: >-
            Total promotional savings applied to this line. Recorded exactly as
            provided. Defaults to 0.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        quantity:
          type: string
          description: >-
            Number of units sold, as a whole number. For items sold by weight,
            send 1 and provide the weight instead.
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        retail_price:
          type: string
          description: >-
            Price per unit — or, for items sold by weight, the price per unit of
            weight (e.g., per pound) — before any savings or tax.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        store_product_id:
          type: string
          description: ID of the product in your store's catalog.
          pattern: ^[0-9]+$
        tax_total:
          type: string
          description: Sales tax charged on this line. Defaults to 0.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        taxable_amount:
          type: string
          description: >-
            Portion of this line that is subject to sales tax. Defaults to 0
            (untaxed).
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        total:
          type: string
          description: >-
            Final amount for this line including tax. Must equal (retail_price x
            quantity) — or (retail_price x weight) for items sold by weight —
            minus promo_savings and discount_total, plus the sum of fee/deposit
            amounts and tax_total.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        weight:
          type: string
          description: >-
            Measured weight (e.g., pounds), for items sold by weight. When the
            item is priced by weight, send quantity 1; retail_price is the price
            per unit of weight, and the line total is based on retail_price x
            weight.
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
      description: >-
        A product sold on a transaction being recorded, with its quantity or
        weight, price, savings, fees, and tax.
      required:
        - quantity
        - retail_price
        - store_product_id
        - total
    CreateTransactionPayment:
      type: object
      properties:
        account_number_last4:
          type: string
          minLength: 4
          maxLength: 4
          description: Last 4 digits of the card number, if paid by card.
          pattern: ^[0-9]+$
        amount:
          type: string
          description: Amount collected with this payment method.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        card_brand:
          description: Card brand, if paid by card. Shown on receipts and in reporting.
          allOf:
            - $ref: '#/components/schemas/CreateTransactionCardBrand'
        completed_at:
          type: string
          description: >-
            When the payment settled. Defaults to the transaction's
            completed_at.
          format: date-time
        entry_method:
          description: How the card was read, if paid by card.
          allOf:
            - $ref: '#/components/schemas/CreateTransactionEntryMethod'
        external_transaction_id:
          type: string
          maxLength: 250
          description: >-
            Your payment processor's transaction reference. Stored exactly as
            provided so your systems can look it up later; it is never
            interpreted.
        payment_type:
          description: How the transaction was paid.
          allOf:
            - $ref: '#/components/schemas/CreateTransactionPaymentType'
      description: >-
        A payment collected on a transaction being recorded, including how it
        was tendered, the amount, and the processor reference.
      required:
        - amount
        - external_transaction_id
        - payment_type
    TransactionGiftCardSale:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        amount:
          type: string
          description: >-
            Amount loaded onto the gift card, as a decimal string in major/minor
            currency units.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        gift_card_id:
          type: string
          nullable: true
          description: >-
            ID of the associated GiftCard that was funded by this sale. This
            value may be `null` if the sale was made while the POS was offline,
            and the transaction has not yet been back-filled.
        gift_card_transaction_id:
          type: string
          nullable: true
          description: >-
            ID of the associated GiftCardTransaction that funded the gift card.
            This value may be `null` if the sale was made while the POS was
            offline, and the transaction has not yet been back-filled.
      description: >-
        A gift card purchased on a transaction, with the amount loaded onto it
        and links to the gift card and the transaction that funded it.
      required:
        - id
        - amount
        - gift_card_id
        - gift_card_transaction_id
    TransactionIssuedCoupon:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        coupon_code:
          type: string
          description: >-
            Coupon code the shopper presents to redeem the coupon on a later
            transaction.
        coupon_id:
          type: string
          description: ID of the coupon that was issued.
        ended_at:
          type: string
          description: Date and time after which the coupon can no longer be redeemed.
          format: date-time
        offer_benefit_value:
          type: string
          description: >-
            Value of the coupon to the shopper when redeemed, as a decimal
            string in major/minor currency units.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        snap_incentive_program_id:
          type: string
          nullable: true
          description: ID of the SNAP incentive program the coupon was issued under.
        started_at:
          type: string
          description: Date and time from which the coupon can be redeemed.
          format: date-time
      description: >-
        A coupon issued to the shopper by a transaction, with its code, benefit
        value, and the window in which it can be redeemed.
      required:
        - id
        - coupon_code
        - coupon_id
        - ended_at
        - offer_benefit_value
        - snap_incentive_program_id
        - started_at
    TransactionLineItem:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        coupon_total:
          type: string
          description: Total savings from coupons on this line.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        coupons:
          description: Coupons applied to this line.
          type: array
          items:
            $ref: '#/components/schemas/TransactionLineItemCoupon'
        department_id:
          type: string
          description: ID of the department the product is assigned to.
        discount_total:
          type: string
          description: Total savings from manual and employee discounts on this line.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        discounts:
          description: Manual and employee discounts applied to this line.
          type: array
          items:
            $ref: '#/components/schemas/TransactionLineItemDiscount'
        ebt_tax_waived_total:
          type: string
          description: Tax waived on this line because the product was paid for with EBT.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        free_quantity:
          type: string
          description: Portion of the quantity on this line given away free by a promotion.
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        item_modifier_total:
          type: string
          description: >-
            Total of the fees and deposits charged on this line, such as bottle
            deposits and container redemption fees.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        item_modifiers:
          description: >-
            Fees and deposits charged on this line, such as bottle deposits,
            container redemption fees, and bag fees.
          type: array
          items:
            $ref: '#/components/schemas/TransactionLineItemModifier'
        loyalty_rewards:
          description: Loyalty rewards redeemed against this line.
          type: array
          items:
            $ref: '#/components/schemas/TransactionLineItemLoyaltyReward'
        loyalty_rewards_total:
          type: string
          description: Total savings from loyalty reward redemptions on this line.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        product:
          description: Product sold on this line.
          allOf:
            - $ref: '#/components/schemas/TransactionLineItemProduct'
        promo_savings:
          type: string
          description: Total savings from promotions on this line.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        promotions:
          description: Promotions applied to this line.
          type: array
          items:
            $ref: '#/components/schemas/TransactionLineItemPromotion'
        quantity:
          type: string
          description: >-
            Number of units sold on this line, or the weight sold for products
            priced by weight.
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        refunded_order_line_item_id:
          type: string
          nullable: true
          description: >-
            ID of the original sale line this refund line returns, or null when
            this line is not a refund.
        retail_price:
          type: string
          description: Shelf price per unit before promotions, coupons, and discounts.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        retail_total:
          type: string
          description: Line total after promotions are applied, before discounts and tax.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        subtotal:
          type: string
          description: >-
            Retail price multiplied by quantity, before promotions, discounts,
            and tax.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        tax_total:
          type: string
          description: Total sales tax charged on this line.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        taxable_amount:
          type: string
          description: Portion of this line that is subject to tax.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        taxes:
          description: Sales taxes charged on this line.
          type: array
          items:
            $ref: '#/components/schemas/TransactionLineItemTax'
        total:
          type: string
          description: >-
            Final amount for this line, including tax. Positive on a sale and
            negative on a refund.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        transaction_type:
          deprecated: true
          description: Deprecated. Use `type`.
          allOf:
            - $ref: '#/components/schemas/TransactionType'
        type:
          description: Whether this line was sold, refunded, or voided.
          allOf:
            - $ref: '#/components/schemas/TransactionType'
        variable_weights:
          description: >-
            Weight readings recorded for this line when the product is sold by
            weight.
          type: array
          items:
            $ref: '#/components/schemas/TransactionLineItemVariableWeight'
        wic_adjusted_price:
          type: string
          nullable: true
          description: >-
            Price per unit the shopper paid under WIC, or null when WIC was not
            applied to this line.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
      description: >-
        A product sold on a transaction, with its quantity, price, and totals,
        plus the coupons, discounts, loyalty rewards, promotions, fees, taxes,
        and weight readings recorded against it.
      required:
        - id
        - coupon_total
        - coupons
        - department_id
        - discount_total
        - discounts
        - ebt_tax_waived_total
        - free_quantity
        - item_modifier_total
        - item_modifiers
        - loyalty_rewards
        - loyalty_rewards_total
        - product
        - promo_savings
        - promotions
        - quantity
        - refunded_order_line_item_id
        - retail_price
        - retail_total
        - subtotal
        - tax_total
        - taxable_amount
        - taxes
        - total
        - transaction_type
        - type
        - variable_weights
        - wic_adjusted_price
    TransactionPayment:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        authorized_amount:
          type: string
          description: >-
            Amount authorized for this payment, which is less than the requested
            amount on a partial approval, as a decimal string in major/minor
            currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        card_brand:
          nullable: true
          description: Card network used for the payment, or null for non-card payments.
          allOf:
            - $ref: '#/components/schemas/CardBrand'
        card_last4:
          type: string
          nullable: true
          minLength: 4
          maxLength: 4
          description: Last four digits of the card used, or null for non-card payments.
          pattern: ^[0-9]+$
        cash_received:
          type: string
          nullable: true
          description: >-
            Cash handed over by the shopper, as a decimal string in major/minor
            currency units, or null for non-cash payments.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        cashback_amount:
          type: string
          description: >-
            Cash back included in this payment, as a decimal string in
            major/minor currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        change_returned:
          type: string
          nullable: true
          description: >-
            Change given back to the shopper, as a decimal string in major/minor
            currency units, or null for non-cash payments.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        completed_at:
          type: string
          description: Date and time when the payment was completed.
          format: date-time
        entry_method:
          type: string
          nullable: true
          description: >-
            How the card was read, such as chip, swipe, contactless, or manual
            entry, or null for non-card payments.
        payment_type:
          type: string
          description: >-
            How the payment was tendered: `cash`, `check`, `credit`, `debit`,
            `ebt_cash`, `ebt_foodstamp`, `ewic`, `gift_card`, `house_account`,
            or `qr_pay`. A store can configure tenders of its own, so treat the
            set as open and match on the value rather than assuming this list is
            complete.
        requested_amount:
          type: string
          description: >-
            Amount requested for this payment, as a decimal string in
            major/minor currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        reversals:
          description: Reversals recorded against this payment.
          type: array
          items:
            $ref: '#/components/schemas/TransactionPaymentReversal'
        terminal_was_online:
          type: boolean
          nullable: true
          description: >-
            Indicates if the payment terminal was online when the payment was
            authorized. This will be `null` for non-card payments.
        till_id:
          type: string
          nullable: true
          description: >-
            ID of the till the payment was collected into, or null when the
            payment was not tied to a till.
          format: uuid
        tip_amount:
          type: string
          description: >-
            Tip included in this payment, as a decimal string in major/minor
            currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
      description: >-
        A payment collected on a transaction, covering how it was tendered, the
        amounts requested and authorized, any tip or cash back, the till it was
        paid into, and any reversals against it.
      required:
        - id
        - authorized_amount
        - card_brand
        - card_last4
        - cash_received
        - cashback_amount
        - change_returned
        - completed_at
        - entry_method
        - payment_type
        - requested_amount
        - reversals
        - terminal_was_online
        - till_id
        - tip_amount
    ReceiptType:
      type: string
      enum:
        - noReceipt
        - print
        - sms
    CompactRefund:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        completed_at:
          type: string
          description: Date and time when the refund was finalized.
          format: date-time
        employee_id:
          type: string
          description: ID of the employee who processed the refund.
          pattern: ^[0-9]+$
        lane_id:
          type: string
          description: ID of the checkout lane that processed the refund.
          pattern: ^[0-9]+$
        shopper_facing_id:
          type: string
          description: Human-readable refund identifier shown to the shopper.
        started_at:
          type: string
          description: Date and time when the cashier started the refund.
          format: date-time
        store_id:
          type: string
          description: ID of the store where the refund was processed.
          pattern: ^[0-9]+$
        subtotal:
          type: string
          description: >-
            Sum of line-item subtotals before promotions, discounts, and tax, as
            a decimal string in major/minor currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        tax_total:
          type: string
          description: >-
            Total tax refunded, as a decimal string in major/minor currency
            units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        total:
          type: string
          description: >-
            Final refund amount including tax, as a decimal string in
            major/minor currency units. Refund totals are negative.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
      description: >-
        A reference to a refund of a transaction, with where and when it was
        rung and the amounts refunded. Retrieve the refund itself for the
        products returned and how the money went back.
      required:
        - id
        - completed_at
        - employee_id
        - lane_id
        - shopper_facing_id
        - started_at
        - store_id
        - subtotal
        - tax_total
        - total
    TransactionStatus:
      type: string
      enum:
        - completed
        - expired
        - suspended
        - voided
    TransactionType:
      type: string
      enum:
        - refund
        - sale
        - void
    TransactionLaneNotFoundErrorDetails:
      type: object
      properties:
        lane_id:
          type: string
          pattern: ^[0-9]+$
      required:
        - lane_id
    TransactionLaneNotVirtualErrorDetails:
      type: object
      properties:
        lane_id:
          type: string
          pattern: ^[0-9]+$
      required:
        - lane_id
    TransactionEmployeeNotFoundErrorDetails:
      type: object
      properties:
        employee_id:
          type: string
          pattern: ^[0-9]+$
      required:
        - employee_id
    TransactionEmployeeNotVirtualErrorDetails:
      type: object
      properties:
        employee_id:
          type: string
          pattern: ^[0-9]+$
      required:
        - employee_id
    TransactionShopperNotFoundErrorDetails:
      type: object
      properties:
        shopper_id:
          type: string
          format: uuid
      required:
        - shopper_id
    TransactionStoreProductsNotFoundErrorDetails:
      type: object
      properties:
        store_product_ids:
          type: array
          items:
            type: string
            pattern: ^[0-9]+$
      required:
        - store_product_ids
    TransactionItemModifiersNotFoundErrorDetails:
      type: object
      properties:
        item_modifier_ids:
          type: array
          items:
            type: string
            pattern: ^[0-9]+$
      required:
        - item_modifier_ids
    TransactionAlreadyExistsErrorDetails:
      type: object
      properties:
        id:
          type: string
          format: uuid
      required:
        - id
    TransactionStoreMismatchErrorDetails:
      type: object
      properties:
        id:
          type: string
          format: uuid
      required:
        - id
    TransactionTotalsMismatchErrorDetails:
      type: object
      properties:
        actual:
          type: string
        expected:
          type: string
        field:
          allOf:
            - $ref: '#/components/schemas/TransactionTotalsMismatchField'
        store_product_id:
          type: string
          pattern: ^[0-9]+$
      required:
        - actual
        - expected
        - field
    TransactionLineItemInvalidErrorDetails:
      type: object
      properties:
        reason:
          allOf:
            - $ref: '#/components/schemas/TransactionLineItemInvalidReason'
        store_product_id:
          type: string
          pattern: ^[0-9]+$
      required:
        - reason
        - store_product_id
    InsufficientPermissionsErrorDetails:
      type: object
      properties:
        action:
          allOf:
            - $ref: '#/components/schemas/Action'
        resource:
          allOf:
            - $ref: '#/components/schemas/Resource'
      required:
        - action
        - resource
    CreateTransactionLineItemModifier:
      type: object
      properties:
        amount:
          type: string
          description: Total amount charged for this fee or deposit on this line.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        item_modifier_id:
          type: string
          description: >-
            ID of the fee or deposit (e.g., bottle deposit, CRV, bag fee) as
            configured for your store.
          pattern: ^[0-9]+$
      description: >-
        A fee or deposit — such as a bottle deposit, CRV, or bag fee — charged
        on a line of a transaction being recorded.
      required:
        - amount
        - item_modifier_id
    CreateTransactionCardBrand:
      type: string
      enum:
        - american_express
        - china_union_pay
        - debit
        - diners_club
        - discover
        - jcb
        - mastercard
        - visa
    CreateTransactionEntryMethod:
      type: string
      enum:
        - chip
        - chip_fallback_swiped
        - chip_manual
        - contactless
        - manual
        - swiped
    CreateTransactionPaymentType:
      type: string
      enum:
        - check
        - credit
        - debit
    TransactionLineItemCoupon:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        applied_amount:
          type: string
          description: >-
            Savings the coupon produced on this line item, as a decimal string
            in major/minor currency units.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        coupon_code:
          type: string
          description: Coupon code that was scanned or entered at checkout.
        coupon_id:
          type: string
          description: ID of the coupon that was redeemed.
        offer_display_text:
          type: string
          description: Offer text shown on the receipt for the coupon.
        offer_id:
          type: string
          description: ID of the offer the coupon came from.
      description: >-
        A coupon redeemed against a line of a transaction, with the savings it
        produced and the offer it came from.
      required:
        - id
        - applied_amount
        - coupon_code
        - coupon_id
        - offer_display_text
        - offer_id
    TransactionLineItemDiscount:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        applied_amount:
          type: string
          description: >-
            Savings the discount produced on this line item, as a decimal string
            in major/minor currency units.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        discount_id:
          type: string
          nullable: true
          description: >-
            ID of the discount that was applied, or null when the cashier
            entered a one-off discount.
        discount_name:
          type: string
          description: Name of the discount shown to the cashier and on the receipt.
        discount_type:
          type: string
          description: >-
            How the discount is calculated, such as a percentage off, a fixed
            amount off, or a price override.
        discount_value:
          type: string
          description: >-
            Configured value of the discount, such as 10 for 10% off or 1.50 for
            $1.50 off.
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
      description: >-
        A discount applied to a line of a transaction, with its name, type,
        configured value, and the savings it produced.
      required:
        - id
        - applied_amount
        - discount_id
        - discount_name
        - discount_type
        - discount_value
    TransactionLineItemModifier:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        amount:
          type: string
          description: >-
            Amount charged for the fee or deposit on this line item, as a
            decimal string in major/minor currency units.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        item_modifier_id:
          type: string
          description: >-
            ID of the fee or deposit that was charged, such as a bottle deposit
            or CRV.
          pattern: ^[0-9]+$
        quantity:
          type: string
          description: Number of units of the fee or deposit charged on this line item.
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        tax_amount:
          type: string
          description: >-
            Tax charged on the fee or deposit, as a decimal string in
            major/minor currency units.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        taxes:
          description: Taxes charged on the fee or deposit.
          type: array
          items:
            $ref: '#/components/schemas/TransactionLineItemTax'
      description: >-
        A fee or deposit charged on a line of a transaction, with the amount,
        quantity, and tax collected on it.
      required:
        - id
        - amount
        - item_modifier_id
        - quantity
        - tax_amount
        - taxes
    TransactionLineItemLoyaltyReward:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        applied_amount:
          type: string
          description: >-
            Savings the loyalty reward produced on this line item, as a decimal
            string in major/minor currency units.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        loyalty_reward_id:
          type: string
          description: ID of the loyalty reward that was redeemed.
        loyalty_reward_name:
          type: string
          description: Name of the loyalty reward at the time it was redeemed.
        offer_id:
          type: string
          description: ID of the offer associated with the loyalty reward.
        order_loyalty_reward_id:
          type: string
          description: >-
            ID of the transaction-level reward redemption this line item draws
            from.
      description: >-
        A loyalty reward redeemed against a line of a transaction, with the
        savings it produced and the offer it came from.
      required:
        - id
        - applied_amount
        - loyalty_reward_id
        - loyalty_reward_name
        - offer_id
        - order_loyalty_reward_id
    TransactionLineItemProduct:
      type: object
      properties:
        id:
          type: string
          description: ID of the product in your store's catalog.
        barcode:
          type: string
          description: >-
            UPC or PLU recorded for the product when it was sold, whether it was
            scanned or entered by hand.
        brand:
          type: string
          nullable: true
          description: Brand of the product.
        ebt_enabled:
          type: boolean
          description: Whether the product can be paid for with EBT.
        name:
          type: string
          description: Name of the product as it was sold.
        sold_by_weight:
          type: boolean
          description: Whether the product is priced by weight rather than by unit.
        unit_of_measure:
          type: string
          nullable: true
          description: Unit of measure the size is expressed in, such as oz or lb.
        unit_of_measure_amount:
          type: string
          nullable: true
          description: >-
            Size of the product in its unit of measure, such as 12 for a 12 oz
            can.
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        wic_enabled:
          type: boolean
          description: Whether the product can be paid for with WIC.
      description: >-
        The product sold on a line of a transaction, along with the cost the
        store paid for it when known.
      required:
        - id
        - barcode
        - brand
        - ebt_enabled
        - name
        - sold_by_weight
        - unit_of_measure
        - unit_of_measure_amount
        - wic_enabled
    TransactionLineItemPromotion:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        amount:
          type: string
          description: Portion of the line the promotion applied to.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        display_text:
          type: string
          nullable: true
          description: Text shown for the promotion on the receipt.
        offer_id:
          type: string
          description: ID of the offer the promotion belongs to.
          pattern: ^[0-9]+$
        promotion_id:
          type: string
          description: ID of the promotion that produced the savings.
          pattern: ^[0-9]+$
        savings:
          type: string
          description: Amount the promotion took off the line.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
      description: >-
        A promotion applied to a line of a transaction, with the savings it
        produced, the amount it covered, and the text shown on the receipt.
      required:
        - id
        - amount
        - display_text
        - offer_id
        - promotion_id
        - savings
    TransactionLineItemTax:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        amount:
          type: string
          description: >-
            Tax charged on this line item, as a decimal string in major/minor
            currency units.
          format: monetary
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        tax_rate:
          description: >-
            Tax rate that produced the charge, as it was configured when the
            transaction was completed.
          allOf:
            - $ref: '#/components/schemas/CompactTaxRate'
      description: >-
        Tax charged on a line of a transaction, with the amount collected and
        the tax rate that produced it.
      required:
        - id
        - amount
        - tax_rate
    TransactionLineItemVariableWeight:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        variable_weight:
          description: >-
            Tare container weight subtracted from the scale reading, as it was
            recorded at the time of sale.
          allOf:
            - $ref: '#/components/schemas/CompactVariableWeight'
      description: >-
        An individual weight reading captured for a line of a transaction sold
        by weight.
      required:
        - id
        - variable_weight
    CardBrand:
      type: string
      enum:
        - american_express
        - atm
        - bill_me_later
        - china_union_pay
        - debit
        - diners_club
        - discover
        - ebt
        - jcb
        - mastercard
        - other
        - revolution_money
        - telecheck
        - undetermined
        - visa
        - voyager
        - wright_express
    TransactionPaymentReversal:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the record.
        authorized_amount:
          type: string
          description: >-
            Amount actually released, as a decimal string in major/minor
            currency units.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
        card_brand:
          nullable: true
          description: >-
            Card network used for the reversed payment, or null for non-card
            payments.
          allOf:
            - $ref: '#/components/schemas/CardBrand'
        card_last4:
          type: string
          nullable: true
          minLength: 4
          maxLength: 4
          description: >-
            Last four digits of the card used for the reversed payment, or null
            for non-card payments.
          pattern: ^[0-9]+$
        completed_at:
          type: string
          description: Date and time when the reversal was completed.
        entry_method:
          type: string
          nullable: true
          description: >-
            How the card was read for the reversed payment, or null for non-card
            payments.
        payment_type:
          type: string
          description: >-
            How the reversed payment was tendered: `cash`, `check`, `credit`,
            `debit`, `ebt_cash`, `ebt_foodstamp`, `ewic`, `gift_card`,
            `house_account`, or `qr_pay`. A store can configure tenders of its
            own, so treat the set as open and match on the value rather than
            assuming this list is complete.
        requested_amount:
          type: string
          description: >-
            Amount requested to be released, as a decimal string in major/minor
            currency units.
          format: positive-monetary
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
      description: >-
        A reversal of a payment collected on a transaction, with the amount
        requested, the amount released, and how the payment was tendered.
      required:
        - id
        - authorized_amount
        - card_brand
        - card_last4
        - completed_at
        - entry_method
        - payment_type
        - requested_amount
    TransactionTotalsMismatchField:
      type: string
      enum:
        - line_total
        - order_total
        - payments_total
        - tax_total
    TransactionLineItemInvalidReason:
      type: string
      enum:
        - non_integer_quantity
        - weight_on_non_weight_item
        - weight_quantity_must_be_one
        - weight_required
    Action:
      type: string
      enum:
        - '*'
        - cancel
        - check_in
        - create
        - delete
        - read
        - record_events
        - refund
        - restart
        - update
        - void
    Resource:
      type: string
      enum:
        - '*'
        - accounting_integration
        - agent_chats
        - api_clients
        - asynchronous_tasks
        - banners
        - blackhawk_transactions
        - capabilities
        - coupons
        - custom_quick_actions
        - datacap_transactions
        - departments
        - discounts
        - ditto_auth_tokens
        - edge_agents
        - electronic_shelf_labels
        - employees
        - files
        - food_modifiers
        - gift_cards
        - gl_code_mappings
        - house_accounts
        - inventory
        - inventory_sessions
        - invoices
        - item_modifiers
        - label_dimension_sets
        - label_sheet_profiles
        - label_stock_products
        - lanes
        - loyalty_bonuses
        - loyalty_campaigns
        - loyalty_rewards
        - notification_templates
        - offers
        - order_guides
        - pos_banner_configurations
        - pos_orders
        - pos_tills
        - price_tags
        - product_ranges
        - products
        - promotions
        - purchase_orders
        - receiving
        - reporting
        - revision_sessions
        - revisions
        - roles
        - shopper_tags
        - shoppers
        - store_product_inventory_counts
        - store_product_lots
        - store_product_rules
        - store_product_tag_templates
        - store_snap_incentive_program_coupons
        - store_vendor_merge_requests
        - store_vendor_product_merge_requests
        - store_vendor_products
        - store_vendors
        - stores
        - tag_printings
        - tag_template_presets
        - tag_templates
        - tax_rates
        - users
        - variable_weights
        - vendor_merge_requests
        - vendor_product_merge_requests
        - vendors
        - wallet_payments
        - wic_products
    CompactTaxRate:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the tax rate.
        category:
          description: The kind of tax this rate represents.
          allOf:
            - $ref: '#/components/schemas/TaxRateCategory'
        name:
          type: string
          description: >-
            Name of the tax rate, such as the jurisdiction that levies it or the
            category it covers.
        value:
          type: string
          description: >-
            The rate charged. When `value_type` is `percentage`, this is a
            percentage of the taxable amount — `8.25` means 8.25%. When it is
            `amount`, this is a fixed amount of currency charged per unit sold.
          example: '8.25'
          pattern: ^[0-9]+(\.[0-9]+)?$
        value_type:
          description: 'How `value` is applied: a fixed amount or a percentage.'
          allOf:
            - $ref: '#/components/schemas/TaxRateValueType'
      required:
        - id
        - category
        - name
        - value
        - value_type
    CompactVariableWeight:
      type: object
      properties:
        id:
          type: string
          nullable: true
          description: >-
            Unique identifier for the variable weight, or null when the weight
            was captured on a transaction without one.
        name:
          type: string
          description: Human-readable name for the tare container, such as "Produce bag".
        unit:
          description: >-
            Unit of measure the weight is expressed in, limited to the units the
            point of sale can weigh in.
          allOf:
            - $ref: '#/components/schemas/VariableWeightUnit'
        value:
          type: string
          description: >-
            Weight of the tare container, as a decimal string in the unit of
            measure.
          pattern: ^[0-9]+(\.[0-9]+)?$
          example: '199.99'
      description: >-
        A compact reference to a tare container weight, embedded within other
        resources. Where it is embedded in a completed transaction, it is the
        immutable reading captured at the time of sale rather than a live
        reference.
      required:
        - id
        - name
        - unit
        - value
    TaxRateCategory:
      type: string
      description: The kind of tax a rate represents.
      enum:
        - other
        - sales
    TaxRateValueType:
      type: string
      description: >-
        How a tax rate applies its value: a fixed amount per unit sold, or a
        percentage of the taxable amount.
      enum:
        - amount
        - percentage
    VariableWeightUnit:
      type: string
      enum:
        - LBS
        - OZ
  securitySchemes:
    bearer:
      type: http
      scheme: bearer

````

## Related topics

- [Download transaction data](/api/download-transaction-data.md)
- [Create Loyalty Rewards in Vori Back Office](/customer-marketing/loyalty-and-rewards/create-loyalty-rewards-in-vori-back-office.md)
- [Create a discount](/api-reference/discounts/create-a-discount.md)
