Send Money Step

Step for Sending Money to PayMongo Wallet or Bank Account.

The send_money step transfers funds from a PayMongo wallet to another PayMongo wallet or to a bank account. Today the source must always be a PayMongo wallet, bank-source transfers are not supported externally.

Parameters

KeyTypeRequiredDescription
sourceobjectYesThe source account. Must be a PayMongo wallet today. See Account Details below.
destinationobjectYesThe destination account. Wallet or bank.
providerstringYesRail to use. One of auto, paymongo, instapay, pesonet. See Provider matrix.
amountstringYesAmount to transfer in centavos. To send PHP 200, use "20000". Can be a literal string or a ${...} reference.
currencystringYesToday only PHP is supported externally.
notesstringNoFree-form notes attached to the transaction. Surfaced on the transaction record.

Account Details

The source and destination objects share the same shape.

KeyTypeRequiredDescription
typestringYeswallet (a PayMongo wallet) or bank (a Philippine bank account).
accountstringYesAccount number for the chosen type. Literal or ${...}.
account_namestringRequired for destination (bank); optional for sourceAccount holder name. Case-sensitive; must match the bank's records exactly.
bicstringRequired for destination.type: "bank"Bank Identifier Code. Optional / inferred for wallets. Literal or ${...}.

Provider matrix

ProviderSourceDestinationCurrencyWhen to use
autowalletwallet or bankPHPDefault. PayMongo selects the best rail based on the destination and amount. Recommended unless you have a reason.
paymongowalletwalletPHPWallet-to-wallet transfer within PayMongo. Lowest latency.
instapaywalletbankPHPReal-time bank transfer. Fits smaller, time-sensitive payouts.
pesonetwalletbankPHPBatched bank transfer. Fits larger or non-time-critical payouts.

Outputs

When the step completes, it exposes these fields downstream as ${steps.<name>.output.<field>}.

FieldDescription
statusFinal status of the transfer (completed, failed).
transfer_idThe PayMongo Transfers API transfer ID.
transaction_idThe PayMongo transaction ID for the source wallet.
messageHuman-readable status message.
metadataProvider-specific metadata.
workflow_execution_idInternal execution ID for audit/debugging.
workflow_activity_idInternal activity ID for audit/debugging.
callback_statusStatus of the asynchronous callback from the Transfers API.
callback_received_atTimestamp of the callback.

How it runs

send_money dispatches a transfer to the PayMongo Transfers API and waits for the asynchronous completion callback before allowing the next step to run. If no callback arrives within the provider's window, the workflow polls the Transfers API for the final status. This means a send_money step always finishes before the workflow advances, even when the underlying rail is asynchronous.

Examples

version: 1
name: "send-money-to-merchant-wallet"
description: "Send money from my wallet to another merchant wallet"
steps:
    - send_money:
        source:
            type: "wallet"
            account: "${merchant_account_number}"
            account_name: "${merchant_account_name}"
        destination:
            type: "wallet"
            account: "7754473456987"
            account_name: "AnotherSubMerchant1"
            bic: "PAEYPHM2XXX"
        provider: "paymongo"
        amount: "${net_amount}"
        currency: "PHP"
        notes: "Disbursement"
```yaml Wallet to Bank
version: 1
name: "send-money-to-bank"
description: "Send money to a bank account"
steps:
    - name: "payout"
      send_money:
        source:
            type: "wallet"
            account: "${merchant_account_number}"
        destination:
            type: "bank"
            account: "000010094477"
            account_name: "Amazing Cookie Store"
            bic: "UBPHPHMMXXX"
        provider: "instapay"
        amount: "${net_amount}"
        currency: "PHP"
        notes: "Payout"

See Also