> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Payout create



## OpenAPI

````yaml /api-reference/openapi.json post /api/v1/payout/create
openapi: 3.1.0
info:
  title: acquiring-order
  description: 接口文档
  termsOfService: https://www.waffo.com
  version: 1.0.0
servers:
  - url: https://waffo.com
    description: Sandbox API (auto-signed via waffo.com signing proxy)
security: []
tags:
  - name: Subscription inquiry
    description: Subscription inquiry api description
  - name: Subscription manage
    description: >
      This API allows the merchant to request a subscription management URL from
      Waffo

      Waffo will generate a subscription management URL which merchant can
      redirect user to this URL for managing subscription details (e.g. view
      subscription detail and cancel subscription). This management URL has a
      fixed expiration time (e.g., 1 day).
  - name: Subscription change inquiry
    description: >
      This API allows merchants to query the status of a subscription change
      (upgrade/downgrade) request.

      此接口允许商户查询订阅升降级请求的状态。
  - name: Subscription update
    description: ' Subscription update api description'
  - name: Order inquiry
    description: Order inquiry api description
  - name: Payout inquiry
    description: Payout inquiry api description
  - name: Order create
    description: ' Order create api description'
  - name: Pay Method Config Inquiry
    description: Pay Method Config Inquiry api description
  - name: Order cancel
    description: Order cancel api description
  - name: Order capture
    description: Order capture api description
  - name: Chargeback list
    description: Chargeback list api description
  - name: Payout create
    description: Payout create api description
  - name: Chargeback file download
    description: Chargeback file download api description
  - name: Subscription change
    description: >
      This API allows merchants to upgrade or downgrade a user's subscription
      plan. The change request will create a new subscription based on the
      original subscription, applying any remaining amount from the original
      subscription.


      此接口允许商户升级或降级用户的订阅计划。升降级请求将基于原订阅创建新订阅，并将原订阅的剩余金额应用到新订阅中。
  - name: Chargeback accept
    description: Chargeback accept api description
  - name: Chargeback file upload
    description: Chargeback file upload api description
  - name: Chargeback update
    description: Chargeback update api description
  - name: Wallet inquiry
    description: Wallet inquiry api description
  - name: Order refund
    description: Order refund api description
  - name: Refund inquiry
    description: Refund inquiry api description
  - name: Subscription cancel
    description: >
      Cancel an active subscription when the merchant no longer wishes to
      continue the recurring billing cycle. This endpoint can only be invoked
      when the subscription status is active
  - name: Merchant config inquiry
    description: Merchant config inquiry api description
  - name: Chargeback inquiry
    description: Chargeback inquiry api description
  - name: Subscription create
    description: Subscription create api description
  - name: Reported Fraud list
    description: Reported Fraud list api description
paths:
  /api/v1/payout/create:
    post:
      tags:
        - Payout create
      summary: Payout create
      operationId: payoutOrderSubmit
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayoutOrderRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ResponsePayoutOrderData'
components:
  schemas:
    PayoutOrderRequest:
      type: object
      properties:
        payoutRequestId:
          type: string
          description: >
            Your own identifier for this payout request. Must be unique within
            your merchant account. Waffo treats it as the idempotency key
          maxLength: 64
          minLength: 0
        payoutCurrency:
          type: string
          description: >
            The merchant payout currency, as an ISO 4217 alpha-3 code (e.g. USD,
            VND). Please refer to your Payout contract for the supported
            currency in the destination country and payout methods
          maxLength: 3
          minLength: 3
        payoutAmount:
          type: string
          description: >
            The merchant Payout amount. The maximum decimal places must match
            the currency's ISO 4217 unit (e.g. 2 for USD, 0 for VND). Examples:
            "1000.01", "2001"

            Use "." as the decimal separator, no thousands separator
          maxLength: 24
          minLength: 0
        country:
          type: string
          description: >
            The destination country of the funds, as an ISO 3166-1 alpha-3 code.
            Must be a country enabled for your account
          maxLength: 3
          minLength: 3
        description:
          type: string
          description: >
            Description shown on the beneficiary's bank or e-wallet statement.
            Waffo accepts up to 64 characters, but the receiving institution
            applies its own, much shorter limit and truncates silently without
            an error. Keep it to 10 characters or fewer to be safe on every
            rail;

            Use ASCII letters, digits and spaces only — other characters may be
            stripped or rejected downstream.
          maxLength: 64
          minLength: 0
        purpose:
          type: string
          description: >
            The reason for the payout, used for regulatory reporting and
            compliance screening in the destination country. Allowed values vary
            by country — see [Payout Purpose Enum Table]

            Send the value that actually describes the payment; a mismatched
            purpose can cause the receiving institution to return the funds.
          maxLength: 32
          minLength: 0
        merchantInfo:
          $ref: '#/components/schemas/MerchantInfo'
          description: |
            Merchant info
        payeeInfo:
          $ref: '#/components/schemas/PayeeInfo'
          description: |
            The information of payee who receives this payout
        addressInfo:
          $ref: '#/components/schemas/AddressInfo'
          description: >
            The payee's residential or registered address.

            Required for some destination countries. — see [Payout Creation
            Field Requirements Table]
        payoutInfo:
          $ref: '#/components/schemas/PayoutInfo'
          description: |
            Payout information
        notifyUrl:
          type: string
          description: >
            The URL to which we send a notification when the payout reaches a
            final state.
          maxLength: 256
          minLength: 0
        extendInfo:
          type: string
          description: >
            Merchants pass the information and return it as is. Json format e.g.
            {"key1":"value1", "key2":"value2"}
          maxLength: 128
          minLength: 0
        payoutRequestedAt:
          type: string
          description: >
            Merchant-side payout request time (ISO 8601, UTC+00:00):
            yyyy-MM-dd'T'HH:mm:ss.SSS'Z', e.g. 2026-08-12T09:30:00.000Z
          maxLength: 24
          minLength: 0
      required:
        - country
        - description
        - merchantInfo
        - payeeInfo
        - payoutCurrency
        - payoutInfo
        - payoutRequestId
        - payoutRequestedAt
    ResponsePayoutOrderData:
      type: object
      description: response data
      properties:
        code:
          type: string
          example: 0
        msg:
          type: string
          example: success
        data:
          $ref: '#/components/schemas/PayoutOrderData'
    MerchantInfo:
      type: object
      properties:
        merchantId:
          type: string
          description: >
            Your merchant ID, assigned by Waffo during onboarding and shown on
            Dashboard
          maxLength: 64
          minLength: 0
        subMerchantId:
          type: string
          description: |
            Your sub-merchant ID, assigned by Waffo if required
          maxLength: 64
          minLength: 0
      required:
        - merchantId
    PayeeInfo:
      type: object
      properties:
        payeeType:
          type: string
          description: |
            Payee type.
            - INDIVIDUAL - a person
            - BUSINESS - a company or organization
          maxLength: 10
          minLength: 0
        payeeId:
          type: string
          description: >
            Your own identifier for this payee.

            Waffo stores it and returns it unchanged in query responses and
            notifications, so you can reconcile payouts against your own payee
            records
          maxLength: 64
          minLength: 0
        payeeFirstName:
          type: string
          description: >
            The payee's first name, exactly as registered on the receiving bank
            account or e-wallet.

            The required format depends on the destination country and payout
            method. See [Payout Payee Name Fields Filling Instructions] for the
            exact script, pattern and example
          maxLength: 60
          minLength: 0
        payeeMiddleName:
          type: string
          description: >
            The payee's middle name, exactly as registered on the receiving bank
            account or e-wallet.

            The required format depends on the destination country and payout
            method. See [Payout Payee Name Fields Filling Instructions] for the
            exact script, pattern and example
          maxLength: 60
          minLength: 0
        payeeLastName:
          type: string
          description: >
            The payee's last name, exactly as registered on the receiving bank
            account or e-wallet.

            The required format depends on the destination country and payout
            method. See [Payout Payee Name Fields Filling Instructions] for the
            exact script, pattern and example
          maxLength: 80
          minLength: 0
        nationality:
          type: string
          description: >
            The payee's nationality, as an ISO 3166-1 alpha-3 country code.

            Required for some destination countries. — see [Payout Creation
            Field Requirements Table]
          maxLength: 3
          minLength: 3
        payeeEmail:
          type: string
          description: >
            The payee's email address. Used for compliance screening and, where
            the destination rail requires it, passed to the receiving
            institution

            Required for some destination countries. — see [Payout Creation
            Field Requirements Table]
          maxLength: 64
          minLength: 0
        payeePhone:
          type: string
          description: >
            The payee's mobile number in international format +<country calling
            code>-<NSN>, e.g. +62-8xxxx

            Required for some destination countries. — see [Payout Creation
            Field Requirements Table]
          maxLength: 20
          minLength: 0
        payeeIDType:
          type: string
          description: >
            The payee's identification type

            Required for some destination countries. — see [Payout Creation
            Field Requirements Table]
          maxLength: 24
          minLength: 0
        payeeIDNumber:
          type: string
          description: |
            The identification number of the document given in payeeIDType
          maxLength: 64
          minLength: 0
        payeeBirthDay:
          type: string
          description: |
            The payee's date of birth, formatted dd/mm/yyyy
          maxLength: 12
          minLength: 0
        payeeIDIssueDate:
          type: string
          description: |
            Issue date of the document in payeeIDType, formatted dd/mm/yyyy
          maxLength: 12
          minLength: 0
        payeeIDExpiryDate:
          type: string
          description: |
            Expiry date of the document in payeeIDType, formatted dd/mm/yyyy
          maxLength: 12
          minLength: 0
        payeeFullName:
          type: string
      required:
        - payeeType
    AddressInfo:
      type: object
      properties:
        address:
          type: string
          description: |
            The payee's street and address details
          maxLength: 256
          minLength: 0
        city:
          type: string
          description: |
            The payee's address city
          maxLength: 32
          minLength: 0
        region:
          type: string
          description: |
            The payee's address region / state / province
          maxLength: 32
          minLength: 0
        postcode:
          type: string
          description: |
            The payee's address postcode
          maxLength: 16
          minLength: 0
        addressCountryCode:
          type: string
          description: |
            The payee's address country code, i.e. ISO 3166-1 alpha-3 code
          maxLength: 3
          minLength: 3
    PayoutInfo:
      type: object
      properties:
        productName:
          type: string
          description: |
            The payout product to use.
            - ONE_TIME_PAYOUT - a single one-off payout
          maxLength: 32
          minLength: 0
        payoutMethodType:
          type: string
          description: >
            The payout method type describes how the funds reach the payee.
            Availability varies by destination country and can be found in your
            Payout contract

            - EWALLET  - Payout to an e-wallet. e.g. DANA, GCASH.

            - BANK_ACCOUNT - Payout to a bank account. e.g. DBS BANK LTD.

            - PROXY - Payout via a country's instant-payment proxy network that
            maps a proxy ID(PHONE/VPA) to a bank account or e-wallet. e.g. 
            PAYNOW in Singapore.
          maxLength: 16
          minLength: 0
        payoutMethodName:
          type: string
          description: >
            The payout method name describes how the funds reach the payee.
            Availability varies by destination country and can be found in your
            Payout contract

            Required for EWALLET (e.g. DANA, GCASH) and PROXY (e.g. PAYNOW).

            Optional for BANK_ACCOUNT: if you omit it, Waffo derives the bank
            from the bankCode and bankBranch in payoutMethodProperty
          maxLength: 24
          minLength: 0
        payoutMethodProperty:
          type: string
          description: >
            Payout routing details

            - BANK_ACCOUNT - Bank routing details, Required for some destination
            countries. — see [Payout Creation Field Requirements Table].
              This field contains the following information in JSON format:
              {"bankCode":"XXX","bankName":"XXX","bankBranch":"XXX","accountType":"XXX"}
              bankCode — the bank's code in the destination country's clearing scheme, required field
              bankName — the bank's name in the destination country's clearing scheme, optional field
              bankBranch — the bank branch's code in the destination country's clearing scheme, conditional field
              accountType —  the type of bank account, conditional field, required in certain countries, e.g. USA
              Please refer to [Bank List] for full bank lists supported by each country

            - EWALLET — E-wallet routing details. Required for certain payout
            methods; see [Payout Creation Field Requirements Table].
              This field contains the following information in JSON format:
              {"eWalletAccountType":"XXX"}
              eWalletAccountType — the identifier type of e-wallet account number, "PHONE" is the default value, it is optional. e.g. PHONE, EMAIL
              Please refer to [EWALLET List] for full identifier type lists supported by each e-wallet

            - PROXY — Instant-payment routing details. Required for certain
            payout methods; see [Payout Creation Field Requirements Table].
              This field contains the following information in JSON format:
              {"proxyIdentifierType":"XXX"}
              proxyIdentifierType — the identifier type of proxy ID, it is required. e.g. PHONE, VPA
              Please refer to [PROXY List] for full identifier type lists supported by each proxy scheme
          maxLength: 512
          minLength: 0
        payoutMethodUserAccountNo:
          type: string
          description: |
            The payee's account number, format depends on payoutMethodType:
            - EWALLET — the payee's wallet account number.
              "PHONE" is the default value, it is optional, as +<country calling code>-<NSN> or without symbols, length is generally not checked, e.g. +62-8xxxx, 628xxxx
              The accepted format per wallet is in [EWALLET List].
            - BANK_ACCOUNT — the payee's bank account number.
              Supported institutions vary by country, see [Bank List].
            - PROXY — the proxy identifier, e.g. PHONE, VPA
              "PHONE" as +<country calling code>-<NSN> or without symbols, e.g. +62-8xxxx, 628xxxx
              The accepted format per proxy type is in [PROXY List].
          maxLength: 64
          minLength: 0
      required:
        - payoutMethodType
        - payoutMethodUserAccountNo
        - productName
    PayoutOrderData:
      type: object
      properties:
        payoutRequestId:
          type: string
          description: >
            Your own identifier for this payout request. Must be unique within
            your merchant account. Waffo treats it as the idempotency key
        payoutCurrency:
          type: string
          description: >
            The merchant payout currency, as an ISO 4217 alpha-3 code (e.g. USD,
            VND). Please refer to your Payout contract for the supported
            currency in the destination country and payout methods
        payoutAmount:
          type: string
          description: >
            The merchant Payout amount. The maximum decimal places must match
            the currency's ISO 4217 unit (e.g. 2 for USD, 0 for VND). Examples:
            "1000.01", "2001"

            Use . as the decimal separator, no thousands separator
        country:
          type: string
          description: >
            The destination country of the funds, as an ISO 3166-1 alpha-3 code.
            Must be a country enabled for your account
        description:
          type: string
          description: >
            Description shown on the beneficiary's bank or e-wallet statement.
            Waffo accepts up to 64 characters, but the receiving institution
            applies its own, much shorter limit and truncates silently without
            an error. Keep it to 10 characters or fewer to be safe on every
            rail;

            Use ASCII letters, digits and spaces only — other characters may be
            stripped or rejected downstream.
        purpose:
          type: string
          description: >
            The reason for the payout, used for regulatory reporting and
            compliance screening in the destination country. Allowed values vary
            by country — see [Payout Purpose Enum Table]

            Send the value that actually describes the payment; a mismatched
            purpose can cause the receiving institution to return the funds.
        merchantInfo:
          $ref: '#/components/schemas/MerchantInfo'
          description: |
            Merchant info
        payeeInfo:
          $ref: '#/components/schemas/PayeeInfo'
          description: |
            The information of payee who receives this payout
        addressInfo:
          $ref: '#/components/schemas/AddressInfo'
          description: >
            The payee's residential or registered address.

            Required for some destination countries. — see [Payout Creation
            Field Requirements Table]
        payoutInfo:
          $ref: '#/components/schemas/PayoutInfo'
          description: |
            Payout information
        notifyUrl:
          type: string
          description: >
            The URL to which we send a notification when the payout reaches a
            final state.
        extendInfo:
          type: string
          description: >
            Merchants pass the information and return it as is. Json format e.g.
            {"key1":"value1", "key2":"value2"}
        payoutRequestedAt:
          type: string
          description: >
            Merchant-side payout request time (ISO 8601, UTC+00:00):
            yyyy-MM-dd'T'HH:mm:ss.SSS'Z', e.g. 2026-08-12T09:30:00.000Z
        payoutOrderId:
          type: string
          description: |
            Waffo's payout Order ID
        prefundCurrency:
          type: string
          description: |
            The currency funded by the merchant
        prefundAmount:
          type: string
          description: >
            The amount funded by the merchant, inclusive of the handling fee.

            If the transaction fails, except for the handling fee, which may be
            charged depending on the situation, the remaining amount will be
            returned to the merchant.
        payeeCurrency:
          type: string
          description: |
            The currency of the final amount received by the payee
        payeeAmount:
          type: string
          description: >
            The final amount received by the payee.

            The maximum decimal places must match the currency's ISO 4217 unit
            (e.g. 2 for USD, 0 for VND). Examples: "1000.01", "2001". Use "." as
            the decimal separator, no thousands separator.
        feeCurrency:
          type: string
          description: |
            Payout Fee Currency
        feeAmount:
          type: string
          description: >
            The provisioned fee amount for this payout, calculated when the
            payout is created. The currency is specified by feeCurrency.

            Compare with actFeeAmount, which is the amount actually collected
            once the payout reaches a final state.
        actFeeAmount:
          type: string
          description: >
            The actual fee amount collected upon completion of the transaction.
            The currency is specified by feeCurrency.
        status:
          type: string
          description: |
            Payout status.
            - IN_PROGRESS - (Payout is in progress)
            - SUCCESS - (Payout is successful)
            - FAILURE (Payout failed)
        subStatus:
          type: string
          description: >
            Only present when a reverse occurs, payout status stays SUCCESS.
            Most orders never have it.

            - FULL_REVERSED - the whole payout amount was reversed

            - PARTIAL_REVERSED - only part of the payout amount was reversed
        failureCode:
          type: string
          description: |
            Payout failure code
        failureReason:
          type: string
          description: |
            Payout failure reason
        payoutArrivalAt:
          type: string
          description: >
            Payout Arrival Time (ISO 8601, UTC+00:00):
            yyyy-MM-dd'T'HH:mm:ss.SSS'Z', e.g. 2026-08-12T09:30:00.000Z
        payoutUpdatedAt:
          type: string
          description: >
            Payout last update time (ISO 8601, UTC+00:00):
            yyyy-MM-dd'T'HH:mm:ss.SSS'Z', e.g. 2026-08-12T09:30:00.000Z

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.