> For the complete documentation index, see [llms.txt](https://resources.atriptech.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://resources.atriptech.com/api-wen-dang/api-reference/post-booking-apis/refunds.md).

# 退款

{% hint style="info" %}
💬 **需要帮助？** 如果遇到问题，请在帮助中心咨询 Eva，快速获取诊断建议。

<a href="https://www.atriptech.com/" class="button primary" data-icon="comments">咨询 Eva</a>
{% endhint %}

退款标准流程为 `refundQuotation.do` → `refund.do` → `queryRefundOrders.do`。

先获取最新退款报价，再提交退款，并持续查询最终状态。

### 常见问题

#### 何时应使用退款而不是作废？

当作废窗口已过，或订单需要走退款流程时，使用退款。

订单仍符合航司作废条件时，应使用作废路径。

#### 提交退款前应确认什么？

确认原始 `orderNo` 正确、行程信息完整，并且最新退款报价仍然有效。

流程要求时，还应确认出票已完成。

#### 退款流程中应保留哪些标识符？

提交退款时保留最新的 `refundOfferId`。

提交后保留 `refundCode`，并使用 `queryRefundOrders.do` 跟进最终状态。

### 相关指南

使用[退款](/api-wen-dang/product-guides/post-booking/refunds.md)了解完整退款流程和资格条件。

订单仍可能作废时，先使用[作废](/api-wen-dang/api-reference/post-booking-apis/void.md)确认正确路径。

## Refund Quotation

> \*\*Dependency\*\*\
> No preceding function needs to be carried out.\
> \
> \> ### Introduction\
> \> The Refund section includes a series of steps required for refunds, including requesting a refund quote, submitting the refund, and returning the refund status and results. This service supports the submission of requests for cancellation that require Atlas to process or for refunds that need to be executed by Atlas. It also allows a variety of cancellation and refund types, including voluntary, involuntary and void, etc.\
> \> ### Features\
> \>   - Refund reason: Voluntary, Involuntary, Void\
> \>   - Service Level:\
> \>      \&#9702; Our refund quotations fall into three scenarios:\
> \>        a. We can obtain an accurate quotation from the airline and will quote it directly to you;\
> \>        b. We cannot obtain an accurate quotation through the airline. You can still submit the refund request, then we will process the refund, but the refund amount will be based on the actual amount refunded by the airline;\
> \>        c. Unrefundable\
> \>      \&#9702; Our refund service includes the below steps,\
> \>        a. Atlas submits the refund request to the airline: We provide a service time guarantee;\
> \>        b. Airline processes the refund request and responds with the result, and airline executes the refund. The duration for 2 steps depends on the airline's processing speed, and we will provide an estimated reference time based on our experience in handling such cases.\
> \> \
> \> Please note the below while initiating a refund transaction.\
> \>   1. \*\*Refund of either inbound or outbound sector\*\*: The full ticket needs to be refunded. Only outbound OR inbound sector cannot be refunded. Please contact the airline for the same.\
> \>   2. \*\*Refund for a partially used itinerary\*\*: Partially used itinerary cannot be refunded. Please contact the airline for the same.\
> \>   3. \*\*Refund for a specific passenger\*\*: We support the refund of a specific passenger in an itinerary. For example, if there are 3 passengers and only one of them is to be refunded, please send us your refund request.\
> \>   4. Apart from voluntary, involuntary and void, we currently do not support other types of refunds, such as medical or death refunds. Please contact customer service for manual assistance.\
> \>   5. The customer is responsible to check whether the traveler has already made ancillary purchase in the transaction.\
> \>   6. No email notifications will be sent for refunds rejected by Atlas.\
> \
> \*\*Endpoint:\*\*\
> <https://sandbox.atriptech.com/refundQuotation.do>

```json
{"openapi":"3.0.1","info":{"title":"Default module","version":"1.0.0"},"security":[],"paths":{"/refundQuotation.do":{"post":{"summary":"Refund Quotation","deprecated":false,"description":"**Dependency**\nNo preceding function needs to be carried out.\n\n> ### Introduction\n> The Refund section includes a series of steps required for refunds, including requesting a refund quote, submitting the refund, and returning the refund status and results. This service supports the submission of requests for cancellation that require Atlas to process or for refunds that need to be executed by Atlas. It also allows a variety of cancellation and refund types, including voluntary, involuntary and void, etc.\n> ### Features\n>   - Refund reason: Voluntary, Involuntary, Void\n>   - Service Level:\n>      &#9702; Our refund quotations fall into three scenarios:\n>        a. We can obtain an accurate quotation from the airline and will quote it directly to you;\n>        b. We cannot obtain an accurate quotation through the airline. You can still submit the refund request, then we will process the refund, but the refund amount will be based on the actual amount refunded by the airline;\n>        c. Unrefundable\n>      &#9702; Our refund service includes the below steps,\n>        a. Atlas submits the refund request to the airline: We provide a service time guarantee;\n>        b. Airline processes the refund request and responds with the result, and airline executes the refund. The duration for 2 steps depends on the airline's processing speed, and we will provide an estimated reference time based on our experience in handling such cases.\n> \n> Please note the below while initiating a refund transaction.\n>   1. **Refund of either inbound or outbound sector**: The full ticket needs to be refunded. Only outbound OR inbound sector cannot be refunded. Please contact the airline for the same.\n>   2. **Refund for a partially used itinerary**: Partially used itinerary cannot be refunded. Please contact the airline for the same.\n>   3. **Refund for a specific passenger**: We support the refund of a specific passenger in an itinerary. For example, if there are 3 passengers and only one of them is to be refunded, please send us your refund request.\n>   4. Apart from voluntary, involuntary and void, we currently do not support other types of refunds, such as medical or death refunds. Please contact customer service for manual assistance.\n>   5. The customer is responsible to check whether the traveler has already made ancillary purchase in the transaction.\n>   6. No email notifications will be sent for refunds rejected by Atlas.\n\n**Endpoint:**\nhttps://sandbox.atriptech.com/refundQuotation.do","tags":[],"parameters":[{"name":"Accept","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"Accept-Encoding","in":"header","description":"","required":true,"schema":{"type":"string","default":"gzip"}},{"name":"x-atlas-client-id","in":"header","description":"","required":true,"schema":{"type":"string","default":"<YOUR_CLIENT_ID>"}},{"name":"x-atlas-client-secret","in":"header","description":"","required":true,"schema":{"type":"string","default":"<YOUR_CLIENT_SECRET>"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"orderNo":{"type":"string","description":"Atlas original order number.  You can choose to request either orderNo or both airlinePNR and carrier. If you use `orderNo`, the `airlinePNR` and `carrier` fields may be null.","nullable":true},"airlinePNR":{"type":"string","description":"The record locator of the airline. You can choose to request either orderNo or both airlinePNR and carrier. If you use `airlinePNR` and `carrier`, the `orderNo`  field may be null.","nullable":true},"carrier":{"type":"string","description":"2 character IATA airline code. you can choose to request either orderNo or both airlinePNR and carrier. If you use `airlinePNR` and `carrier`, the `orderNo`  field may be null.","nullable":true},"refundRequestList":{"type":"array","items":{"$ref":"#/components/schemas/RefundPaxSegments"}}},"required":["orderNo","airlinePNR","carrier","refundRequestList"]}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","description":"Status code. \n0 : Success\n801：Order not found for refund. Check the original main ticket order number.\n802：Child cannot travel alone on this booking. Contact airline directly for resolution.\n803：Refund already submitted for this passenger or segment. Query refund status instead.\n804：All segments of the same PNR must be submitted together. Include all segments and retry.\n8041：Segment not found in this order. Verify segment details match the original booking.\n805：refundOfferId expired. Call refundOffer.do again for a fresh ID, then resubmit.\n806：Please submit Self Refund instead.\n807：Passenger not found in this order. Verify passenger details match the original booking.\n808：This ticket is non-refundable per airline policy.\n809：Order not yet ticketed. Wait until orderQuery.do returns order_status=2 before refunding.\n810：Invalid request parameters\n811：Incomplete itinerary: all legs/segments required. Resubmit with full round-trip or connection.\n812：Refund passenger details are inconsistent with the original booking\n813：Illegal refund offer state\n814：Refund submission already in progress. Wait before retrying.\n815：Ticket not found. Verify ticket number and order number.\n816：Refund already submitted for this order. Query refund status instead of resubmitting.\n817：Refund already submitted for this order. Query refund status instead of resubmitting.\n818：Refund already submitted for this order. Query refund status instead of resubmitting.\n819：Refund claim not supported for this payment method. Use an alternative refund method.\n820：Ticket already used — cannot refund a flown segment.\n821：Refund deadline exceeded. This ticket is no longer eligible for refund.\n822：Refund deadline exceeded. This ticket can no longer be refunded.\n823：Refund must apply to all passengers — partial refund not allowed. Include all pax and retry.\n824：Wrong orderNumber: use the main ticket order, not the ancillary order number.\n825：For voluntary refunds after departure, submit a refund booking through the Flight Deck.\n826：Unable to confirm airline tax refund status. Refund request cannot be processed.\n840：Client cancellation criteria not met. Check account cancellation policy.\n841：Refund not support the payment method. Please contact the airline directly for resolution.\n842：Atlas does not currently support REFUND service for the airline or route of this booking.\n843：Atlas does not currently support refund service for the airline or route of this booking.","enum":[0,2]},"msg":{"type":"string","description":"Error message\nThe ‘msg’ element is for description of the results. Please do not use this field to check the success or failure of the request. Only use the ‘status’ code to check the result.","nullable":true},"fastConfirmation":{"type":"integer","description":"Fast confirmation depends on whether the airline supports auto fulfillment.\n0 for False, 1 for True.","enum":[0,1]},"expectedConfirmationDate":{"type":"string","description":"Expected date of getting airline refund confirmation. The format is `yyyyMMdd`."},"expectedRefundDate":{"type":"string","description":"Expected date of getting refund. The format is `yyyyMMdd`."},"refundQuoteType":{"type":"string","description":"Type of refund quote:\n- AccurateQuote：quotation based on the calculated amount.\n- CannotQuote: quotation is unknown and will be according to the airline's rates","enum":["AccurateQuote","CannotQuote"]},"refundOfferId":{"type":"string","description":"Refund offer id for this quotation which can be used for the coming refund call."},"refundMethod":{"type":"string","description":"Refund method: CashBackToOriginalPayment or Voucher.\n- CashBackToOriginalPayment: Refund cash back to the original form of payment.\n- Voucher: Refund in the form of a voucher.","enum":["CashBackToOriginalPayment","Voucher"]},"refundTickets":{"type":"array","items":{"$ref":"#/components/schemas/RefundTicket"},"description":"The refund calculation for each of the passengers whose refund quote has been requested"},"refundFareAmount":{"$ref":"#/components/schemas/RefundFareAmount","description":"If `refundMethod` is CashBackToOriginalPayment, the `refundFareAmount` field is not null and the `refundVouchers` is null.","nullable":true},"refundPostTicketingServiceAmounts":{"$ref":"#/components/schemas/RefundPostTicketingServiceAmount","description":"The refund calculation for Post-ticketing Servrice, including baggage etc. Each post-ticketing order will be present as an object.","nullable":true},"refundVouchers":{"type":"array","items":{"$ref":"#/components/schemas/RefundVoucher"},"description":"If `refundMethod` is Voucher, the `refundVouchers` is not null.","nullable":true},"serviceFee":{"description":"Service fee of refund.","type":"object","properties":{"currency":{"type":"string","description":"Currency used for the service fee.\n3-letter ISO currency code."},"transactionFee":{"type":"number","description":"Transaction Fee of refund."}},"required":["currency","transactionFee"]},"refundRules":{"type":"array","items":{"$ref":"#/components/schemas/RefundRule"},"description":"The refund rules for the fare whose refund quote has been requested."},"orderNo":{"type":"string","description":"Original order number"},"isRefundable":{"type":"boolean","description":"True : Refundable False: Non-Refundable\ntrue or false"}},"required":["status","fastConfirmation","expectedConfirmationDate","expectedRefundDate","refundQuoteType","refundOfferId","refundMethod","refundTickets","serviceFee","orderNo","isRefundable"]}}},"headers":{}}}}}},"components":{"schemas":{"RefundPaxSegments":{"type":"object","properties":{"lastName":{"type":"string","description":"Last name of the passenger requesting a refund."},"firstName":{"type":"string","description":"First name of the passenger requesting a refund."},"segments":{"type":"array","items":{"$ref":"#/components/schemas/RefundSegment"}},"refundReason":{"type":"string","description":"Code representing the reason for the refund request.\n- 0: Involuntary\n- 1: Voluntary\n- 4: Void","enum":["0","1","4"]}},"required":["lastName","firstName","segments","refundReason"]},"RefundSegment":{"type":"object","properties":{"depDate":{"type":"string","description":"Departure date of the segment which the passenger wants to refund. the format is `yyyyMMdd`.","format":"date"},"flightNo":{"type":"string","description":"Flight number of the segment which the passenger wants to refund."},"depAirport":{"type":"string","description":"3-letter IATA code of the departure airport."},"arrAirport":{"type":"string","description":"3-letter IATA code of the arrival airport."}},"required":["depDate","flightNo","depAirport","arrAirport"]},"RefundTicket":{"type":"object","properties":{"lastName":{"type":"string","description":"Last name of the passenger who wants to refund."},"firstName":{"type":"string","description":"First name of the passenger who wants to refund."},"ticketNo":{"type":"string","description":"The PNR received from the airline in the retrieve PNR response."}},"required":["lastName","firstName","ticketNo"]},"RefundFareAmount":{"type":"object","properties":{"currency":{"type":"string","description":"The refund calculation for flight fare and inflow ancillaries.\n3-letter ISO currency code."},"originalFareAmount":{"type":"number","description":"Original fare of the flight."},"estimatedRefundAmount":{"type":"number","description":"Estimated amount which can be got back for this refund of flight."},"displayOriginalFareAmount":{"type":"number","description":"Original Fare Amount in display currency.","nullable":true},"displayEstimatedRefundAmount":{"type":"number","description":"EstimatedRefundAmount in display currency.","nullable":true}},"required":["currency","originalFareAmount","estimatedRefundAmount"]},"RefundPostTicketingServiceAmount":{"type":"object","properties":{"postTicketingOrderNo":{"type":"string","description":"Unique order number for the post-ticketing service."},"currency":{"type":"string","description":"Currency used for post-ticketing service calculations.\n3-letter ISO currency code."},"originalPostTicketingServiceAmount":{"type":"number","description":"The original amount charged for the post-ticketing service."},"estimatedRefundAmount":{"type":"number","description":"Estimated amount which can be got back for this refund of Ancillaries."},"displayPostTicketingServiceAmount":{"type":"number","description":"The original post-ticketing service amount in the display currency.","nullable":true},"displayEstimatedRefundAmount":{"type":"number","description":"The estimated refund amount displayed in the display currency.","nullable":true}},"required":["currency","originalPostTicketingServiceAmount","estimatedRefundAmount","postTicketingOrderNo"],"description":"The refund calculation for Post-ticketing Servrice, including baggage"},"RefundVoucher":{"type":"object","properties":{"voucherId":{"type":"string","description":"A unique identifier of Atlas used to distinguish different vouchers.","nullable":true},"voucherCode":{"type":"string","description":"The voucherCode airline returned.","nullable":true},"eligiblePassengers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The eligible passenger’s name.","nullable":true}}},"description":"The passenger information eligible to use this voucher."},"airline":{"type":"string","description":"The airline from which the voucher originates.","nullable":true},"estimatedRefundAmount":{"type":"number","description":"The amount value of the voucher."},"currency":{"type":"string","description":"The currency type of the voucher."},"voucherStartDate":{"type":"string","description":"The date on which the voucher can begin to be used. Defaults to the date when the refund status is set to \"Refunded\". The format is `yyyyMMdd`.","nullable":true},"voucherEndDate":{"type":"string","description":"The expiry date of the voucher. The format is `yyyyMMdd`.","nullable":true},"travelStartDate":{"type":"string","description":"The actual travel start date. The format is `yyyyMMdd`.","nullable":true},"travelEndDate":{"type":"string","description":"The actual travel end date. The format is `yyyyMMdd`.","nullable":true},"note":{"type":"string","description":"A brief description or usage rule explanation for the voucher.","nullable":true}},"required":["estimatedRefundAmount","currency"],"description":"Information about the voucher refund."},"RefundRule":{"type":"object","properties":{"airline":{"type":"string","description":"Airline code for which the refund rule applies.\n 2-letter IATA airline code."},"ruleType":{"type":"string","description":"Rule type.\n0: Involuntary Refund\n1: Voluntary Refund \n2: Tax Refund\n3: Special Refund\n4: Void Refund","enum":["0","1","2","3","4"]},"passengerType":{"type":"string","description":"Passenger type for which the refund rule applies.\nCan be ADT (Adult), CHD (Child), INF (Infant).","enum":["ADT","CHD","INF"]},"penaltyAmount":{"type":"string","description":"The penalty amount charged for the refund.\nMonetary value with currency code."},"penaltyPercent":{"type":"number","description":"The percentage of the fare charged as penalty."},"penaltyPercentBase":{"type":"string","description":"The calculation on which the penalty percentage is based.\nCan be fare, fare+tax.","enum":["fare","fare+tax"]},"airlineFee":{"type":"string","description":"Additional airline fee for processing the refund.\n Monetary value with currency code."},"taxRefundable":{"type":"boolean","description":"Indicates whether the tax is refundable is available.\ntrue or false"},"fareRefundable":{"type":"boolean","description":"Indicates whether the ticket is refundable.\ntrue or false."},"refundableAncillaries":{"type":"array","items":{"type":"string","description":"Refundable ancillary service\nThe options are:\nStandardCheckInBaggage\nCabinBaggage\nCabinBaggageUnderSeat\nCabinBaggageOverheadLocker","enum":["StandardCheckInBaggage","CabinBaggage","CabinBaggageUnderSeat","CabinBaggageOverheadLocker"]},"description":"List of refundable ancillary services, if any."},"startMinute":{"type":"integer","description":"Starting time of rule application. \nPositive numbers represent XXX minutes before departure.\nNegative numbers represent XXX minutes after departure."},"endMinute":{"type":"integer","description":"Ending time of rule application. \nPositive numbers represent XXX minutes before departure. \nNegative numbers represent XXX minutes after departure."},"refundMethod":{"type":"string","description":"Refund method:\nCashBackToOriginalPayment or Voucher.\n- CashBackToOriginalPayment: Refund cash back to the original form of payment\n- Voucher: Refund in the form of a voucher","enum":["CashBackToOriginalPayment","Voucher"]}},"required":["airline","ruleType"]}}}}
```

## Make a Refund

> \*\*Dependency\*\*\
> Refund quotation function should be called in prior of this call\
> \
> \*\*Endpoint:\*\*\
> <https://sandbox.atriptech.com/refund.do>

```json
{"openapi":"3.0.1","info":{"title":"Default module","version":"1.0.0"},"security":[],"paths":{"/refund.do":{"post":{"summary":"Make a Refund","deprecated":false,"description":"**Dependency**\nRefund quotation function should be called in prior of this call\n\n**Endpoint:**\nhttps://sandbox.atriptech.com/refund.do","tags":[],"parameters":[{"name":"Accept","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"Accept-Encoding","in":"header","description":"","required":true,"schema":{"type":"string","default":"gzip"}},{"name":"x-atlas-client-id","in":"header","description":"","required":true,"schema":{"type":"string","default":"<YOUR_CLIENT_ID>"}},{"name":"x-atlas-client-secret","in":"header","description":"","required":true,"schema":{"type":"string","default":"<YOUR_CLIENT_SECRET>"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"orderNo":{"type":"string","description":"Atlas original order number.  You can choose to request either orderNo or both airlinePNR and carrier. If you use `orderNo`, the `airlinePNR` and `carrier` fields may be null.","nullable":true},"airlinePNR":{"type":"string","description":"The record locator of the airline. You can choose to request either orderNo or both airlinePNR and carrier. If you use `airlinePNR` and `carrier`, the `orderNo`  field may be null.","nullable":true},"carrier":{"type":"string","description":"2 character IATA airline code. you can choose to request either orderNo or both airlinePNR and carrier. If you use `airlinePNR` and `carrier`, the `orderNo`  field may be null.","nullable":true},"displayCurrency":{"type":"string","description":"The alternative currency in which the fare and taxes amount needs to be displayed. The 3-letter currency code should be entered.","nullable":true},"refundOfferId":{"type":"string","description":"Get this from the refund quotation response. You can request with refundOfferId or refundRequestList. If you use `refundRequestList`, the field `refundOfferId` is null.","nullable":true},"refundRequestList":{"type":"array","items":{"$ref":"#/components/schemas/RefundPaxSegments"},"description":"You can request with refundOfferId or refundRequestList. If you use `refundOfferId`, the field `refundRequestList` is null.","nullable":true}},"required":["orderNo","airlinePNR","carrier","refundOfferId"]}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiRefundApplyResponse"}}},"headers":{}}}}}},"components":{"schemas":{"RefundPaxSegments":{"type":"object","properties":{"lastName":{"type":"string","description":"Last name of the passenger requesting a refund."},"firstName":{"type":"string","description":"First name of the passenger requesting a refund."},"segments":{"type":"array","items":{"$ref":"#/components/schemas/RefundSegment"}},"refundReason":{"type":"string","description":"Code representing the reason for the refund request.\n- 0: Involuntary\n- 1: Voluntary\n- 4: Void","enum":["0","1","4"]}},"required":["lastName","firstName","segments","refundReason"]},"RefundSegment":{"type":"object","properties":{"depDate":{"type":"string","description":"Departure date of the segment which the passenger wants to refund. the format is `yyyyMMdd`.","format":"date"},"flightNo":{"type":"string","description":"Flight number of the segment which the passenger wants to refund."},"depAirport":{"type":"string","description":"3-letter IATA code of the departure airport."},"arrAirport":{"type":"string","description":"3-letter IATA code of the arrival airport."}},"required":["depDate","flightNo","depAirport","arrAirport"]},"ApiRefundApplyResponse":{"type":"object","properties":{"status":{"type":"integer","description":"Status code. \n0 : Success\n801：Order not found for refund. Check the original main ticket order number.\n802：Child cannot travel alone on this booking. Contact airline directly for resolution.\n803：Refund already submitted for this passenger or segment. Query refund status instead.\n804：All segments of the same PNR must be submitted together. Include all segments and retry.\n8041：Segment not found in this order. Verify segment details match the original booking.\n805：refundOfferId expired. Call refundOffer.do again for a fresh ID, then resubmit.\n806：Please submit Self Refund instead.\n807：Passenger not found in this order. Verify passenger details match the original booking.\n808：This ticket is non-refundable per airline policy.\n809：Order not yet ticketed. Wait until orderQuery.do returns order_status=2 before refunding.\n810：Invalid request parameters\n811：Incomplete itinerary: all legs/segments required. Resubmit with full round-trip or connection.\n812：Refund passenger details are inconsistent with the original booking\n813：Illegal refund offer state\n814：Refund submission already in progress. Wait before retrying.\n815：Ticket not found. Verify ticket number and order number.\n816：Refund already submitted for this order. Query refund status instead of resubmitting.\n817：Refund already submitted for this order. Query refund status instead of resubmitting.\n818：Refund already submitted for this order. Query refund status instead of resubmitting.\n819：Refund claim not supported for this payment method. Use an alternative refund method.\n820：Ticket already used — cannot refund a flown segment.\n821：Refund deadline exceeded. This ticket is no longer eligible for refund.\n822：Refund deadline exceeded. This ticket can no longer be refunded.\n823：Refund must apply to all passengers — partial refund not allowed. Include all pax and retry.\n824：Wrong orderNumber: use the main ticket order, not the ancillary order number.\n825：For voluntary refunds after departure, submit a refund booking through the Flight Deck.\n826：Unable to confirm airline tax refund status. Refund request cannot be processed.\n840：Client cancellation criteria not met. Check account cancellation policy.\n841：Refund not support the payment method. Please contact the airline directly for resolution.\n842：Atlas does not currently support REFUND service for the airline or route of this booking.\n843：Atlas does not currently support refund service for the airline or route of this booking.","enum":[0,2]},"msg":{"type":"string","description":"Error message\nThe ‘msg’ element is for description of the results. Please do not use this field to check the success or failure of the request. Only use the ‘status’ code to check the result.","nullable":true},"displayCurrency":{"type":"string","description":"The alternative currency in which the fare and taxes amount needs to be displayed. The 3-letter currency code should be entered.","nullable":true},"fastConfirmation":{"type":"integer","description":"Fast confirmation depends on whether the airline supports auto fulfillment.\n0 for False, 1 for True.","enum":[0,1]},"expectedConfirmationDate":{"type":"string","description":"Expected date of getting airline refund confirmation. The format is `yyyyMMdd`."},"expectedRefundDate":{"type":"string","description":"Expected date of getting refund. The format is `yyyyMMdd`."},"refundQuoteType":{"type":"string","description":"Type of refund quote:\n- AccurateQuote：quotation based on the calculated amount.\n- CannotQuote: quotation is unknown and will be according to the airline's rates","enum":["AccurateQuote","CannotQuote"]},"refundOfferId":{"type":"string","description":"Refund offer id for this quotation which can be used for the coming refund call."},"refundMethod":{"type":"string","description":"Refund method: CashBackToOriginalPayment or Voucher.\n- CashBackToOriginalPayment: Refund cash back to the original form of payment.\n- Voucher: Refund in the form of a voucher.","enum":["CashBackToOriginalPayment","Voucher"]},"refundTickets":{"type":"array","items":{"$ref":"#/components/schemas/RefundTicket"},"description":"The refund calculation for each of the passengers whose refund quote has been requested"},"refundFareAmount":{"$ref":"#/components/schemas/RefundFareAmount","description":"If `refundMethod` is CashBackToOriginalPayment, the `refundFareAmount` field is not null and the `refundVouchers` is null.","nullable":true},"refundPostTicketingServiceAmounts":{"$ref":"#/components/schemas/RefundPostTicketingServiceAmount","description":"The refund calculation for Post-ticketing Servrice, including baggage etc. Each post-ticketing order will be present as an object.","nullable":true},"refundVouchers":{"type":"array","items":{"$ref":"#/components/schemas/RefundVoucher"},"description":"If `refundMethod` is Voucher, the `refundVouchers` is not null.","nullable":true},"serviceFee":{"$ref":"#/components/schemas/ServiceFee1","description":"Service fee of refund."},"refundRules":{"type":"array","items":{"$ref":"#/components/schemas/RefundRule"},"description":"The refund rules for the fare whose refund quote has been requested."},"orderNo":{"type":"string","description":"Original order number"},"isRefundable":{"type":"boolean","description":"True : Refundable False: Non-Refundable\ntrue or false"},"refundStatus":{"type":"integer","description":"The present status of the refund.\nThe options are:\n0: Atlas Processing\n1: Airline Processing (Submitted to airline by Atlas)\n2: Refunded\n3: Airline Refunding\n4: Rejected\n5: Fullfillment Done\n6: Withdrew\nIf the ticket is paid by deposit: the status can be 0,1,2,3,4\nIf the ticket is paid by VCC pass through: the status can be 0,1,4,5,6\nWithdrew is only in the refund claim"},"refundCode":{"type":"string","description":"Refund order number generated for this refund request"},"cancelReason":{"type":"string","description":"The reason why the refund was cancelled.\nThe refund reasons are:\nDoes not match airline policy\nThere is no schedule change from the airline side. Please refer the ticket Fare Rules available in ATRIP flight deck for cancellation charges.\nVoluntary Cancellation - Non-Refundable\nAs per airline policy, only voucher refund is available for the ticket\nRefund request cancelled by the user\nTravel has been completed by the passenger\nRefund not yet received from the airline. Please try again later.","nullable":true},"refundReason":{"type":"string","description":"Refund reason\n0: Involuntary\n1: Voluntary\n4: Void","enum":["0","1","4"],"nullable":true}},"required":["refundStatus","refundCode","status","fastConfirmation","expectedConfirmationDate","expectedRefundDate","refundQuoteType","refundOfferId","refundMethod","refundTickets","serviceFee","orderNo","isRefundable"]},"RefundTicket":{"type":"object","properties":{"lastName":{"type":"string","description":"Last name of the passenger who wants to refund."},"firstName":{"type":"string","description":"First name of the passenger who wants to refund."},"ticketNo":{"type":"string","description":"The PNR received from the airline in the retrieve PNR response."}},"required":["lastName","firstName","ticketNo"]},"RefundFareAmount":{"type":"object","properties":{"currency":{"type":"string","description":"The refund calculation for flight fare and inflow ancillaries.\n3-letter ISO currency code."},"originalFareAmount":{"type":"number","description":"Original fare of the flight."},"estimatedRefundAmount":{"type":"number","description":"Estimated amount which can be got back for this refund of flight."},"displayOriginalFareAmount":{"type":"number","description":"Original Fare Amount in display currency.","nullable":true},"displayEstimatedRefundAmount":{"type":"number","description":"EstimatedRefundAmount in display currency.","nullable":true}},"required":["currency","originalFareAmount","estimatedRefundAmount"]},"RefundPostTicketingServiceAmount":{"type":"object","properties":{"postTicketingOrderNo":{"type":"string","description":"Unique order number for the post-ticketing service."},"currency":{"type":"string","description":"Currency used for post-ticketing service calculations.\n3-letter ISO currency code."},"originalPostTicketingServiceAmount":{"type":"number","description":"The original amount charged for the post-ticketing service."},"estimatedRefundAmount":{"type":"number","description":"Estimated amount which can be got back for this refund of Ancillaries."},"displayPostTicketingServiceAmount":{"type":"number","description":"The original post-ticketing service amount in the display currency.","nullable":true},"displayEstimatedRefundAmount":{"type":"number","description":"The estimated refund amount displayed in the display currency.","nullable":true}},"required":["currency","originalPostTicketingServiceAmount","estimatedRefundAmount","postTicketingOrderNo"],"description":"The refund calculation for Post-ticketing Servrice, including baggage"},"RefundVoucher":{"type":"object","properties":{"voucherId":{"type":"string","description":"A unique identifier of Atlas used to distinguish different vouchers.","nullable":true},"voucherCode":{"type":"string","description":"The voucherCode airline returned.","nullable":true},"eligiblePassengers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The eligible passenger’s name.","nullable":true}}},"description":"The passenger information eligible to use this voucher."},"airline":{"type":"string","description":"The airline from which the voucher originates.","nullable":true},"estimatedRefundAmount":{"type":"number","description":"The amount value of the voucher."},"currency":{"type":"string","description":"The currency type of the voucher."},"voucherStartDate":{"type":"string","description":"The date on which the voucher can begin to be used. Defaults to the date when the refund status is set to \"Refunded\". The format is `yyyyMMdd`.","nullable":true},"voucherEndDate":{"type":"string","description":"The expiry date of the voucher. The format is `yyyyMMdd`.","nullable":true},"travelStartDate":{"type":"string","description":"The actual travel start date. The format is `yyyyMMdd`.","nullable":true},"travelEndDate":{"type":"string","description":"The actual travel end date. The format is `yyyyMMdd`.","nullable":true},"note":{"type":"string","description":"A brief description or usage rule explanation for the voucher.","nullable":true}},"required":["estimatedRefundAmount","currency"],"description":"Information about the voucher refund."},"ServiceFee1":{"type":"object","properties":{"currency":{"type":"string","description":"Currency used for the service fee.\n3-letter ISO currency code."},"transactionFee":{"type":"number","description":"Transaction Fee of refund."},"displayTransactionFee":{"type":"number","description":"TransactionFee in display currency.","nullable":true}},"required":["currency","transactionFee"],"description":"Service fee of refund."},"RefundRule":{"type":"object","properties":{"airline":{"type":"string","description":"Airline code for which the refund rule applies.\n 2-letter IATA airline code."},"ruleType":{"type":"string","description":"Rule type.\n0: Involuntary Refund\n1: Voluntary Refund \n2: Tax Refund\n3: Special Refund\n4: Void Refund","enum":["0","1","2","3","4"]},"passengerType":{"type":"string","description":"Passenger type for which the refund rule applies.\nCan be ADT (Adult), CHD (Child), INF (Infant).","enum":["ADT","CHD","INF"]},"penaltyAmount":{"type":"string","description":"The penalty amount charged for the refund.\nMonetary value with currency code."},"penaltyPercent":{"type":"number","description":"The percentage of the fare charged as penalty."},"penaltyPercentBase":{"type":"string","description":"The calculation on which the penalty percentage is based.\nCan be fare, fare+tax.","enum":["fare","fare+tax"]},"airlineFee":{"type":"string","description":"Additional airline fee for processing the refund.\n Monetary value with currency code."},"taxRefundable":{"type":"boolean","description":"Indicates whether the tax is refundable is available.\ntrue or false"},"fareRefundable":{"type":"boolean","description":"Indicates whether the ticket is refundable.\ntrue or false."},"refundableAncillaries":{"type":"array","items":{"type":"string","description":"Refundable ancillary service\nThe options are:\nStandardCheckInBaggage\nCabinBaggage\nCabinBaggageUnderSeat\nCabinBaggageOverheadLocker","enum":["StandardCheckInBaggage","CabinBaggage","CabinBaggageUnderSeat","CabinBaggageOverheadLocker"]},"description":"List of refundable ancillary services, if any."},"startMinute":{"type":"integer","description":"Starting time of rule application. \nPositive numbers represent XXX minutes before departure.\nNegative numbers represent XXX minutes after departure."},"endMinute":{"type":"integer","description":"Ending time of rule application. \nPositive numbers represent XXX minutes before departure. \nNegative numbers represent XXX minutes after departure."},"refundMethod":{"type":"string","description":"Refund method:\nCashBackToOriginalPayment or Voucher.\n- CashBackToOriginalPayment: Refund cash back to the original form of payment\n- Voucher: Refund in the form of a voucher","enum":["CashBackToOriginalPayment","Voucher"]}},"required":["airline","ruleType"]}}}}
```

## Query Refund Status

> \*\*Dependency\*\*\
> No preceding function needs to be carried out.\
> \
> \*\*Endpoint:\*\*\
> <https://sandbox.atriptech.com/queryRefundOrders.do>

```json
{"openapi":"3.0.1","info":{"title":"Default module","version":"1.0.0"},"security":[],"paths":{"/queryRefundOrders.do":{"post":{"summary":"Query Refund Status","deprecated":false,"description":"**Dependency**\nNo preceding function needs to be carried out.\n\n**Endpoint:**\nhttps://sandbox.atriptech.com/queryRefundOrders.do","tags":[],"parameters":[{"name":"Accept","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"Content-Type","in":"header","description":"","required":true,"schema":{"type":"string"}},{"name":"Accept-Encoding","in":"header","description":"","required":true,"schema":{"type":"string","default":"gzip"}},{"name":"x-atlas-client-id","in":"header","description":"","required":true,"schema":{"type":"string","default":"<YOUR_CLIENT_ID>"}},{"name":"x-atlas-client-secret","in":"header","description":"","required":true,"schema":{"type":"string","default":"<YOUR_CLIENT_SECRET>"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"refundCode":{"type":"string","description":"The code of the refund transaction received in the refund.do response."},"orderNo":{"type":"string","description":"Atlas original order number. You can choose to request either orderNo or both airlinePNR and carrier. If you use `orderNo`, the `airlinePNR` and `carrier` fields may be null.","nullable":true},"airlinePNR":{"type":"string","description":"The record locator of the airline. You can choose to request either orderNo or both airlinePNR and carrier. If you use `airlinePNR` and `carrier`, the `orderNo`  field may be null.","nullable":true},"carrier":{"type":"string","description":"2 character IATA airline code. you can choose to request either orderNo or both airlinePNR and carrier. If you use `airlinePNR` and `carrier`, the `orderNo`  field may be null.","nullable":true},"displayCurrency":{"type":"string","description":"The alternative currency in which the fare and taxes amount needs to be displayed. The 3-letter currency code should be entered.","nullable":true}},"required":["orderNo","refundCode","airlinePNR","carrier"]}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"refundOrders":{"type":"array","items":{"$ref":"#/components/schemas/RefundOrder"}},"status":{"type":"integer","description":"Status code. \n0 : Success\n801：Order not found for refund. Check the original main ticket order number.\n802：Child cannot travel alone on this booking. Contact airline directly for resolution.\n803：Refund already submitted for this passenger or segment. Query refund status instead.\n804：All segments of the same PNR must be submitted together. Include all segments and retry.\n8041：Segment not found in this order. Verify segment details match the original booking.\n805：refundOfferId expired. Call refundOffer.do again for a fresh ID, then resubmit.\n806：Please submit Self Refund instead.\n807：Passenger not found in this order. Verify passenger details match the original booking.\n808：This ticket is non-refundable per airline policy.\n809：Order not yet ticketed. Wait until orderQuery.do returns order_status=2 before refunding.\n810：Invalid request parameters\n811：Incomplete itinerary: all legs/segments required. Resubmit with full round-trip or connection.\n812：Refund passenger details are inconsistent with the original booking\n813：Illegal refund offer state\n814：Refund submission already in progress. Wait before retrying.\n815：Ticket not found. Verify ticket number and order number.\n816：Refund already submitted for this order. Query refund status instead of resubmitting.\n817：Refund already submitted for this order. Query refund status instead of resubmitting.\n818：Refund already submitted for this order. Query refund status instead of resubmitting.\n819：Refund claim not supported for this payment method. Use an alternative refund method.\n820：Ticket already used — cannot refund a flown segment.\n821：Refund deadline exceeded. This ticket is no longer eligible for refund.\n822：Refund deadline exceeded. This ticket can no longer be refunded.\n823：Refund must apply to all passengers — partial refund not allowed. Include all pax and retry.\n824：Wrong orderNumber: use the main ticket order, not the ancillary order number.\n825：For voluntary refunds after departure, submit a refund booking through the Flight Deck.\n826：Unable to confirm airline tax refund status. Refund request cannot be processed.\n840：Client cancellation criteria not met. Check account cancellation policy.\n841：Refund not support the payment method. Please contact the airline directly for resolution.\n842：Atlas does not currently support REFUND service for the airline or route of this booking.\n843：Atlas does not currently support refund service for the airline or route of this booking."},"msg":{"type":"string","description":"Error message","nullable":true}},"required":["refundOrders","status"]}}},"headers":{}}}}}},"components":{"schemas":{"RefundOrder":{"type":"object","properties":{"orderNo":{"type":"string","description":"Original order number"},"refundCode":{"type":"string","description":"Refund order number generated for this refund request"},"displayCurrency":{"type":"string","description":"The alternative currency in which the fare and taxes amount needs to be displayed. The 3-letter currency code should be entered.","nullable":true},"expectedConfirmationDate":{"type":"string","description":"Expected date of getting airline refund confirmation. The format is `yyyyMMdd`."},"expectedRefundDate":{"type":"string","description":"Expected date of getting refund. The format is `yyyyMMdd`."},"refundQuoteType":{"type":"string","description":"Type of refund quote:\nAccurateQuote：quotation based on the calculated amount.\nCannotQuote: quotation is unknown and will be according to the airline's rates","enum":["AccurateQuote","CannotQuote"]},"refundTickets":{"type":"array","items":{"$ref":"#/components/schemas/RefundTicket"},"description":"The refund calculation for each of the passengers whose refund quote has been requested"},"refundFareAmount":{"$ref":"#/components/schemas/RefundFareAmount","nullable":true,"description":"If `refundMethod` is CashBackToOriginalPayment, the `refundFareAmount` field is not null."},"refundPostTicketingServiceAmounts":{"type":"array","items":{"$ref":"#/components/schemas/RefundPostTicketingServiceAmount"},"description":"The refund calculation for Post-ticketing Servrice, including baggage etc. Each post-ticketing order will be present as an object.","nullable":true},"refundVouchers":{"type":"array","items":{"$ref":"#/components/schemas/RefundVoucher"},"description":"If `refundMethod` is Voucher,  the `refundVouchers` field is not null.","nullable":true},"serviceFee":{"$ref":"#/components/schemas/ServiceFee1","description":"Service fee of refund."},"refundRules":{"type":"array","items":{"$ref":"#/components/schemas/RefundRule"},"description":"The refund rules for the fare whose refund quote has been requested."},"refundStatus":{"type":"integer","description":"The present status of the refund.\nThe options are:\n0: Atlas Processing\n1: Airline Processing (Submitted to airline by Atlas)\n2: Refunded\n3: Airline Refunding\n4: Rejected\n5: Fullfillment Done\n6: Withdrew\nIf the ticket is paid by deposit: the status can be 0,1,2,3,4\nIf the ticket is paid by VCC pass through: the status can be 0,1,4,5,6\nWithdrew is only in the refund claim","enum":[0,1,2,3,4,5,6]},"cancelReason":{"type":"string","description":"The reason why the refund was cancelled.\nThe refund reasons are:\nDoes not match airline policy.\nThere is no schedule change from the airline side. \\nPlease refer the ticket Fare Rules available in ATRIP flight deck for cancellation charges.\nVoluntary Cancellation - Non-Refundable\nAs per airline policy, only voucher refund is available for the ticket\nRefund request cancelled by the user\nTravel has been completed by the passenger.\nRefund not yet received from the airline. Please try again later.\nThe order is paid by your VCC. please refund by yourself\nIt's issued via your B2B account, please refund by yourself\nRefund is availalbe through airline's B2C website. Please refund by yourself.\nThe refund claim voucher is invalid.\nDuplicate Refund Record\nNeed to provide more materials that meet airline requirements\nActual refund amount less than service fee. Will reject it.","nullable":true},"refundOfferId":{"type":"string","description":"Refund offer id for this quotation which can be used for the coming refund call."},"refundMethod":{"type":"string","description":"Refund method: CashBackToOriginalPayment or Voucher"}},"required":["orderNo","refundCode","expectedConfirmationDate","expectedRefundDate","refundQuoteType","refundTickets","serviceFee","refundRules","refundStatus","refundOfferId","refundMethod"]},"RefundTicket":{"type":"object","properties":{"lastName":{"type":"string","description":"Last name of the passenger who wants to refund."},"firstName":{"type":"string","description":"First name of the passenger who wants to refund."},"ticketNo":{"type":"string","description":"The PNR received from the airline in the retrieve PNR response."}},"required":["lastName","firstName","ticketNo"]},"RefundFareAmount":{"type":"object","properties":{"currency":{"type":"string","description":"The refund calculation for flight fare and inflow ancillaries.\n3-letter ISO currency code."},"originalFareAmount":{"type":"number","description":"Original fare of the flight."},"estimatedRefundAmount":{"type":"number","description":"Estimated amount which can be got back for this refund of flight."},"displayOriginalFareAmount":{"type":"number","description":"Original Fare Amount in display currency.","nullable":true},"displayEstimatedRefundAmount":{"type":"number","description":"EstimatedRefundAmount in display currency.","nullable":true}},"required":["currency","originalFareAmount","estimatedRefundAmount"]},"RefundPostTicketingServiceAmount":{"type":"object","properties":{"postTicketingOrderNo":{"type":"string","description":"Unique order number for the post-ticketing service."},"currency":{"type":"string","description":"Currency used for post-ticketing service calculations.\n3-letter ISO currency code."},"originalPostTicketingServiceAmount":{"type":"number","description":"The original amount charged for the post-ticketing service."},"estimatedRefundAmount":{"type":"number","description":"Estimated amount which can be got back for this refund of Ancillaries."},"displayPostTicketingServiceAmount":{"type":"number","description":"The original post-ticketing service amount in the display currency.","nullable":true},"displayEstimatedRefundAmount":{"type":"number","description":"The estimated refund amount displayed in the display currency.","nullable":true}},"required":["currency","originalPostTicketingServiceAmount","estimatedRefundAmount","postTicketingOrderNo"],"description":"The refund calculation for Post-ticketing Servrice, including baggage"},"RefundVoucher":{"type":"object","properties":{"voucherId":{"type":"string","description":"A unique identifier of Atlas used to distinguish different vouchers.","nullable":true},"voucherCode":{"type":"string","description":"The voucherCode airline returned.","nullable":true},"eligiblePassengers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The eligible passenger’s name.","nullable":true}}},"description":"The passenger information eligible to use this voucher."},"airline":{"type":"string","description":"The airline from which the voucher originates.","nullable":true},"estimatedRefundAmount":{"type":"number","description":"The amount value of the voucher."},"currency":{"type":"string","description":"The currency type of the voucher."},"voucherStartDate":{"type":"string","description":"The date on which the voucher can begin to be used. Defaults to the date when the refund status is set to \"Refunded\". The format is `yyyyMMdd`.","nullable":true},"voucherEndDate":{"type":"string","description":"The expiry date of the voucher. The format is `yyyyMMdd`.","nullable":true},"travelStartDate":{"type":"string","description":"The actual travel start date. The format is `yyyyMMdd`.","nullable":true},"travelEndDate":{"type":"string","description":"The actual travel end date. The format is `yyyyMMdd`.","nullable":true},"note":{"type":"string","description":"A brief description or usage rule explanation for the voucher.","nullable":true}},"required":["estimatedRefundAmount","currency"],"description":"Information about the voucher refund."},"ServiceFee1":{"type":"object","properties":{"currency":{"type":"string","description":"Currency used for the service fee.\n3-letter ISO currency code."},"transactionFee":{"type":"number","description":"Transaction Fee of refund."},"displayTransactionFee":{"type":"number","description":"TransactionFee in display currency.","nullable":true}},"required":["currency","transactionFee"],"description":"Service fee of refund."},"RefundRule":{"type":"object","properties":{"airline":{"type":"string","description":"Airline code for which the refund rule applies.\n 2-letter IATA airline code."},"ruleType":{"type":"string","description":"Rule type.\n0: Involuntary Refund\n1: Voluntary Refund \n2: Tax Refund\n3: Special Refund\n4: Void Refund","enum":["0","1","2","3","4"]},"passengerType":{"type":"string","description":"Passenger type for which the refund rule applies.\nCan be ADT (Adult), CHD (Child), INF (Infant).","enum":["ADT","CHD","INF"]},"penaltyAmount":{"type":"string","description":"The penalty amount charged for the refund.\nMonetary value with currency code."},"penaltyPercent":{"type":"number","description":"The percentage of the fare charged as penalty."},"penaltyPercentBase":{"type":"string","description":"The calculation on which the penalty percentage is based.\nCan be fare, fare+tax.","enum":["fare","fare+tax"]},"airlineFee":{"type":"string","description":"Additional airline fee for processing the refund.\n Monetary value with currency code."},"taxRefundable":{"type":"boolean","description":"Indicates whether the tax is refundable is available.\ntrue or false"},"fareRefundable":{"type":"boolean","description":"Indicates whether the ticket is refundable.\ntrue or false."},"refundableAncillaries":{"type":"array","items":{"type":"string","description":"Refundable ancillary service\nThe options are:\nStandardCheckInBaggage\nCabinBaggage\nCabinBaggageUnderSeat\nCabinBaggageOverheadLocker","enum":["StandardCheckInBaggage","CabinBaggage","CabinBaggageUnderSeat","CabinBaggageOverheadLocker"]},"description":"List of refundable ancillary services, if any."},"startMinute":{"type":"integer","description":"Starting time of rule application. \nPositive numbers represent XXX minutes before departure.\nNegative numbers represent XXX minutes after departure."},"endMinute":{"type":"integer","description":"Ending time of rule application. \nPositive numbers represent XXX minutes before departure. \nNegative numbers represent XXX minutes after departure."},"refundMethod":{"type":"string","description":"Refund method:\nCashBackToOriginalPayment or Voucher.\n- CashBackToOriginalPayment: Refund cash back to the original form of payment\n- Voucher: Refund in the form of a voucher","enum":["CashBackToOriginalPayment","Voucher"]}},"required":["airline","ruleType"]}}}}
```
