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
| Key | Type | Required | Description |
|---|---|---|---|
source | object | Yes | The source account. Must be a PayMongo wallet today. See Account Details below. |
destination | object | Yes | The destination account. Wallet or bank. |
provider | string | Yes | Rail to use. One of auto, paymongo, instapay, pesonet. See Provider matrix. |
amount | string | Yes | Amount to transfer in centavos. To send PHP 200, use "20000". Can be a literal string or a ${...} reference. |
currency | string | Yes | Today only PHP is supported externally. |
notes | string | No | Free-form notes attached to the transaction. Surfaced on the transaction record. |
Account Details
The source and destination objects share the same shape.
| Key | Type | Required | Description |
|---|---|---|---|
type | string | Yes | wallet (a PayMongo wallet) or bank (a Philippine bank account). |
account | string | Yes | Account number for the chosen type. Literal or ${...}. |
account_name | string | Required for destination (bank); optional for source | Account holder name. Case-sensitive; must match the bank's records exactly. |
bic | string | Required for destination.type: "bank" | Bank Identifier Code. Optional / inferred for wallets. Literal or ${...}. |
Provider matrix
| Provider | Source | Destination | Currency | When to use |
|---|---|---|---|---|
auto | wallet | wallet or bank | PHP | Default. PayMongo selects the best rail based on the destination and amount. Recommended unless you have a reason. |
paymongo | wallet | wallet | PHP | Wallet-to-wallet transfer within PayMongo. Lowest latency. |
instapay | wallet | bank | PHP | Real-time bank transfer. Fits smaller, time-sensitive payouts. |
pesonet | wallet | bank | PHP | Batched bank transfer. Fits larger or non-time-critical payouts. |
Outputs
When the step completes, it exposes these fields downstream as ${steps.<name>.output.<field>}.
| Field | Description |
|---|---|
status | Final status of the transfer (completed, failed). |
transfer_id | The PayMongo Transfers API transfer ID. |
transaction_id | The PayMongo transaction ID for the source wallet. |
message | Human-readable status message. |
metadata | Provider-specific metadata. |
workflow_execution_id | Internal execution ID for audit/debugging. |
workflow_activity_id | Internal activity ID for audit/debugging. |
callback_status | Status of the asynchronous callback from the Transfers API. |
callback_received_at | Timestamp 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
- Top-Level Keys : workflow document shape.
- Variables and Expressions : using
${...}references. - Compute Step : derive values from
send_moneyoutputs.
Updated about 5 hours ago