Flash Express · Authentication Profile

Flash Express Authentication

Authentication

Flash Express secures its APIs with signature across 1 declared security scheme, as derived from its OpenAPI definitions.

CompanyLogisticsShippingDeliveryParcel TrackingE-CommerceLast MileCourierCash on DeliveryThailandSoutheast AsiaWebhooks
Methods: signature Schemes: 1 OAuth flows: API key in: body

Security Schemes

FlashSignature signature
· in: body ()

Source

Authentication Profile

flash-express-authentication.yml Raw ↑
generated: '2026-08-12'
method: searched
source: https://open-docs.flashexpress.com/#the-security-reference
docs: https://open-docs.flashexpress.com/#signature-algorithm
note: >-
  Flash Express publishes no OpenAPI, so this profile was read directly from the published
  "The Security Reference" section of the FlashExpress Open API documentation rather than
  derived from securitySchemes. The scheme is a shared-secret request-signing model, not a
  bearer token and not OAuth: there is no token endpoint, no authorization server, no
  scopes, and no refresh flow. Every request carries the merchant identity inline and is
  signed per-call.
summary:
  types: [signature]
  api_key_in: [body]
  oauth2_flows: []
  oauth2: false
  openid_connect: false
  mutual_tls: false
  bearer_token: false
schemes:
- name: FlashSignature
  type: signature
  in: body
  transport: https
  request_method: POST
  content_type: application/x-www-form-urlencoded
  algorithm: SHA256
  encoding: uppercase hex
  parameters:
  - name: mchId
    type: string(32)
    required: true
    description: Merchant account number issued by Flash Express.
  - name: nonceStr
    type: string(32)
    required: true
    description: >-
      Random nonce string, included so the signature is unpredictable. The documentation
      recommends generating a random number and converting it to a string; the published
      examples also use millisecond epoch timestamps.
  - name: sign
    type: string(64)
    required: true
    description: Uppercase SHA256 signature over the canonicalized request.
  secret:
    name: key
    issuance: >-
      The merchant secret key is issued and reset only by Flash Express support staff.
      The documentation states "About The security key: Please contact the official
      support staff to obtain or reset." There is no self-service key provisioning.
    rotation_documented: false
  signing_algorithm:
    steps:
    - Collect every sent parameter into set M.
    - Drop any parameter whose value is empty or consists only of whitespace; blank values may still be transmitted but must not be signed.
    - Sort the remaining parameter names by ASCII code, ascending (dictionary order). Parameter names are case sensitive.
    - Join as key1=value1&key2=value2 into stringA.
    - Append the merchant secret as &key=<secret> to produce stringSignTemp.
    - sign = SHA256(stringSignTemp) uppercased.
    - Compute the signature BEFORE urlencoding; the server verifies after urldecoding.
    excluded_from_signature:
    - the sign parameter itself
    - >-
      any parameter whose value is entirely whitespace. The documentation enumerates the
      whitespace characters as HORIZONTAL TABULATION (U+0009), LINE FEED (U+000A),
      VERTICAL TABULATION (U+000B), FORM FEED (U+000C), ENTER (U+000D), FILE SEPARATOR
      (U+001C), GROUP SEPARATOR (U+001D), RECORD SEPARATOR (U+001E) and UNIT SEPARATOR
      (U+001F).
    forward_compatibility: >-
      The documentation states the API may add fields and that verifiers must support
      newly added extended fields when checking a signature.
  response_signing:
    supported: true
    note: >-
      Webhook callbacks delivered to the merchant are themselves signed. For webhook
      requests only mchId and nonceStr participate in the signature, so a merchant
      verifying an inbound webhook signs a different parameter set than it does when
      calling the API.
  failure:
    code: 1002
    message: invalid signature
    source: https://open-docs.flashexpress.com/#response-code
sub_accounts:
  supported: true
  operation: POST /open/v1/new_sub_account
  note: Merchants can create sub-accounts, each of which receives its own merchant credentials.
environments:
- name: production
  base_url: https://open-api.flashexpress.com
- name: training
  base_url: https://open-api-tra.flashexpress.com
  note: Separate credentials are issued per environment by Flash Express support.