**Version: 202607**

# Finish refund

**POST** `/openapi/2026-07/orders/:order_id/refund/finish`

Marks the order's in-progress refund records as refunded successfully; afterwards the order is partially refunded or fully refunded.

This endpoint applies only to orders paid through a custom payment channel or the test payment channel (bogus).

## Request

**Path Parameters**

- `order_id` string (required)

  Order ID

**application/json**

**Body | Example**

**Body (required)**

- `post_sale_id` string (required)

  After-sales (post-sale) record ID
- `refund_record_id` string (required)

  Refund record ID
- `refund_time` string

  Time when the third-party refund completed, in RFC3339 (e.g., 2018-11-02T12:30:10Z)
- `transaction_number` string

  Refund transaction number
- `payment_channel` string

  Refund payment channel
- `extra_info` object

  Extra information attached to the refund record

  - `pos` string

    Additional POS information

```json
{
  "post_sale_id": "string",
  "refund_record_id": "string",
  "refund_time": "string",
  "transaction_number": "string",
  "payment_channel": "string",
  "extra_info": {
    "pos": "string"
  }
}
```

## Responses

**200**

OK

**application/json**

**Schema | Example**

**Schema**

- `code` string

  error code
- `message` string

  error message
- `data` object

  - `order_id` string

    Order ID
  - `post_sale_id` string

    After-sales (post-sale) record ID
  - `refund_record` object

    Refund record

    - `id` string

      Refund record ID
    - `refund_price` string

      Refund price
    - `refund_shipping` string

      Shipping refund
    - `refund_shipping_tax` string

      Refund Shipping Tax
    - `refund_method` string

      Refund method
    - `refund_status` string

      Refund status:

      *   `pending`: refund in progress
      *   `finished`: refund completed
      *   `failed`: refund failed
    - `note` string

      Note
    - `created_at` string

      Time when the refund record was created (e.g., 2018-11-02T12:30:10Z)
    - `updated_at` string

      Time when the refund record was last updated (e.g., 2018-11-02T12:30:10Z)
    - `refund_line_items` object[]

      List of refund line items

      *   Array \[

      - `line_item_id` string

        ID of the order line item being refunded
      - `refund_quantity` int32

        Refund quantity
      - `tax` string

        Tax
      - `discount` string

        Discount
      - `sub_total` string

        Subtotal
      - `total` string

        Total
      - `delete_quantity` int32

        Delete quantity
      *   \]
    - `payment_details` object[]

      Payment details

      *   Array \[

      - `id` string

        Refund record ID
      - `payment_line_id` string

        Payment line ID
      - `payment_channel` string

        Payment channel
      - `payment_method` string

        Payment method
      - `refund_price` string

        Refund price
      - `refund_status` string

        Refund status:

        *   `pending`: refund in progress
        *   `finished`: refund completed
        *   `failed`: refund failed
      - `finished_at` string

        Time when the refund was completed
      *   \]
    - `additional_total` string

      Additional total
    - `additional_prices` object[]

      Additional prices

      *   Array \[

      - `name` string

        Name of the additional charge
      - `price` string

        Amount of the additional charge
      - `biz_id` string

        Business ID
      - `fee_title` string

        Custom Charge Name
      *   \]
    - `refund_tip` string

      Tip refund amount
    - `order_id` string

      Order ID
    - `extra_info` object

      Extra information attached to the refund record

      - `pos` string

        Additional POS information

```json
{
  "code": "string",
  "message": "string",
  "data": {
    "order_id": "string",
    "post_sale_id": "string",
    "refund_record": {
      "id": "string",
      "refund_price": "string",
      "refund_shipping": "string",
      "refund_shipping_tax": "string",
      "refund_method": "string",
      "refund_status": "string",
      "note": "string",
      "created_at": "string",
      "updated_at": "string",
      "refund_line_items": [
        {
          "line_item_id": "string",
          "refund_quantity": 0,
          "tax": "string",
          "discount": "string",
          "sub_total": "string",
          "total": "string",
          "delete_quantity": 0
        }
      ],
      "payment_details": [
        {
          "id": "string",
          "payment_line_id": "string",
          "payment_channel": "string",
          "payment_method": "string",
          "refund_price": "string",
          "refund_status": "string",
          "finished_at": "string"
        }
      ],
      "additional_total": "string",
      "additional_prices": [
        {
          "name": "string",
          "price": "string",
          "biz_id": "string",
          "fee_title": "string"
        }
      ],
      "refund_tip": "string",
      "order_id": "string",
      "extra_info": {
        "pos": "string"
      }
    }
  }
}
```
