---
title: "Finalize an order"
method: POST
path: "/v4/orders/{id}/finalize"
tags: ["Orders"]
---

# Finalize an order

`POST /v4/orders/{id}/finalize`

Moves an order from the "open" state to the "finalized" state.

## Path parameters

- `id` string, required

## Request body

- FinalizeOrderV4RequestDto
  - `amount` number — The amount to finalize, in cents. If less than the order total, the difference will be voided. If not provided, the full order amount will be finalized.
  - `metadata` object — A JSON object of metadata to merge with existing order metadata

## Response `200`

The finalized order.

- FinalizeOrderV4ResponseDto
  - `id` string, required — Slope Unique Order ID
  - `externalId` string — Unique merchant generated external ID
  - `customerId` string — Slope Customer ID, null until order is claimed by customer
  - `number` string, required — Unique short & friendly order number
  - `checkoutCode` string, required — Unique code for Slope.JS widget
  - `checkoutUrl` string, required — Full URL for redirect flow
  - `total` number, required — Order total before customer fees
  - `totalFinalized` number — Total amount finalized for multi-finalization, null if not in finalizing/finalized state
  - `merchantFee` number, required — Merchant fees
  - `customerFee` number, required — Customer fees
  - `customerFeePercentage` number, required — Customer fee percentage
  - `totalWithFees` number, required — Order total with customer fees
  - `amountCanceledPrincipal` number, required — Amount canceled, in cents.
  - `amountCanceledFee` number, required — Amount canceled, in cents.
  - `status` 'pending' | 'approved' | 'submitted' | 'opening' | 'open' | 'finalizing' | 'finalized' | 'unpaid' | 'partiallyPaid' | 'complete' | 'defaulted' | 'rejected' | 'canceled' | 'refunded' | 'repayment', required
  - `finalizedAt` string, date-time, required — Time when order was finalized, null if not finalized yet
  - `openedAt` string, date-time, required — Time when order was opened, null if not open yet
  - `currency` 'mxn' | 'usd', required
  - `selectedTermName` string — The selected payment term name. Null if not selected yet.
  - `selectedPaymentType` 'ach' | 'card' | 'oxxo' | 'spei' | 'wire' | 'rtp' | 'customer_wallet' | 'virtual_card' | 'virtual_account'
  - `selectedTermDays` number — The selected payment term days. Null if not selected yet.
  - `paymentSchedule` OrderPaymentScheduleV4ResponseDto[] — The payment schedules for the order
    - `amount` number, required — The amount due for this payment for the order
    - `date` string, date-time, required — The date the payment is due for the order in the format ISO-8601 (YYYY-MM-DD)
  - `metadata` object — Any additional metadata to attach to the order
  - `amountOutstanding` number, required — Current amount outstanding on the order
  - `apr` number — Annual percentage rate from the selected quote. Null if no quote is selected yet.
  - `quotes` QuoteV4ResponseDto[] — Quotes available for this order
    - `id` string, required
    - `name` string, required
    - `expiresAt` string, required
    - `status` 'approved' | 'rejected', required
    - `processingFeeTotal` number, required
    - `totalWithFinancingFees` number, required
    - `totalWithFees` number, required
    - `financingFeePct` number, required
    - `financingFeeTotal` number, required
    - `apr` number, required
    - `payments` SchedulePaymentSharedDto[], required
      - `number` number, required — The payment number in the schedule sequence
      - `date` string, date-time, required — The due date for this payment
      - `principal` number, required — The principal amount of this payment, in cents
      - `customerFee` number, required — The customer fee for this payment, in cents
      - `amount` number, required — The total amount due for this payment, in cents
      - `financingFee` number, required — The financing fee for this payment, in cents
  - `transactionId` string, required — The ledger entry ID for the finalized order transaction

## Other responses

- `400` — Bad Request - Invalid request format or validation errors
- `404` — Not Found - The requested resource was not found
- `500` — Internal Server Error - An unexpected error occurred

---

[API](https://skmtc.net/slopepay/apis/slope-v4-api.md) · [All operations](https://skmtc.net/slopepay/apis/slope-v4-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/slopepay/slope-v4-api/revisions/cbdbc861073b/schema)
