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

# Upcharge amount by order

> Use this endpoint to upcharge an amount on an existing order. Can be performed after payment authorization.
Upon success, a new separate order is created for the upcharge amount only. The original order is not released and remains in its current state.
The upcharge amount is charged to the shopper as a single payment. The cumulative total of all upcharges on a given order must not exceed 15% of the original order amount.
The currency of the upcharge must match the currency of the original order.
The relationship between the upcharge order and the original order is queryable via Get Order: the upcharge order returns `is_upcharge: true` and `parent_order_uuid`, and the original order returns an `upcharges` array listing each upcharge.


<Warning>This API is in development and not yet available for production use. Details on this page are subject to change.</Warning>

## Overview

The upcharge endpoint allows you to charge an additional amount on an existing authorized order. This is useful when the final order total exceeds the originally authorized amount (e.g., due to weight-based pricing adjustments, added services, or shipping cost changes).

### Key behavior

* A **new, separate order** is created for the upcharge amount only. The original order is **not** released or modified.
* The upcharge amount is charged to the shopper as a **single payment** (Pay In Full).
* The **cumulative total** of all upcharges on a given order must not exceed **15%** of the original authorized amount.
* The upcharge currency **must match** the original order's currency.
* The returned UUID is the new upcharge order's UUID and can be used with other Order API endpoints (e.g., capture, refund).
* The two orders remain associated -- you can query the relationship via the [Get Order](/api/core/orders/getv2order) endpoint:
  * On the **upcharge order**, the response includes `is_upcharge: true` and `parent_order_uuid` referencing the original order.
  * On the **original order**, the response includes an `upcharges` array listing each upcharge order's UUID and amount.

### Validation requirements

* The original order must have an approved authorization.
* `intent` must be either `AUTH` or `CAPTURE`.
* `upcharge_amount` must include a valid `amount_in_cents` and `currency`.

### Example

For an original order of 100.00 USD:

* Maximum cumulative upcharge allowed: **15.00 USD** (15% of 100.00)
* A single upcharge of 10.00 succeeds, leaving 5.00 of remaining upcharge capacity.
* A subsequent upcharge of 6.00 would be rejected (cumulative 16.00 exceeds the 15% limit).


## OpenAPI

````yaml post /v2/order/{order_uuid}/upcharge
openapi: 3.1.0
info:
  title: Sezzle API v2
  description: >-
    This Sezzle API is for merchants who want to accept Sezzle as a payment
    option
  termsOfService: https://legal.sezzle.com
  version: 2.0.0
  x-logo:
    url: https://media.sezzle.com/branding/2.0/png/Logo_WhiteWordmark_500x126.png
    backgroundColor: '#392558'
servers:
  - url: https://sandbox.gateway.sezzle.com
    description: development server, usa, ca
  - url: https://gateway.sezzle.com
    description: production server, usa, ca
security:
  - Bearer: []
externalDocs:
  description: Sezzle API guides and tutorials
  url: https://docs.sezzle.com/sezzle-integration
paths:
  /v2/order/{order_uuid}/upcharge:
    post:
      tags:
        - Order
      summary: Upcharge amount by order
      description: >
        Use this endpoint to upcharge an amount on an existing order. Can be
        performed after payment authorization.

        Upon success, a new separate order is created for the upcharge amount
        only. The original order is not released and remains in its current
        state.

        The upcharge amount is charged to the shopper as a single payment. The
        cumulative total of all upcharges on a given order must not exceed 15%
        of the original order amount.

        The currency of the upcharge must match the currency of the original
        order.

        The relationship between the upcharge order and the original order is
        queryable via Get Order: the upcharge order returns `is_upcharge: true`
        and `parent_order_uuid`, and the original order returns an `upcharges`
        array listing each upcharge.
      operationId: HandleUpchargeAmountByOrder
      parameters:
        - name: Sezzle-Request-Id
          in: header
          description: Unique client-generated ID to enforce idempotency
          required: false
          schema:
            type: string
        - name: order_uuid
          in: path
          description: The Order UUID to upcharge (`order.uuid` from session response)
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                intent:
                  $ref: '#/components/schemas/Intent'
                upcharge_amount:
                  $ref: '#/components/schemas/Price'
                  description: >-
                    The amount to upcharge. The cumulative total of all
                    upcharges on a given order must not exceed 15% of the
                    original order amount. Currency must match the original
                    order.
              required:
                - intent
                - upcharge_amount
            example:
              intent: AUTH
              upcharge_amount:
                amount_in_cents: 5000
                currency: USD
      responses:
        '200':
          description: Successful Operation
          content:
            application/json:
              schema:
                properties:
                  uuid:
                    type: string
                    description: >-
                      The UUID of the new upcharge order. This UUID can be used
                      with other Order API endpoints (e.g., capture, refund).
              example:
                uuid: 6c9db5d4-d09a-4224-860a-b5438ac32ca8
        '400':
          $ref: '#/components/responses/BadRequestV2'
          example:
            code: bad_request
            message: bad request
        '401':
          $ref: '#/components/responses/UnauthorizedV2'
          example:
            code: unauthorized
            message: authorization not accepted
        '404':
          $ref: '#/components/responses/NotFoundV2'
          example:
            code: record_not_found
            message: not found
        '422':
          $ref: '#/components/responses/UnprocessableV2'
          example:
            code: invalid
            message: UnprocessableV2 entity
components:
  schemas:
    Intent:
      type: string
      description: >
        If your checkout flow requires the user to confirm their checkout on
        your site after being approved by Sezzle, use AUTH as your intent. If
        you prefer the checkout be captured immediately, use CAPTURE.

        Submit a capture request via the API or your Merchant Dashboard before
        the authorization expires.

        The authorization expiration window can be set from 30 minutes up to 7
        days in your Merchant Dashboard Settings.
      enum:
        - AUTH
        - CAPTURE
    Price:
      allOf:
        - $ref: '#/components/schemas/PriceBase'
        - type: object
          required:
            - amount_in_cents
            - currency
    PriceBase:
      type: object
      properties:
        amount_in_cents:
          type: integer
          description: The amount in cents
        currency:
          type: string
          description: The 3 character currency code as defined by ISO 4217
    ErrorV2:
      type: object
      properties:
        code:
          type: string
          description: The general error type
        message:
          type: string
          description: A more specific error message, if available
        location:
          type: string
          description: Where the error occurred
        debug_uuid:
          type: string
          description: The unique identifier assigned to this error for troubleshooting
  responses:
    BadRequestV2:
      description: Invalid request
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ErrorV2'
          example:
            - code: bad_request
              message: bad request
    UnauthorizedV2:
      description: >-
        Unauthorized. Returned for any failed bearer or basic auth, including
        expired bearer tokens.
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ErrorV2'
          example:
            - code: unauthorized
              message: authorization not accepted
    NotFoundV2:
      description: The specified resource was not found
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ErrorV2'
          example:
            - code: record_not_found
              message: not found
    UnprocessableV2:
      description: Unable to process the request entity
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ErrorV2'
          example:
            - code: invalid
              message: Unprocessable entity
  securitySchemes:
    Bearer:
      type: apiKey
      name: Authorization
      in: header
      description: >-
        The authentication token generated from providing API Keys to Sezzle
        Gateway

````