Coins.ph Ramp Callback API

Webhook callbacks sent to the merchant's configured callback URL when order status changes

OpenAPI Specification

coinsph-ramp-callback-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: TRADING Account Ramp Callback API
  version: 1.0.0
  description: API reference for Account management — Coins.ph
servers:
- url: https://api.pro.coins.ph
  description: Production
- url: https://api.9001.pl-qa.coinsxyz.me
  description: Sandbox
tags:
- name: Ramp Callback
  description: Webhook callbacks sent to the merchant's configured callback URL when order status changes
paths:
  /openapi/ramp/callback:
    post:
      tags:
      - Ramp Callback
      summary: Ramp Callback API
      description: 'A POST request will be sent to the callback URL configured by the merchant whenever the order status changes. This is NOT an endpoint you call — it documents the payload Coins.ph sends TO your server.


        ## Order Status Values

        - `CREATE` - Order created

        - `RISK_REVIEW` - Risk review in progress

        - `FUND_TRANSFER_PROCESSING` - Fund transfer in progress

        - `QUOTE_ACCEPT_PROCESSING` - Quote acceptance in progress

        - `REFUNDED_TRANSFER_PROCESSING` - Refund transfer in progress

        - `QUOTE_ACCEPTED` - Quote accepted

        - `WAITING_TX_ID` - Waiting for transaction ID from merchant

        - `CRYPTO_DISBURSE_PENDING` - Crypto disbursement pending

        - `CRYPTO_PENDING` - Waiting for crypto deposit

        - `CRYPTO_SENT` - Crypto sent

        - `CRYPTO_CONFIRMING` - Crypto confirming on chain

        - `CRYPTO_CONFIRMED` - Crypto confirmed

        - `CRYPTO_REFUND_PENDING` - Crypto refund pending

        - `CRYPTO_REFUND` - Crypto refunded

        - `PAYOUT_PROCESSING` - Payout processing

        - `PAYOUT_FAILED` - Payout failed

        - `REFUND_FAILED` - Refund failed

        - `PAYOUT_CONFIRMED` - Payout confirmed

        - `MANUAL_REVIEW` - Manual review required

        - `FUND_TRANSFER_BACK` - Fund transferred back

        - `EXPIRED` - Order expired

        - `PROCESSING` - Processing

        - `SUCCEEDED` - Succeeded (terminal)

        - `FAILED` - Failed (terminal)

        - `CANCELLED` - Cancelled (terminal)

        - `REFUNDED` - Refunded (terminal)'
      operationId: rampOrderStatusCallback
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RampCallbackRequest'
            example:
              id: '2199397325237953280'
              rampType: OFF_RAMP
              orderId: '2199397325237953280'
              orderStatus: QUOTE_ACCEPT_PROCESSING
              txId: ''
              errorCode: ''
              errorMessage: ''
              moreInfo:
                createdAt: '2026-04-23T06:09:53Z'
                quoteId: d20eaa5ecde942eeb48b5f40fe981a76
                status: QUOTE_ACCEPT_PROCESSING
                sourceAmount:
                  amount: 1.2
                  currency: USDT
                  zero: false
                  positive: true
                targetAmount:
                  amount: 1.196
                  currency: USDC
                  zero: false
                  positive: true
                sourceCurrency: USDT
                targetCurrency: USDC
                targetWalletAddress: rKrDJLGiSrKsRRtEQVgnWJnKALp5NJeDkC
                targetUserId: '2142216666787644416'
                targetWalletAddressTag: ''
                errorCode: ''
                errorMessage: ''
                txId: ''
                withdrawId: ''
                orderId: '2199397325237953280'
                rampTypeCode: OFF_RAMP
              callbackKey: null
              merchantId: null
              timestamp: 1776924592732
      responses:
        '200':
          description: Merchant acknowledges receipt of the callback
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RampCallbackResponse'
              example:
                code: '0'
                message: success
                data: {}
components:
  schemas:
    RampCallbackRequest:
      type: object
      description: Callback payload sent to the merchant's configured callback URL when order status changes.
      required:
      - rampType
      - orderId
      - orderStatus
      properties:
        id:
          type: string
          description: Unique callback event identifier.
          example: '2199397325237953280'
        rampType:
          type: string
          enum:
          - ON_RAMP
          - OFF_RAMP
          description: Type of ramp operation.
          example: OFF_RAMP
        orderId:
          type: string
          description: The order ID.
          example: '2199397325237953280'
        orderStatus:
          type: string
          enum:
          - CREATE
          - RISK_REVIEW
          - FUND_TRANSFER_PROCESSING
          - QUOTE_ACCEPT_PROCESSING
          - REFUNDED_TRANSFER_PROCESSING
          - QUOTE_ACCEPTED
          - WAITING_TX_ID
          - CRYPTO_DISBURSE_PENDING
          - CRYPTO_PENDING
          - CRYPTO_SENT
          - CRYPTO_CONFIRMING
          - CRYPTO_CONFIRMED
          - CRYPTO_REFUND_PENDING
          - CRYPTO_REFUND
          - PAYOUT_PROCESSING
          - PAYOUT_FAILED
          - REFUND_FAILED
          - PAYOUT_CONFIRMED
          - MANUAL_REVIEW
          - FUND_TRANSFER_BACK
          - EXPIRED
          - PROCESSING
          - SUCCEEDED
          - FAILED
          - CANCELLED
          - REFUNDED
          description: 'Current order status. Terminal statuses: SUCCEEDED, FAILED, CANCELLED, REFUNDED.'
          example: QUOTE_ACCEPT_PROCESSING
        txId:
          type: string
          description: On-chain transaction ID (if applicable).
          example: ''
        errorCode:
          type: string
          description: Error code (if any).
          example: ''
        errorMessage:
          type: string
          description: Error message (if any).
          example: ''
        moreInfo:
          type: object
          description: Additional order information.
          properties:
            createdAt:
              type: string
              format: date-time
              description: Order creation time in ISO 8601 format.
              example: '2026-04-23T06:09:53Z'
            quoteId:
              type: string
              description: Quote identifier.
              example: d20eaa5ecde942eeb48b5f40fe981a76
            status:
              type: string
              description: Status within moreInfo context.
              example: QUOTE_ACCEPT_PROCESSING
            sourceAmount:
              type: object
              properties:
                amount:
                  type: number
                  example: 1.2
                currency:
                  type: string
                  example: USDT
                zero:
                  type: boolean
                  example: false
                positive:
                  type: boolean
                  example: true
            targetAmount:
              type: object
              properties:
                amount:
                  type: number
                  example: 1.196
                currency:
                  type: string
                  example: USDC
                zero:
                  type: boolean
                  example: false
                positive:
                  type: boolean
                  example: true
            sourceCurrency:
              type: string
              example: USDT
            targetCurrency:
              type: string
              example: USDC
            targetWalletAddress:
              type: string
              description: Target wallet address for the transaction.
              example: rKrDJLGiSrKsRRtEQVgnWJnKALp5NJeDkC
            targetUserId:
              type: string
              description: Target user identifier.
              example: '2142216666787644416'
            targetWalletAddressTag:
              type: string
              description: Wallet address tag (if applicable).
              example: ''
            errorCode:
              type: string
              example: ''
            errorMessage:
              type: string
              example: ''
            txId:
              type: string
              description: On-chain transaction ID.
              example: ''
            withdrawId:
              type: string
              description: Withdrawal ID.
              example: ''
            orderId:
              type: string
              example: '2199397325237953280'
            rampTypeCode:
              type: string
              enum:
              - ON_RAMP
              - OFF_RAMP
              example: OFF_RAMP
        callbackKey:
          type: string
          nullable: true
          description: Callback key (if configured).
        merchantId:
          type: string
          nullable: true
          description: Merchant ID (if configured).
        timestamp:
          type: integer
          format: int64
          description: Callback timestamp (epoch millis).
          example: 1776924592732
    RampCallbackResponse:
      type: object
      description: Expected response from merchant after receiving the callback.
      properties:
        code:
          type: string
          description: Response code. '0' indicates success.
          example: '0'
        message:
          type: string
          description: Response message.
          example: success
        data:
          type: object
          description: Response data (can be empty).
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-COINS-APIKEY
x-readme:
  proxy-enabled: false