---
title: "UpdateRefund"
method: POST
path: "/api/ReturnsRefunds/UpdateRefund"
tags: ["ReturnsRefunds"]
---

# UpdateRefund

`POST /api/ReturnsRefunds/UpdateRefund`

Updates an existing refund in the system. Requires create and delete permissions
<b>Permissions Required: </b> GlobalPermissions.OrderBook.ReturnsRefunds.Refunds.CreateRefundsNode
<b>Rate limit: </b><span style="background-color:#0272d9;color:white;padding:4px 8px;text-align:center;border-radius:5px; font-size: small;"><b>150</b></span> / minute

## Request body

- ReturnsRefundsUpdateRefundRequest
  - `request` UpdateRefundRequest
    - `RefundHeaderId` integer — The identifier for the refund header to update
    - `OrderId` string, uuid — The unique identifier for the order the refund lines pertain to
    - `RefundLines` UpdatedRefundLine[] — A list of refund lines to update within the given refund
      - `RefundRowId` string, uuid — Identifies the refund line
      - `RemoveFromRefund` boolean — Determines whether to remove the line from the refund
      - `ExternalReference` string — The channel reference number for this refund
      - `IsFreeText` boolean — Identifies whether the refund reason is provided in freetext, or as one of a predefined set of options
      - `FreeTextOrNote` string — For freetext refund reasons, this is the reason that will be sent to the channel. Otherwise, it is considered an internal note
      - `Amount` number, double — The amount to be refunded for this line
      - `Quantity` integer — Used when the refund is part of a return
      - `ReasonTag` string — For channels that support predefined refund reasons, this is the tag that identifies a predefined reason
      - `SubReasonTag` string — For channels that support a secondary predefined refund reason, this is the tag that identifies a predefined secondary reason
      - `InsufficientRefundTag` string — For channels that require a reason when the refund is lower than the full line amount, this is the tag that identifies a predefined insufficient refund reason
      - `InsufficientRefundNote` string — For channels that require a reason when the refund is lower than the full line amount, and support a freetext note, this field populates that note
      - `ReasonCategory` string — Internal reason category

## Response `200`

OK

- UpdateRefundResponse
  - `RefundHeaderId` integer — The unique identifier for the refund header.
  - `RefundReference` string — An automatically generated string to help identify the refund
  - `Status` PostSaleStatus
    - `StatusHeader` 'OPEN' | 'PROCESSED' | 'ERROR' | 'ERROR_ACKED' | 'PENDING' — Identifies whether the refund is open, processed, or in an erroneous state
    - `StatusDetail` PostSaleSubStatus
      - `StatusTag` string — For an individual refund line, this identifies the line's state on the channel. For the header, if all its lines have the same StatusTag, it will also have the same StatusTag. If not, it will determine an appropriate StatusTag based on those of its lines
      - `StatusDescription` string — A user-friendly descriptor of the StatusTag
      - `Actionable` boolean — Determines whether the refund is in a state where it requires action from the user
      - `ActionDescription` string — A user-friendly descriptor of what "actioning" the refund will do on the channel
      - `EditableFields` string[] — Where certain fields need to be modified for the refund to be successfully actioned, this list is populated with a list of the field names, allowing them to be edited as necessary
  - `CannotRefundReason` 'None' | 'NotImplemented' | 'DisabledInConfig' | 'MissingOrderInLinnworks' | 'OpenOrderInLinnworks' | 'OrderIsFullyRefundedInLinnworks' | 'NoNewRefundsSpecified' | 'NoUpdatedRefundsSpecified' | 'MultipleReferences' | 'SubStatusTagNotInTheSystem' | 'SubStatusTagIsNotActionable' | 'MultipleSubStatusTags' | 'RefundNotInSystem' | 'Other' — If the validation has failed at any stage, this field identifies the cause of the failure
  - `Errors` string[] — Any global validation errors are added to this list, as well as any errors from the RefundLines collection
  - `RefundLines` VerifiedRefund[] — A collection of validated line-level refunds, with any applicable errors included
    - `RefundRowId` string, uuid — A unique identifier for the refund line
    - `RefundHeaderId` integer — A unique identifier for the refund header this line belongs to
    - `Status` PostSaleStatus
      - `StatusHeader` 'OPEN' | 'PROCESSED' | 'ERROR' | 'ERROR_ACKED' | 'PENDING' — Identifies whether the refund is open, processed, or in an erroneous state
      - `StatusDetail` PostSaleSubStatus
        - `StatusTag` string — For an individual refund line, this identifies the line's state on the channel. For the header, if all its lines have the same StatusTag, it will also have the same StatusTag. If not, it will determine an appropriate StatusTag based on those of its lines
        - `StatusDescription` string — A user-friendly descriptor of the StatusTag
        - `Actionable` boolean — Determines whether the refund is in a state where it requires action from the user
        - `ActionDescription` string — A user-friendly descriptor of what "actioning" the refund will do on the channel
        - `EditableFields` string[] — Where certain fields need to be modified for the refund to be successfully actioned, this list is populated with a list of the field names, allowing them to be edited as necessary
    - `RefundedUnit` 'Item' | 'Shipping' | 'Service' | 'Additional' — Identifies the type of refund for this line
    - `IsShippingRefund` boolean — Identifies whether the refund is a shipping refund
    - `IsAdditionalRefund` boolean — Identifies whether the refund is an additional refund
    - `IsCancellation` boolean — Identifies whether the refund row is a cancellation
    - `RefundedItem` VerifiedRefundItem
      - `OrderItemRowId` string, uuid — The unique order item identifier
      - `ReturnRowId` integer — A unique identifier for the return line this refund relates to. If null, it is an independent refund
      - `ItemSKU` string — The Linnworks SKU for the item, assuming it is linked. If it is not, this matches the channel SKU
      - `ChannelSKU` string — The channel's SKU for the item
      - `ItemTitle` string — For a linked item, the Linnworks item title for this channel (or the default item title where a specific channel title does not exist). For an unlinked item, this is the title provided by the channel
      - `Cost` number, double — The tax-inclusive cost for this line
      - `CancelledQuantity` integer — If a refund is linked to a cancellation request, this field denotes the amount of the item cancelled
    - `ValidationError` string — If validation has failed for this item, the field will be populated with the appropriate error message
    - `Error` string
    - `Errors` RefundError[]
      - `RefundRowId` string, uuid
      - `ErrorMessage` string
      - `DateStamp` string, date-time
      - `Acknowledged` boolean
    - `Actioned` boolean — Line-level indicator of whether the refund has been actioned
    - `ActionedDate` string, date-time — If a refund has been actioned, this denotes the date it was actioned. For not actioned lines, this value is null
    - `ChannelInitiated` boolean — Identifies whether the refund was created manually in Linnworks, or downloaded from the channel automatically
    - `Internal` boolean — Identifies whether the line is processed only internally or also on a third-party channel
    - `Deleted` boolean — Identifies whether the line has been removed from the refund, and is pending an update to the database to reflect this
    - `ExternalReference` string — The channel reference number for this refund
    - `IsFreeText` boolean — Identifies whether the refund reason is provided in freetext, or as one of a predefined set of options
    - `FreeTextOrNote` string — For freetext refund reasons, this is the reason that will be sent to the channel. Otherwise, it is considered an internal note
    - `Amount` number, double — The amount to be refunded for this line
    - `Quantity` integer — Used when the refund is part of a return
    - `ReasonTag` string — For channels that support predefined refund reasons, this is the tag that identifies a predefined reason
    - `SubReasonTag` string — For channels that support a secondary predefined refund reason, this is the tag that identifies a predefined secondary reason
    - `InsufficientRefundTag` string — For channels that require a reason when the refund is lower than the full line amount, this is the tag that identifies a predefined insufficient refund reason
    - `InsufficientRefundNote` string — For channels that require a reason when the refund is lower than the full line amount, and support a freetext note, this field populates that note
    - `ReasonCategory` string — Internal reason category

---

[API](https://skmtc.dev/linnworks/apis/authenticate-api.md) · [All operations](https://skmtc.dev/linnworks/apis/authenticate-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/linnworks/authenticate-api/revisions/0123569a22fb/schema)
