# Reason Codes

> Catalogue of the reason codes (`reason_code`) GHN uses across the order lifecycle. Partners meet these codes in two places:

- **Sent** when [cancelling an order](https://developer.ghn.dev/en/docs/order/cancel.md) — the `reason_code` field (only the "Sender cancellation" group below).
- **Received** via the [Order Status Callback](https://developer.ghn.dev/en/docs/webhook/callback-order-status.md) — the `ReasonCode` + `Reason` field pair. Note that GHN sends the `Reason` text in Vietnamese; the tables below give the meaning of each code.

The catalogue is centrally managed by GHN (master data) and may grow over time — your system should tolerate unknown codes instead of failing.

## Sender cancellation

The codes partners may send in the [Cancel Order](https://developer.ghn.dev/en/docs/order/cancel.md) API.

| reason_code | Meaning |
| --- | --- |
| `GHN-CO001` | Pickup is taking too long |
| `GHN-CO002` | Out of stock, nothing to ship yet |
| `GHN-CO003` | Recipient no longer wants the order |
| `GHN-CANCEL-OTHER` | Other reason |

## Pickup failed

`GHN-PFA*`, `GHN-PFC*` — the pickup attempt failed; the order goes back to waiting for pickup.

| reason_code | Meaning |
| --- | --- |
| `GHN-PFA1A0` | Sender rescheduled the pickup date |
| `GHN-PFA1A1` | Sender prefers to drop off at a GHN post office |
| `GHN-PFA2A1` | Sender unreachable / line busy |
| `GHN-PFA2A2` | Wrong pickup info (address / phone) |
| `GHN-PFA2A3` | Sender did not answer the phone |
| `GHN-PFA3A2` | Staff ran into an issue |
| `GHN-PFA3A4` | Staff ran into an issue |
| `GHN-PFA3A5` | Staff ran into an issue |
| `GHN-PFA3A6` | Staff ran into an issue |
| `GHN-PFA3A7` | Staff ran into an issue |
| `GHN-PFA3A8` | Staff ran into an issue |
| `GHN-PFA3A9` | Staff ran into an issue |
| `GHN-PFA3A10` | Staff ran into an issue |
| `GHN-PFA3A11` | Staff ran into an issue |
| `GHN-PFA4A1` | Parcel violates packaging rules |
| `GHN-PFA4A2` | Goods GHN does not transport |
| `GHN-PFC1A8` | Staff ran into an issue |
| `GHN-PFC1A9` | Staff ran into an issue |

## Cancelled at pickup

`GHN-PCB*` — the order was cancelled right at pickup time.

| reason_code | Meaning |
| --- | --- |
| `GHN-PCB0B1` | Sender no longer wants to ship |
| `GHN-PCB0B2` | Parcel violates weight / size rules |

## Delivery failed

`GHN-DFC*` — the delivery attempt failed; the order waits for redelivery.

| reason_code | Meaning |
| --- | --- |
| `GHN-DFC1A0` | Receiver rescheduled the delivery date |
| `GHN-DFC1A1` | Receiver changed the delivery address |
| `GHN-DFC1A2` | Receiver unreachable / number blocked |
| `GHN-DFC1A4` | Receiver did not answer the phone |
| `GHN-DFC1A6` | Staff ran into an issue |
| `GHN-DFC1A7` | Receiver refused — not allowed to inspect goods |
| `GHN-DFC1A9` | Receiver says they did not order |
| `GHN-DFC2A0` | Accident / bad weather |
| `GHN-DFC2A1` | Staff ran into an issue |

## Receiver refused

`GHN-DCD*` — receiver-side issues at the delivery point, usually leading to cancellation or return.

| reason_code | Meaning |
| --- | --- |
| `GHN-DCD0A1` | Wrong receiver info (address / phone) |
| `GHN-DCD0A5` | Receiver refused — damaged goods |
| `GHN-DCD0A6` | Receiver refused — wrong product |
| `GHN-DCD0A7` | Receiver refused — wrong COD amount |
| `GHN-DCD0A8` | Receiver changed their mind |
| `GHN-DCD1A1` | Receiver says they did not order |
| `GHN-DCD1A5` | Receiver refused — no money |

## Return failed

`GHN-RFE*` — returning the parcel to the sender failed.

| reason_code | Meaning |
| --- | --- |
| `GHN-RFE0A0` | Return receiver rescheduled the return date |
| `GHN-RFE0A1` | Return receiver changed the return address |
| `GHN-RFE0A3` | Return receiver refused — wrong product |
| `GHN-RFE0A4` | Return receiver refused — damaged goods |
| `GHN-RFE0A5` | Staff ran into an issue |
| `GHN-RFE0A6` | Return receiver did not answer / unreachable |
| `GHN-RFE0A7` | Staff ran into an issue |
| `GHN-RFE0A8` | Staff ran into an issue |

## Delivery again

These two codes carry no callback message (`Reason` is empty).

| reason_code | Meaning |
| --- | --- |
| `GHN-RDAI01` | System scheduled a redelivery |
| `GHN-RDC001` | Receiver complained about the delivery |
