# Reference and source notes

Service codes, HTTP errors, and environment URLs.

Company: Metfone Express
API version: v1
Requested language: en
Content language: en
Source: https://mfexpress-partner-docs.zhst.app/mfexpress/en/reference


## Environments and complete base URLs



| Environment | BASE_URL |
| --- | --- |
| Sandbox | https://dev-gw.metfone.com.kh/tms-partner/api/v1 |
| Production | https://gw-express.metfone.com.kh/tms-partner/api/v1 |

Each API path adds `/api/v1` to the host plus `/tms-partner`; the URLs above combine both parts so prefixes are neither missing nor duplicated. Template creation and label retrieval share this base, not `/oms-core/api/v1`. Do not call production before obtaining official environment credentials.

## Service codes



| Code | Kind | Meaning |
| --- | --- | --- |
| CCN | mainService | Standard shipping; pricing examples label it Express, so confirm commercial naming. |
| P2P | mainService | Fast point-to-point delivery. |
| GTN | extraService / vas | Delivery to the recipient’s address. |
| NTN | extraService / vas | Pickup at the sender’s address. |
| VTT | extraService / vas | Address delivery/pickup according to senderService/receiverService. |
| VCT | extraService | Forward to an alternate address after failed delivery. |
| GCH | extraService | Return service. |
| DISCOUNT | Adjustment | Partner-contract discount. |



## orderService



| Field | Accepted values |
| --- | --- |
| orderService.senderService | `GTCH`, `VTT`, `GTN`, `UNKNOW` |
| orderService.receiverService | `NTCH`, `NTN`, `VTT`, `UNKNOW` |

Preserve `UNKNOW`; do not silently correct it to UNKNOWN. GTCH/NTCH are not fully defined, and the sender/receiver labels can be confusing relative to service names; confirm their use rather than swapping codes. At get-service, these preferences affect extra-service flags only, not price.

## Common HTTP errors



| Code | Meaning | Action |
| --- | --- | --- |
| 400 | Bad Request | Check body, paths, required fields, and data types. |
| 401 | Unauthorized | Token invalid/expired; contact TMS to refresh X-Api-Token. |
| 403 | Forbidden | Check endpoint access and X-Client-Source/token pairing. |
| 404 | Not Found | Check URL, location codes, and order IDs. |
| 422 | Unprocessable | Business-invalid data; inspect the returned message. |
| 500 | Internal Server Error | Retry later and report repeated failures to TMS. get-service/get-all/label may return 500 for missing fields. For an ambiguous create outcome, reconcile before retrying because idempotency is not established. |

No common error schema, rate limit, SLA, or retry schedule is defined. `PAYER_INVALID` and `INVALID_PRICE` are create-order business errors without a specific HTTP status each.

