Return request API
All endpoints require Authorization: Bearer <secretKey> and X-Api-Key: <publicKey>. Every POST also requires Content-Type: application/json and X-Signature, calculated from the complete request body using your checksumKey. Recalculate the signature whenever the body changes. See signature generation. GET requests do not require X-Signature. Data is scoped to your institution and the API key’s test/live mode.
Return flow
- Read the order details and select eligible items from a
SUCCESSorder. - Create a return with a new
returnTrackIdand explicititems. - A manual request starts at
REQUESTED; - Poll the return details or process
RETURN_ORDER_UPDATEwebhooks.REFUNDINGmeans processing;COMPLETEDmeans the return has completed. - Refresh order details to obtain cumulative returned quantities, refund amount and remaining total.
Return request statuses
| Waiting for review; may be canceled. |
| Refund processing; cannot be canceled. |
| Return completed. A positive refund creates a payment account credit transaction, processed asynchronously. |
| Rejected; inspect |
| Canceled while awaiting review. |
Eligibility
- Order and selected items must be
SUCCESS, within 6 months of order creation, and belong to the same institution/mode. - Only one pending or refunding request may exist for an order at a time. A new request can be created once the previous request has reached the COMPLETED or CANCELED/REJECTED status.
- Exclude quantities and ICCIDs already reserved or returned by requests other than
CANCELED/REJECTED. eSIMs must also have return statusNONE. - To return everything, explicitly include all remaining eligible quantities/ICCIDs. The server calculates
FULLorPARTIALagainst the remaining eligible units.
Fees and processing
The current base fee is 15,000 VND per returned eSIM or physical SIM; SIM recharge has no base return fee. Each item’s initial refund is max(unit price × returned quantity − return fee, 0). The request sums these amounts; an order with a non-positive total has request-level refund fee and amount set to zero. Review may add extraFee with extraFeeNote; use the API’s final refundAmount for reconciliation.
The example returns one of two eSIMs priced at 100,000 VND each: base fee 15,000 VND, refund 85,000 VND.
Create return request API
Request Headers
X-Signature - required | string | HMAC_SHA256 signature of the complete request body using checksumKey. See signature generation. |
Request Body
returnTrackId - required | string | Required non-empty string, unique per institution and mode. It is separate from the original order’s | |||||||||
orderId - required | string | Required non-empty string: SimplifyTrip order ID or original order | |||||||||
reason | string | Optional string. | |||||||||
items - required | object[] | Required array with at least one item. Include each order item once; do not submit both its ID and its tracking reference as separate entries. | |||||||||
| |||||||||||
Responses
application/jsonid | string | SimplifyTrip return request ID. | ||||||||||||||||||||||||
returnTrackId | string | Your return tracking reference. | ||||||||||||||||||||||||
orderId | string | SimplifyTrip order ID. | ||||||||||||||||||||||||
orderTrackId | string | Original order tracking reference. | ||||||||||||||||||||||||
createdAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
refundingAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
completedAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
canceledAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
rejectedAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
reason | string | Request or cancellation reason; may be null. | ||||||||||||||||||||||||
rejectionReason | string | Rejection reason; may be null. | ||||||||||||||||||||||||
status | string | Processing status. See the flow and conditions for this endpoint. | ||||||||||||||||||||||||
returnType | string | FULL or PARTIAL, calculated by the server against remaining eligible units. | ||||||||||||||||||||||||
refundFee | number | Base return fee (VND). | ||||||||||||||||||||||||
extraFee | number | Extra fee (VND). | ||||||||||||||||||||||||
extraFeeNote | string | Extra fee explanation; may be null. | ||||||||||||||||||||||||
refundAmount | number | Refund amount (VND); on an order, the cumulative amount of completed refunds. | ||||||||||||||||||||||||
items | object[] | Item list. | ||||||||||||||||||||||||
| ||||||||||||||||||||||||||
application/jsontimestamp | number | |
statusCode | number | |
errorCode | string | |
message | string |
Cancel refund request API
Send required string returnId, containing either the SimplifyTrip return ID or your returnTrackId. Only REQUESTED can be canceled. This endpoint also requires a signature of the cancel body.
Request Headers
X-Signature - required | string | HMAC_SHA256 signature of the complete request body using checksumKey. See signature generation. |
Request Body
returnId - required | string | SimplifyTrip return ID or your returnTrackId. |
Returns the same response schema with status: CANCELED and canceledAt populated. It clears the order’s pending/refunding flags and releases the selected eSIMs for later requests. It does not cancel the original order or complete a refund.
Responses
application/jsonid | string | SimplifyTrip return request ID. | ||||||||||||||||||||||||
returnTrackId | string | Your return tracking reference. | ||||||||||||||||||||||||
orderId | string | SimplifyTrip order ID. | ||||||||||||||||||||||||
orderTrackId | string | Original order tracking reference. | ||||||||||||||||||||||||
createdAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
refundingAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
completedAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
canceledAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
rejectedAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
reason | string | Request or cancellation reason; may be null. | ||||||||||||||||||||||||
rejectionReason | string | Rejection reason; may be null. | ||||||||||||||||||||||||
status | string | Processing status. See the flow and conditions for this endpoint. | ||||||||||||||||||||||||
returnType | string | FULL or PARTIAL, calculated by the server against remaining eligible units. | ||||||||||||||||||||||||
refundFee | number | Base return fee (VND). | ||||||||||||||||||||||||
extraFee | number | Extra fee (VND). | ||||||||||||||||||||||||
extraFeeNote | string | Extra fee explanation; may be null. | ||||||||||||||||||||||||
refundAmount | number | Refund amount (VND); on an order, the cumulative amount of completed refunds. | ||||||||||||||||||||||||
items | object[] | Item list. | ||||||||||||||||||||||||
| ||||||||||||||||||||||||||
application/jsontimestamp | number | |
statusCode | number | |
errorCode | string | |
message | string |
Get refund request details API
Use returnId or returnTrackId. Returns the same schema as creation, with the latest status, fees and timestamps. After a create timeout or duplicate-reference error, query this endpoint using the existing reference before deciding to create another request.
Path Parameters
id - required | string | The request’s returnId or returnTrackId. |
Responses
application/jsonid | string | SimplifyTrip return request ID. | ||||||||||||||||||||||||
returnTrackId | string | Your return tracking reference. | ||||||||||||||||||||||||
orderId | string | SimplifyTrip order ID. | ||||||||||||||||||||||||
orderTrackId | string | Original order tracking reference. | ||||||||||||||||||||||||
createdAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
refundingAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
completedAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
canceledAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
rejectedAt | datetime | null | ISO timestamp; may be null if the event has not occurred. | ||||||||||||||||||||||||
reason | string | Request or cancellation reason; may be null. | ||||||||||||||||||||||||
rejectionReason | string | Rejection reason; may be null. | ||||||||||||||||||||||||
status | string | Processing status. See the flow and conditions for this endpoint. | ||||||||||||||||||||||||
returnType | string | FULL or PARTIAL, calculated by the server against remaining eligible units. | ||||||||||||||||||||||||
refundFee | number | Base return fee (VND). | ||||||||||||||||||||||||
extraFee | number | Extra fee (VND). | ||||||||||||||||||||||||
extraFeeNote | string | Extra fee explanation; may be null. | ||||||||||||||||||||||||
refundAmount | number | Refund amount (VND); on an order, the cumulative amount of completed refunds. | ||||||||||||||||||||||||
items | object[] | Item list. | ||||||||||||||||||||||||
| ||||||||||||||||||||||||||
application/jsontimestamp | number | |
statusCode | number | |
errorCode | string | |
message | string |
Errors and HTTP status
GET succeeds with HTTP 200; POST currently uses HTTP 201. Validation, duplicate returnTrackId, duplicate items, expired/fully returned orders, an existing active request, unavailable quantities/ICCIDs or canceling a non-REQUESTED request return 400. A missing or non-SUCCESS order and a missing return request return 404.