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

# Progress a waiting transfer

> Releases an on-ramp transfer waiting at `awaiting_client_action` on a client-gated route so it converts at the live rate at the moment of the call and is delivered like any other funding.

## What this endpoint does

Releases an on-ramp transfer waiting at `awaiting_client_action` on a client-gated route so it converts at the live rate at the moment of the call and is delivered like any other funding.

## When to use it

Call it once you have decided to accept a payment that arrived on a route with `clientGate` enabled. Send an empty body.

## Before you call

Use a secret API key with transfer write access and pass a transfer owned by this tenant account. A request made from a console session also needs a recent second-factor confirmation. The customer must still be entitled for on-ramp (`403 entitlement_lapsed` otherwise; a refund is still available).

## Money and balance effect

Converts the full landed AUD at the live rate struck when you progress, then sends the stablecoin to the route’s destination. Nothing is converted before you call this.

## States and completion

The transfer re-enters `screening` and continues through the normal states to `completed`. A repeat call after it has taken effect returns `200` with the current state. A transfer that is not waiting returns `409 transfer_not_awaiting_client_action`; `409 client_gate_decision_taken` means a refund was already chosen; `409 refund_in_progress`, `refund_may_have_executed`, `refund_recall_ambiguous`, or `refund_evidence_unverifiable` mean an earlier refund attempt must be settled first.

## Safe retries

Send a unique `Idempotency-Key`. If the response is lost, retry with the same key, or read the transfer first. `409 client_gate_busy` and `client_gate_window_unavailable` mean another action on the transfer is in progress — retry shortly.

Read [Activity and history](/console/activity.md) for the complete workflow.


## OpenAPI

````yaml /api-reference/openapi.json post /v1/transfers/{id}/progress
openapi: 3.0.0
info:
  title: Wayex API
  description: >-
    Wayex APIs for direct customer payment routes and isolated, prefunded
    Treasury accounts. Each API key is bound to one tenant account and its own
    wallet, settings, webhooks, and reporting.
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.sandbox.rails.wayex.com
    description: Sandbox — fully simulated providers, no real funds move
  - url: https://api.rails.wayex.com
    description: Production — live rails, real funds move
security:
  - Bearer: []
  - ApiKey: []
tags:
  - name: Treasury
    description: >-
      Prefunded AUD and stablecoin wallets for one isolated tenant account.
      Fund, pay, convert, withdraw, track, and reconcile without selecting
      another account.
  - name: Customers
    description: >-
      Onboard end customers, run verification, and manage each customer's
      entitlements.
  - name: Payment routes
    description: >-
      Standing deposit instructions per customer. When a customer funds a route,
      Wayex auto-converts at the live rate and pays out/sends — no quote, no
      lock.
  - name: Transfers
    description: >-
      Read the conversion records produced when customers fund payment routes —
      the live activity feed and per-conversion lifecycle timeline — and, on
      client-gated routes, progress or refund a waiting payment.
  - name: Rates
    description: >-
      The live indicative AUD↔stablecoin rate right now — the all-in rate Wayex
      quotes. Indicative only; the binding price is struck when a route's funds
      land, or when you progress a client-gated payment.
  - name: Revenue
    description: Your developer-fee revenue over time.
  - name: Invoices
    description: >-
      Your monthly invoices — Wayex platform fees due, net of your accrued
      developer-fee credit.
  - name: Webhooks
    description: Subscribe to HMAC-signed event webhooks and inspect deliveries.
  - name: API keys
    description: Create, list, and rotate API keys for programmatic access.
  - name: Fees
    description: >-
      Configure your developer fee — the markup withheld from each conversion
      and credited against your monthly invoice.
  - name: Invitations
    description: Accept a team invitation and activate your account.
  - name: Team
    description: Manage your own team — list members and send console invitations.
  - name: Notification settings
    description: >-
      Manage whether Wayex sends customer-facing notification emails on your
      behalf.
paths:
  /v1/transfers/{id}/progress:
    post:
      tags:
        - Transfers
      summary: Progress a waiting transfer
      description: >-
        Releases an on-ramp transfer waiting at `awaiting_client_action` on a
        client-gated route so it converts at the live rate at the moment of the
        call and is delivered like any other funding. Call it once you have
        decided to accept a payment that arrived on a route with `clientGate`
        enabled. Send an empty body.
      operationId: TransferController2_progress_v1
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: Idempotency-Key
          in: header
          required: true
          description: >-
            A unique key for this logical action. Reuse the same key and
            identical payload when retrying after an unknown response.
          schema:
            type: string
            minLength: 8
            maxLength: 255
          example: 13bda8d7-87bd-4fa4-b7d5-e740725f9bd2
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties: {}
      responses:
        '200':
          description: The transfer after the decision.
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      id:
                        description: Unique identifier for this transfer.
                        type: string
                        minLength: 1
                      counterpartyId:
                        description: >-
                          The client account (counterparty) this transfer
                          belongs to. For API callers this is always your own
                          account id.
                        type: string
                        minLength: 1
                      customerId:
                        description: The customer this transfer is for.
                        type: string
                        minLength: 1
                      routeId:
                        description: The payment route whose funding spawned this transfer.
                        type: string
                        minLength: 1
                      quoteId:
                        description: >-
                          Reference to the live price struck at funding; absent
                          until the conversion executes.
                        type: string
                        minLength: 1
                      status:
                        description: >-
                          Current lifecycle status. State advances
                          asynchronously, so treat this as the source of truth.
                        type: string
                        enum:
                          - created
                          - validated
                          - screening
                          - fx_executed
                          - completed
                          - awaiting_deposit
                          - deposit_detected
                          - deposit_confirming
                          - deposit_cleared
                          - sweeping
                          - onforwarding
                          - payout_instructed
                          - payout_held
                          - payout_settled
                          - awaiting_payin
                          - payin_cleared
                          - disbursing
                          - sending
                          - send_confirming
                          - pooled
                          - awaiting_client_action
                          - refunding
                          - on_hold
                          - frozen
                          - failed
                          - cancelled
                          - returned
                          - expired
                          - reversing
                          - reversed
                      sourceDepositInstructions:
                        oneOf:
                          - type: object
                            properties:
                              kind:
                                type: string
                                enum:
                                  - crypto
                              address:
                                type: string
                                minLength: 1
                              currency:
                                type: string
                                enum:
                                  - USDC
                                  - USDT
                              network:
                                type: string
                                enum:
                                  - ethereum
                                  - base
                                  - arbitrum
                                  - optimism
                                  - polygon
                                  - bsc
                                  - avalanche
                                  - solana
                                  - tron
                              amount:
                                type: string
                                pattern: ^\d+(\.\d+)?$
                            required:
                              - kind
                              - address
                              - currency
                              - network
                              - amount
                          - type: object
                            properties:
                              kind:
                                type: string
                                enum:
                                  - aud
                              bsb:
                                type: string
                                minLength: 1
                              accountNumber:
                                type: string
                                minLength: 1
                              payId:
                                type: string
                              remitterName:
                                type: string
                              endToEndId:
                                type: string
                              paymentDescription:
                                type: string
                              reference:
                                type: string
                                minLength: 1
                              currency:
                                type: string
                                enum:
                                  - AUD
                              amount:
                                type: string
                                pattern: ^\d+(\.\d+)?$
                            required:
                              - kind
                              - reference
                              - currency
                              - amount
                      references:
                        type: object
                        properties:
                          payoutHoldReason:
                            type: string
                          quoteId:
                            type: string
                            minLength: 1
                          providerQuoteId:
                            type: string
                          liquidationAddress:
                            type: string
                          vaultId:
                            type: string
                          disbursementVaultId:
                            type: string
                          depositReference:
                            type: string
                          depositTxHash:
                            description: >-
                              On-chain transaction hash. Resolvable on a block
                              explorer for this transfer's network.
                            type: string
                            nullable: true
                          depositSourceAddress:
                            description: >-
                              The sender's wallet address observed on the
                              incoming deposit.
                            type: string
                            nullable: true
                          payinReference:
                            type: string
                          tradeId:
                            type: string
                          sweepTxId:
                            description: >-
                              Custody-provider internal transaction id (UUID).
                              NOT a block-explorer hash.
                            type: string
                          sweepTxHash:
                            description: >-
                              On-chain transaction hash. Resolvable on a block
                              explorer for this transfer's network.
                            type: string
                            nullable: true
                          failedSweepTxIds:
                            description: >-
                              Custody-provider internal transaction ids (UUID).
                              NOT block-explorer hashes.
                            type: array
                            items:
                              type: string
                          onforwardTxId:
                            description: >-
                              Custody-provider internal transaction id (UUID).
                              NOT a block-explorer hash.
                            type: string
                          failedOnforwardTxIds:
                            description: >-
                              Custody-provider internal transaction ids (UUID).
                              NOT block-explorer hashes.
                            type: array
                            items:
                              type: string
                          onforwardToAddress:
                            type: string
                          onforwardTxHash:
                            description: >-
                              On-chain transaction hash. Resolvable on a block
                              explorer for this transfer's network.
                            type: string
                          onforwardDepositId:
                            type: string
                          fiatWithdrawalId:
                            type: string
                          rejectedFiatWithdrawals:
                            description: >-
                              Internal retry markers for definitively-refused FX
                              withdrawal attempts.
                            type: array
                            items:
                              type: string
                          stablecoinWithdrawalId:
                            type: string
                          fxFundingPayoutId:
                            type: string
                          sendTxId:
                            description: >-
                              Custody-provider internal transaction id (UUID).
                              NOT a block-explorer hash.
                            type: string
                          sendTxHash:
                            description: >-
                              On-chain transaction hash. Resolvable on a block
                              explorer for this transfer's network.
                            type: string
                            nullable: true
                          failedSendTxIds:
                            description: >-
                              Custody-provider internal transaction ids (UUID).
                              NOT block-explorer hashes.
                            type: array
                            items:
                              type: string
                          payoutId:
                            type: string
                          ledgerEntryRefs:
                            type: array
                            items:
                              type: string
                          lastCaseReason:
                            description: >-
                              Machine reason code of the last park; cleared on
                              the next state transition.
                            type: string
                          lastCaseAt:
                            type: string
                      timeline:
                        description: >-
                          Ordered history of the states this transfer passed
                          through, with timestamps.
                        type: array
                        items:
                          type: object
                          properties:
                            status:
                              type: string
                              enum:
                                - created
                                - validated
                                - screening
                                - fx_executed
                                - completed
                                - awaiting_deposit
                                - deposit_detected
                                - deposit_confirming
                                - deposit_cleared
                                - sweeping
                                - onforwarding
                                - payout_instructed
                                - payout_held
                                - payout_settled
                                - awaiting_payin
                                - payin_cleared
                                - disbursing
                                - sending
                                - send_confirming
                                - pooled
                                - awaiting_client_action
                                - refunding
                                - on_hold
                                - frozen
                                - failed
                                - cancelled
                                - returned
                                - expired
                                - reversing
                                - reversed
                            at:
                              type: string
                              format: date-time
                            providerRef:
                              type: string
                            description:
                              type: string
                          required:
                            - status
                            - at
                      metadata:
                        type: object
                        additionalProperties:
                          type: string
                      developerFee:
                        description: >-
                          Your developer fee withheld from this conversion
                          (AUD). Present once the conversion executes; omitted
                          on a returned, reversing or reversed transfer.
                        type: object
                        properties:
                          amount:
                            type: string
                            pattern: ^\d+(\.\d+)?$
                          currency:
                            type: string
                            enum:
                              - AUD
                        required:
                          - amount
                          - currency
                      exchangeRate:
                        description: >-
                          Destination units per one source unit the conversion
                          executed at, excluding your developer fee. Present
                          once the conversion executes.
                        type: string
                        pattern: ^\d+(\.\d+)?$
                      createdAt:
                        description: When the transfer was created (ISO 8601).
                        type: string
                        format: date-time
                      updatedAt:
                        description: When the transfer was last updated (ISO 8601).
                        type: string
                        format: date-time
                      type:
                        type: string
                        enum:
                          - offramp
                      source:
                        type: object
                        properties:
                          currency:
                            type: string
                            enum:
                              - USDC
                              - USDT
                          network:
                            type: string
                            enum:
                              - ethereum
                              - base
                              - arbitrum
                              - optimism
                              - polygon
                              - bsc
                              - avalanche
                              - solana
                              - tron
                          amount:
                            type: string
                            pattern: ^\d+(\.\d+)?$
                        required:
                          - currency
                          - network
                          - amount
                      destination:
                        oneOf:
                          - type: object
                            properties:
                              account_holder_name:
                                type: string
                                minLength: 1
                              bsb_code:
                                type: string
                                minLength: 1
                              account_number:
                                type: string
                                minLength: 1
                              bank_country:
                                type: string
                                minLength: 1
                              currency:
                                type: string
                                enum:
                                  - AUD
                            required:
                              - account_holder_name
                              - bsb_code
                              - account_number
                              - bank_country
                              - currency
                          - type: object
                            properties:
                              payid:
                                type: string
                                minLength: 1
                              payid_type:
                                type: string
                                enum:
                                  - email
                                  - phone
                                  - abn
                              account_holder_name:
                                type: string
                                minLength: 1
                              bank_country:
                                type: string
                                minLength: 1
                              currency:
                                type: string
                                enum:
                                  - AUD
                            required:
                              - payid
                              - payid_type
                              - account_holder_name
                              - bank_country
                              - currency
                      destinationAmount:
                        description: >-
                          Net AUD the customer receives as a decimal string; set
                          once the conversion executes ("0" before).
                        type: string
                        pattern: ^\d+(\.\d+)?$
                      destinationCurrency:
                        type: string
                        enum:
                          - AUD
                    required:
                      - id
                      - counterpartyId
                      - customerId
                      - status
                      - sourceDepositInstructions
                      - references
                      - timeline
                      - createdAt
                      - updatedAt
                      - type
                      - source
                      - destination
                      - destinationAmount
                      - destinationCurrency
                  - type: object
                    properties:
                      id:
                        description: Unique identifier for this transfer.
                        type: string
                        minLength: 1
                      counterpartyId:
                        description: >-
                          The client account (counterparty) this transfer
                          belongs to. For API callers this is always your own
                          account id.
                        type: string
                        minLength: 1
                      customerId:
                        description: The customer this transfer is for.
                        type: string
                        minLength: 1
                      routeId:
                        description: The payment route whose funding spawned this transfer.
                        type: string
                        minLength: 1
                      quoteId:
                        description: >-
                          Reference to the live price struck at funding; absent
                          until the conversion executes.
                        type: string
                        minLength: 1
                      status:
                        description: >-
                          Current lifecycle status. State advances
                          asynchronously, so treat this as the source of truth.
                        type: string
                        enum:
                          - created
                          - validated
                          - screening
                          - fx_executed
                          - completed
                          - awaiting_deposit
                          - deposit_detected
                          - deposit_confirming
                          - deposit_cleared
                          - sweeping
                          - onforwarding
                          - payout_instructed
                          - payout_held
                          - payout_settled
                          - awaiting_payin
                          - payin_cleared
                          - disbursing
                          - sending
                          - send_confirming
                          - pooled
                          - awaiting_client_action
                          - refunding
                          - on_hold
                          - frozen
                          - failed
                          - cancelled
                          - returned
                          - expired
                          - reversing
                          - reversed
                      sourceDepositInstructions:
                        oneOf:
                          - type: object
                            properties:
                              kind:
                                type: string
                                enum:
                                  - crypto
                              address:
                                type: string
                                minLength: 1
                              currency:
                                type: string
                                enum:
                                  - USDC
                                  - USDT
                              network:
                                type: string
                                enum:
                                  - ethereum
                                  - base
                                  - arbitrum
                                  - optimism
                                  - polygon
                                  - bsc
                                  - avalanche
                                  - solana
                                  - tron
                              amount:
                                type: string
                                pattern: ^\d+(\.\d+)?$
                            required:
                              - kind
                              - address
                              - currency
                              - network
                              - amount
                          - type: object
                            properties:
                              kind:
                                type: string
                                enum:
                                  - aud
                              bsb:
                                type: string
                                minLength: 1
                              accountNumber:
                                type: string
                                minLength: 1
                              payId:
                                type: string
                              remitterName:
                                type: string
                              endToEndId:
                                type: string
                              paymentDescription:
                                type: string
                              reference:
                                type: string
                                minLength: 1
                              currency:
                                type: string
                                enum:
                                  - AUD
                              amount:
                                type: string
                                pattern: ^\d+(\.\d+)?$
                            required:
                              - kind
                              - reference
                              - currency
                              - amount
                      references:
                        type: object
                        properties:
                          payoutHoldReason:
                            type: string
                          quoteId:
                            type: string
                            minLength: 1
                          providerQuoteId:
                            type: string
                          liquidationAddress:
                            type: string
                          vaultId:
                            type: string
                          disbursementVaultId:
                            type: string
                          depositReference:
                            type: string
                          depositTxHash:
                            description: >-
                              On-chain transaction hash. Resolvable on a block
                              explorer for this transfer's network.
                            type: string
                            nullable: true
                          depositSourceAddress:
                            description: >-
                              The sender's wallet address observed on the
                              incoming deposit.
                            type: string
                            nullable: true
                          payinReference:
                            type: string
                          tradeId:
                            type: string
                          sweepTxId:
                            description: >-
                              Custody-provider internal transaction id (UUID).
                              NOT a block-explorer hash.
                            type: string
                          sweepTxHash:
                            description: >-
                              On-chain transaction hash. Resolvable on a block
                              explorer for this transfer's network.
                            type: string
                            nullable: true
                          failedSweepTxIds:
                            description: >-
                              Custody-provider internal transaction ids (UUID).
                              NOT block-explorer hashes.
                            type: array
                            items:
                              type: string
                          onforwardTxId:
                            description: >-
                              Custody-provider internal transaction id (UUID).
                              NOT a block-explorer hash.
                            type: string
                          failedOnforwardTxIds:
                            description: >-
                              Custody-provider internal transaction ids (UUID).
                              NOT block-explorer hashes.
                            type: array
                            items:
                              type: string
                          onforwardToAddress:
                            type: string
                          onforwardTxHash:
                            description: >-
                              On-chain transaction hash. Resolvable on a block
                              explorer for this transfer's network.
                            type: string
                          onforwardDepositId:
                            type: string
                          fiatWithdrawalId:
                            type: string
                          rejectedFiatWithdrawals:
                            description: >-
                              Internal retry markers for definitively-refused FX
                              withdrawal attempts.
                            type: array
                            items:
                              type: string
                          stablecoinWithdrawalId:
                            type: string
                          fxFundingPayoutId:
                            type: string
                          sendTxId:
                            description: >-
                              Custody-provider internal transaction id (UUID).
                              NOT a block-explorer hash.
                            type: string
                          sendTxHash:
                            description: >-
                              On-chain transaction hash. Resolvable on a block
                              explorer for this transfer's network.
                            type: string
                            nullable: true
                          failedSendTxIds:
                            description: >-
                              Custody-provider internal transaction ids (UUID).
                              NOT block-explorer hashes.
                            type: array
                            items:
                              type: string
                          payoutId:
                            type: string
                          ledgerEntryRefs:
                            type: array
                            items:
                              type: string
                          lastCaseReason:
                            description: >-
                              Machine reason code of the last park; cleared on
                              the next state transition.
                            type: string
                          lastCaseAt:
                            type: string
                      timeline:
                        description: >-
                          Ordered history of the states this transfer passed
                          through, with timestamps.
                        type: array
                        items:
                          type: object
                          properties:
                            status:
                              type: string
                              enum:
                                - created
                                - validated
                                - screening
                                - fx_executed
                                - completed
                                - awaiting_deposit
                                - deposit_detected
                                - deposit_confirming
                                - deposit_cleared
                                - sweeping
                                - onforwarding
                                - payout_instructed
                                - payout_held
                                - payout_settled
                                - awaiting_payin
                                - payin_cleared
                                - disbursing
                                - sending
                                - send_confirming
                                - pooled
                                - awaiting_client_action
                                - refunding
                                - on_hold
                                - frozen
                                - failed
                                - cancelled
                                - returned
                                - expired
                                - reversing
                                - reversed
                            at:
                              type: string
                              format: date-time
                            providerRef:
                              type: string
                            description:
                              type: string
                          required:
                            - status
                            - at
                      metadata:
                        type: object
                        additionalProperties:
                          type: string
                      developerFee:
                        description: >-
                          Your developer fee withheld from this conversion
                          (AUD). Present once the conversion executes; omitted
                          on a returned, reversing or reversed transfer.
                        type: object
                        properties:
                          amount:
                            type: string
                            pattern: ^\d+(\.\d+)?$
                          currency:
                            type: string
                            enum:
                              - AUD
                        required:
                          - amount
                          - currency
                      exchangeRate:
                        description: >-
                          Destination units per one source unit the conversion
                          executed at, excluding your developer fee. Present
                          once the conversion executes.
                        type: string
                        pattern: ^\d+(\.\d+)?$
                      createdAt:
                        description: When the transfer was created (ISO 8601).
                        type: string
                        format: date-time
                      updatedAt:
                        description: When the transfer was last updated (ISO 8601).
                        type: string
                        format: date-time
                      type:
                        type: string
                        enum:
                          - onramp
                      source:
                        type: object
                        properties:
                          currency:
                            type: string
                            enum:
                              - AUD
                          amount:
                            type: string
                            pattern: ^\d+(\.\d+)?$
                        required:
                          - currency
                          - amount
                      destination:
                        type: object
                        properties:
                          address:
                            type: string
                            minLength: 1
                          currency:
                            type: string
                            enum:
                              - USDC
                              - USDT
                          network:
                            type: string
                            enum:
                              - ethereum
                              - base
                              - arbitrum
                              - optimism
                              - polygon
                              - bsc
                              - avalanche
                              - solana
                              - tron
                        required:
                          - address
                          - currency
                          - network
                      destinationAmount:
                        description: >-
                          Net stablecoin the customer receives as a decimal
                          string; set once the conversion executes ("0" before).
                        type: string
                        pattern: ^\d+(\.\d+)?$
                      destinationCurrency:
                        type: string
                        enum:
                          - USDC
                          - USDT
                    required:
                      - id
                      - counterpartyId
                      - customerId
                      - status
                      - sourceDepositInstructions
                      - references
                      - timeline
                      - createdAt
                      - updatedAt
                      - type
                      - source
                      - destination
                      - destinationAmount
                      - destinationCurrency
        '400':
          description: The body carried a field (the body must be empty).
        '403':
          description: >-
            The customer's entitlement is lapsed or suspended
            (`entitlement_lapsed`), no fresh second factor was presented from a
            console session (`step_up_required`), or the key lacks the scope
            (`insufficient_scope`) or is used from a disallowed address
            (`ip_not_allowed`).
        '404':
          description: No such transfer for this account.
        '409':
          description: >-
            The transfer is not waiting for a decision
            (`transfer_not_awaiting_client_action`); the payer recalled the
            payment (`payin_returned_pending`); another decision was already
            taken (`client_gate_decision_taken`); a refund is in progress or may
            have executed (`refund_in_progress`, `refund_recall_ambiguous`,
            `refund_may_have_executed`, `refund_evidence_unverifiable`); the
            payment route is closed (`route_inactive`) — refund the payer
            instead; or another action on this transfer is in progress
            (`client_gate_busy`, `client_gate_window_unavailable`,
            `transfer_state_unverifiable`, `route_status_unreadable`) — retry
            shortly.
      security:
        - Bearer: []
        - ApiKey: []
components:
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: Wayex API key
      description: 'Send the same Wayex API key as `Authorization: Bearer <key>`.'
    ApiKey:
      type: apiKey
      in: header
      name: X-Api-Key
      description: >-
        A Wayex API key. Use a secret key (`sk_…`) — it works on every endpoint.
        Publishable keys (`pk_…`) are accepted only on a small set of read
        endpoints: `GET /v1/rates`, `GET /v1/activity`, `GET
        /v1/developer-fees`, `GET /v1/revenue`, and `GET /v1/reports/revenue`.

````

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