Refund a flight ticket
Preview the refund terms for an issued ticket, then run the refund.
Refunding is two steps. First display the refund to see the penalty per ticket. Then execute the refund for the tickets you want back. Both take the booking UniqueId.
Preview a refund
POST/Air/AirRefundDisplay
Access requires the permission air_refund_display
Read the penalty and refundable status for each e-ticket before you commit.
Body parameters
| Name | Type | Required | Description |
|---|---|---|---|
SessionId | string | Yes | Your session id. |
UniqueId | string | Yes | The ticketed booking id. |
curl -X POST https://api.hermeseus.com/api/Air/AirRefundDisplay \
-H "Content-Type: application/json" \
-d '{
"SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
"UniqueId": "TP-2026-000512"
}'const res = await fetch("https://api.hermeseus.com/api/Air/AirRefundDisplay", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
SessionId: "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
UniqueId: "TP-2026-000512"
})
});
const data = await res.json();import requests
res = requests.post(
"https://api.hermeseus.com/api/Air/AirRefundDisplay",
json={
"SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
"UniqueId": "TP-2026-000512",
},
)
data = res.json()Response
| Field | Type | Description |
|---|---|---|
Success | boolean | true on success. |
RefundType | integer | Refund method code. |
EticketNumbers | array of object | One entry per e-ticket. See below. |
Error | object | null on success. |
{
"Success": true,
"RefundType": 1,
"EticketNumbers": [
{
"ETicketNumber": "235-1234567890",
"EticketStatus": "OPEN",
"IsRefunded": false,
"PenaltyAmount": 45.00,
"IsNonRefundable": false,
"Route": "IST-DXB",
"AirlinePnr": "ABC123"
}
],
"Error": null
}Run the refund
POST/Air/AirRefund
Access requires the permission air_refund
Execute the refund for the e-tickets you choose. Omit EticketNumbers to refund the whole booking.
Body parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
SessionId | string | Yes | - | Your session id. |
UniqueId | string | Yes | - | The ticketed booking id. |
RefundType | integer | No | 1 | Refund method code from the display step. |
EticketNumbers | array of string | No | - | The e-tickets to refund. Omit for all. |
RefundPaymentMode | integer | No | - | How the refund is paid back. |
curl -X POST https://api.hermeseus.com/api/Air/AirRefund \
-H "Content-Type: application/json" \
-d '{
"SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
"UniqueId": "TP-2026-000512",
"RefundType": 1,
"EticketNumbers": ["235-1234567890"]
}'const res = await fetch("https://api.hermeseus.com/api/Air/AirRefund", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
SessionId: "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
UniqueId: "TP-2026-000512",
RefundType: 1,
EticketNumbers: ["235-1234567890"]
})
});
const data = await res.json();import requests
res = requests.post(
"https://api.hermeseus.com/api/Air/AirRefund",
json={
"SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
"UniqueId": "TP-2026-000512",
"RefundType": 1,
"EticketNumbers": ["235-1234567890"],
},
)
data = res.json()Response
| Field | Type | Description |
|---|---|---|
Success | boolean | true on success. |
RefundEticketNumbers | array of object | The tickets that were refunded, with their refunded amounts. |
Error | object | null on success. |
{
"Success": true,
"RefundEticketNumbers": [
{ "ETicketNumber": "235-1234567890", "RefundAmount": 174.60, "Currency": "USD" }
],
"Error": null
}Errors
| Code | Meaning | Fix |
|---|---|---|
Err0103003 | Booking not found. | Check the UniqueId. |
Err0103010 | The booking is not refundable. | Read the display step for per-ticket refundable status. |

