API reference / Sandbox

Get a sandbox test order by ID

GET/open/v1/sandbox/orders/{id}Scope: No data scope

Service Endpoint Seller token not required

EnvironmentBase URL + Path
Productionhttps://open.mallplus.ph/open/v1/sandbox/orders/{id}
Sandboxhttps://sandbox.open.mallplus.ph/open/v1/sandbox/orders/{id}
Common Signing and Seller Headers
HeaderTypeRequiredRulesDescription
X-MallPlus-Partner-IdstringYesIssued client ID for the calling app.Identifies the partner app whose secret signs the request.
X-MallPlus-TimestampintegerYesUnix timestamp in seconds; default acceptance window is 90 seconds.Prevents replay outside the allowed signing window.
X-MallPlus-Signature-VersionstringYesUse 3 for HMAC v3.Selects the request signing algorithm.
X-MallPlus-NoncestringYes32-64 lowercase hexadecimal characters, unique per request.Replay-protection nonce included in the v3 signing base string.
X-MallPlus-SignaturestringYesHMAC-SHA256 over timestamp, client ID, method, path, canonical query, body hash, and nonce.Cryptographic proof that the request was signed with the app secret.
X-MallPlus-Access-TokenstringConditionalRequired when the operation says seller token required.Seller OAuth access token returned by the authorization flow.
X-MallPlus-Seller-IdstringConditionalRequired when X-MallPlus-Access-Token is required.Seller ID bound to the seller OAuth token.

Parameters

NameInTypeRequiredRulesDescription
idpathstringYes-The sandbox order ID.

Request Body

This operation has no JSON request body.

Response Parameters

Success status: HTTP 200

FieldTypeRulesDescription
successboolean-Whether the request completed successfully.
dataSandboxOrderNo additional propertiesResponse or event payload for this schema.
data.idstring-Unique identifier for this resource.
data.statusenumAllowed: READY_TO_SHIP, SHIPPED, DELIVERED, CANCELLED, RETURN_REFUND, PENDINGCurrent status for this resource or workflow.
data.sellerIdstring-Shop ID of the seller that owns the order. Returned on sandbox orders only; production order responses do not currently include it. Every order route is scoped to the seller your access token belongs to, so the owner is always that seller.
data.customerIdstring-ID of the buyer who placed the order. On production, returned by GET /orders/{id}: the platform customer ID, stable across that buyer's orders, so use it to attribute orders to one customer. Not currently returned on GET /orders list rows on production. On the sandbox, the test-buyer ID of an order placed for a test buyer. It is an identifier only and the documented way to identify the buyer: production does not return buyer contact details (see buyerEmail and shippingAddress).
data.buyerEmailstring<email>Format: emailBuyer email address. Not returned on production: buyer contact details are withheld by design to protect buyer privacy, and customer:email:read is reserved and does not release it. Use customerId to identify the buyer. Never present on webhook payloads.
data.currencystring-Currency code of the order (Philippine peso); compare it case-insensitively. Returned on GET /orders list rows and on sandbox orders. Not currently returned by GET /orders/{id} or by order action responses on production. The money fields on this object do not depend on it, so do not require currency to read them.
data.subtotalnumber-Amount in PHP pesos, not centavos.
data.totalnumber-Amount in PHP pesos, not centavos.
data.taxnumber-Amount in PHP pesos, not centavos.
data.shippingnumber-Amount in PHP pesos, not centavos.
data.discountnumber-Amount in PHP pesos, not centavos.
data.paymentStatusstring-Current payment status for the order.
data.fulfillmentStatusstring-Current fulfillment status for the order.
data.created_atstring<date-time>Format: date-timeCreated at as an ISO-8601 timestamp.
data.updated_atstring<date-time>Format: date-timeUpdated at as an ISO-8601 timestamp.
data.itemsarray<OrderItem>-Items associated with this request, response, or event.
data.items[]OrderItemNo additional propertiesA partner-visible order line item.
data.items[].idstring-Line-item identifier, unique within the order. The same value on every order read; pass it as items[].itemId to POST /open/v1/returns.
data.items[].orderIdstring-Order the line item belongs to.
data.items[].productIdstring-Product the line item was created from.
data.items[].variantIdstring-Variant of the product that was ordered. Absent when the upstream record carries no variant.
data.items[].titlestring-Product title as it appeared on the order.
data.items[].skustring-Seller SKU of the ordered variant.
data.items[].quantityinteger-Units ordered for this line.
data.items[].unitPricenumber-Amount in PHP pesos, not centavos.
data.items[].totalPricenumber-Amount in PHP pesos, not centavos.
data.items[].thumbnailstring-Product thumbnail URL. Present only when the upstream record carries one.
data.fulfillmentsarray<Fulfillment>-Shipments recorded against the order. Returned by GET /orders/{id} once the order has a fulfillment, on production and sandbox, and absent before then. Not currently returned on GET /orders list rows on production; sandbox list rows include it. Carrier tracking events are on GET /orders/{id}/tracking, and the shipment state is on fulfillmentStatus and bookingStatus.
data.fulfillments[]FulfillmentNo additional propertiesPartner-safe fulfillment view. Carrier-internal fields are stripped at the API boundary.
data.fulfillments[].idstring-Unique identifier for this resource.
data.fulfillments[].statusenumAllowed: pending, shipped, delivered, cancelledCurrent status for this resource or workflow.
data.fulfillments[].orderIdstring-Order ID associated with this value.
data.fulfillments[].trackingNumberstring-Partner-provided tracking number.
data.fulfillments[].trackingCompanystring-Partner-provided tracking company name.
data.fulfillments[].channelenumAllowed: pickup, dropoffHandover method for the shipment: pickup (courier collects from the seller) or dropoff (seller drops off at a branch). Carrier-agnostic — the courier is reported separately via trackingCompany.
data.fulfillments[].created_atstring<date-time>Format: date-timeCreated at as an ISO-8601 timestamp.
data.fulfillments[].updated_atstring<date-time>Format: date-timeUpdated at as an ISO-8601 timestamp.
data.fulfillments[].itemsarray<FulfillmentItem>-Items associated with this request, response, or event.
data.fulfillments[].items[]FulfillmentItemNo additional propertiesA line item included in a fulfillment response.
data.fulfillments[].items[].itemIdstring-Line-item identifier: the OrderItem.id of a line on the order, as returned by GET /open/v1/orders/{id} (items[].id) and GET /open/v1/orders/{id}/items (data[].id).
data.fulfillments[].items[].quantityinteger-Quantity of units.
data.fulfillments[].metadataFulfillmentMetadataNo additional propertiesAllowlisted partner-visible metadata.
data.fulfillments[].metadata.tracking_numberstring-Shipment tracking number.
data.fulfillments[].metadata.tracking_companystring-Shipment tracking company name.
data.shippingAddressAddressNo additional propertiesDelivery address, masked by design on production to protect buyer privacy: street lines and phone masked, no recipient name; city, province, postalCode and country as stored. customer:contact:read is reserved and does not unmask it. Use customerId to identify the buyer.
data.shippingAddress.idstring-Sandbox shipping-address identifier (addr_*), minted on POST /sandbox/buyers. Omitted on production orders.
data.shippingAddress.namestring-Recipient name. Not returned on production (withheld by design). Present on sandbox test orders.
data.shippingAddress.line1string-First line of the street address. Masked by design on production (for example ••••••••••).
data.shippingAddress.line2string-Second line of the street address, when present. Masked by design on production.
data.shippingAddress.citystring-PSGC-aligned Philippine city or municipality.
data.shippingAddress.provincestring-PSGC-aligned Philippine province.
data.shippingAddress.postalCodestring-Postal code for the address.
data.shippingAddress.countrystring-ISO 3166-1 alpha-2 country code.
data.shippingAddress.phonestring-Recipient phone number. Masked by design on production (for example ••••••42); customer:contact:read is reserved and does not unmask it.
data.billingAddressAddressNo additional propertiesBilling address, when the order has one. Masked by design on production, the same way as shippingAddress.
data.billingAddress.idstring-Sandbox shipping-address identifier (addr_*), minted on POST /sandbox/buyers. Omitted on production orders.
data.billingAddress.namestring-Recipient name. Not returned on production (withheld by design). Present on sandbox test orders.
data.billingAddress.line1string-First line of the street address. Masked by design on production (for example ••••••••••).
data.billingAddress.line2string-Second line of the street address, when present. Masked by design on production.
data.billingAddress.citystring-PSGC-aligned Philippine city or municipality.
data.billingAddress.provincestring-PSGC-aligned Philippine province.
data.billingAddress.postalCodestring-Postal code for the address.
data.billingAddress.countrystring-ISO 3166-1 alpha-2 country code.
data.billingAddress.phonestring-Recipient phone number. Masked by design on production (for example ••••••42); customer:contact:read is reserved and does not unmask it.
data.shipByDatestring<date-time>Format: date-time; NullableShip-by SLA deadline (ISO-8601), or null when the order has no SBD. Matches the deadline shown in Seller Center.
data.slaBreachedboolean-True when the order is unshipped and past its shipByDate. Present only when a deadline exists; false once the order has shipped (SLA no longer applicable).
data.shippingChannelstring-The forward logistics channel code the order ships via (e.g. "STANDARD_COURIER"), sourced from the order's selected channel. A routing key for WMS integration. Omitted when no channel has been assigned yet.
data.bookingStatusenumAllowed: PENDING_ARRANGE, READY_FOR_HANDOVERPre-shipment booking state. PENDING_ARRANGE means paid but unbooked; READY_FOR_HANDOVER means booking arranged and awaiting courier pickup. Omitted after courier handover progresses beyond the pre-shipment booking window.

Error Codes

HTTP StatusSchemaDescription
400PlatformError400ResponseValidation error, or a missing/malformed required signing header (BAD_REQUEST)
401PlatformError401ResponseUnauthorized — invalid credentials, invalid signature, or expired timestamp (TIMESTAMP_EXPIRED)
403PlatformError403ResponseForbidden — insufficient scope
404PlatformError404ResponseThe requested resource does not exist or is not visible to the authenticated seller
429PlatformError429ResponseThe partner or endpoint rate limit has been exceeded
503PlatformError503ResponseA required platform or upstream dependency is temporarily unavailable

This operation does not declare its own error.code list. Any operation can return the authentication, signing, scope, rate-limit and system codes listed in the Error code reference.

Request Example

curl -X GET "https://sandbox.open.mallplus.ph/open/v1/sandbox/orders/id_123" \
  -H "X-MallPlus-Partner-Id: mp_partner_123" \
  -H "X-MallPlus-Timestamp: 1786924800" \
  -H "X-MallPlus-Signature-Version: 3" \
  -H "X-MallPlus-Nonce: 4f8b9a0c4d5e6f708192a3b4c5d6e7f8" \
  -H "X-MallPlus-Signature: <hex_hmac_sha256>"

Response Example

{
  "success": true,
  "data": {
    "id": "id_123",
    "status": "READY_TO_SHIP",
    "sellerId": "sellerId_123",
    "customerId": "customerId_123",
    "buyerEmail": "partner@example.com",
    "currency": "example_currency",
    "subtotal": 1,
    "total": 1,
    "tax": 1,
    "shipping": 1,
    "discount": 1,
    "paymentStatus": "example_paymentStatus",
    "fulfillmentStatus": "example_fulfillmentStatus",
    "created_at": "2026-08-17T00:00:00Z",
    "updated_at": "2026-08-17T00:00:00Z",
    "items": [
      {
        "id": "id_123",
        "orderId": "orderId_123",
        "productId": "productId_123",
        "variantId": "variantId_123",
        "title": "example_title",
        "sku": "example_sku",
        "quantity": 1,
        "unitPrice": 1,
        "totalPrice": 1,
        "thumbnail": "example_thumbnail"
      }
    ],
    "fulfillments": [
      {
        "id": "id_123",
        "status": "pending",
        "orderId": "orderId_123",
        "trackingNumber": "example_trackingNumber",
        "trackingCompany": "example_trackingCompany",
        "channel": "pickup",
        "created_at": "2026-08-17T00:00:00Z",
        "updated_at": "2026-08-17T00:00:00Z",
        "items": [
          {
            "itemId": "string",
            "quantity": "integer"
          }
        ],
        "metadata": {
          "tracking_number": "example_tracking_number",
          "tracking_company": "example_tracking_company"
        }
      }
    ],
    "shippingAddress": {
      "id": "id_123",
      "name": "example_name",
      "line1": "example_line1",
      "line2": "example_line2",
      "city": "example_city",
      "province": "example_province",
      "postalCode": "example_postalCode",
      "country": "example_country",
      "phone": "example_phone"
    },
    "billingAddress": {
      "id": "id_123",
      "name": "example_name",
      "line1": "example_line1",
      "line2": "example_line2",
      "city": "example_city",
      "province": "example_province",
      "postalCode": "example_postalCode",
      "country": "example_country",
      "phone": "example_phone"
    },
    "shipByDate": "2026-08-17T00:00:00Z",
    "slaBreached": true,
    "shippingChannel": "example_shippingChannel",
    "bookingStatus": "PENDING_ARRANGE"
  }
}