Skip to main content
Flow payments moves value from a payer to a destination you control. The payer can pay from a wallet, from an exchange account such as Coinbase, or by sending funds to a deposit address, in a token and on a chain of their choice. You receive the token you configured, on the chain you configured, at the address you configured. Each payment is represented by a flow: one request to move one amount, created by your server and completed by the payer. Flow payments is one part of Fireblocks Flow, alongside wallet connections and linked exchange accounts, which work without a payment.
Flow payments is an enterprise feature. Contact us to enable it for your environment.

Who does what

A payment involves your server, the payer, and Dynamic. Each one does a different part of the work. Your server keeps the API token. The payer’s page needs only the flow ID to start, and it receives a short-lived session token when the payer chooses a source. Access and data explains what each credential allows. Everything you configure when you create a flow is fixed from then on. The payer can change their payment source before paying, and in deposit mode they can also change the amount. Payment lifecycle and states lists what can change and until when.

Modes

You choose a mode when you create the flow, and it cannot change afterwards. The mode decides who sets the amount and in which currency. Only deposit mode accepts an amount change. A quote that changes the amount in any other mode is rejected. The mode also decides what happens when less than the requested amount arrives. A deposit flow accepts the smaller amount and settles it, while a payment flow does not. Amounts you will see describes both cases.

Payment sources

The payer pays from one of three sources, and your UI decides which ones to offer. Every Flow payment includes risk screening by default, and only wallet sources are screened. Payment sources compares the three and explains what each requires.

How you know a payment worked

A flow has no single status. It reports progress on three independent axes:
  • Execution tracks what the payer and their source did, from initiated to source_confirmed.
  • Settlement tracks delivery to your destination, from none to completed.
  • Risk records the screening result: unknown, cleared, or blocked.
A payment is done when settlementState is completed. Execution reaching source_confirmed means the payer’s funds arrived, but delivery to your destination can still be in progress. Your server learns about each change from webhooks, and Payment lifecycle and states describes every state.

Choose your path

Payment lifecycle and states

Every state, what moves a flow between them, and what can change.

Payment links

Share a link instead of building a payment page.

API guide

Create and complete a flow with HTTP requests.

JavaScript SDK

Run a payment from a web or React Native app.

Flutter SDK

Run a payment from a Flutter app.
Dynamic does not control the swap, bridge, or routing protocols used to convert and deliver assets. Rates and fees are sourced from third-party providers and may change between quote and execution. Cross-chain transfers carry risk, including slippage, partial fills, and failed conversions. On-chain transactions are final and cannot be reversed.
Last modified on October 27, 2026