Overview
Push maintains a ledger tracking all movement of money into and out of your product. Settlement begins when a payment is approved and posted to the payment network, and ends when the funds are deposited into your operational account. In between, Push records that movement as a transaction and settles it via a transfer. This guide explains the model your payments and finance teams will use to reconcile payments made through Push against your own records: what a transaction is, the lifecycle it moves through, how transactions are composed into transfers, the schedule on which they settle, and how to tie it all back to the payments you submitted.The model
The ledger is built from three resources:Transactions
A single record of money movement, one per approved intent, refund, or dispute.
Transfers
A net movement of funds between Push and your operational account, composed from a set of transactions.
Accounts
The managed accounts that transactions settle against.
Transactions
A transaction is a stateful record of money moving through the platform. Push creates a transaction when it commits to a movement of funds (i.e. when a payment intent is approved and submitted for processing). Every transaction has a direction and an amount:directioniscash_in(a deposit or purchase moving funds from the user’s account to the platform) orcash_out(a withdrawal, refund, or payout moving funds from your platform back to the user’s bank account).amountis an unsigned integer in the smallest currency unit (for USD, integer cents). The amount is always non-negative; thedirectiontells you which way the money moved.
The amount is always positive. To compute a signed effect on your balance, treat
cash_in as positive and cash_out as negative.The transaction fields
The transaction lifecycle
A transaction advances through a series of statuses as its funds move toward settlement. The stages differ by direction, becausecash_in funds must be confirmed by the financial network before they can be settled, whereas cash_out funds do not.
- Cash-in:
pending → available → settled - Cash-out:
pending → in_transfer → settled
available applies only to cash_in (it marks funds confirmed by the network and ready to settle); in_transfer applies only to cash_out (it marks funds being collected via a transfer).
A transaction advances only forward through these stages. A transaction that does not advance as expected (for example, one whose settlement window has passed without being included in a transfer) falls out of the normal flow and is resolved by Push operations — it will not silently settle for the wrong amount.
Transfers
A transfer is the actual movement of funds between the Push settlement account and your operational account. At the close of each settlement window, Push gathers the transactions that are eligible to settle, nets them, and creates a transfer. A transfer has a direction that reflects the net movement:disbursement— a net payout to your operational account. This happens whencash_in(deposits) exceedscash_out(withdrawals) for the window.collection— a net withdrawal from your operational account. This happens whencash_outexceedscash_in.
amount is unsigned and equals the exact net of its constituent transactions:
transactions array is the complete, exact set that produced its amount.
The transfer fields
When a transfer is embedded in the
transfer field of a transaction object, it appears as a compact summary (id, amount, currency, direction, date, created_at) without its own nested transactions array. Fetch the transfer endpoints to retrieve the full transfer with its constituents.
Accounts
Transactions and transfers settle against a Push-managed account — this is where your settlement activity lands. List your accounts withlist accounts.
Accounts identify where activity settles; your settled position for any period is derived from the transactions and transfers that reference the account, as described in Reconciliation below.
Settlement schedule
Which window a transaction settles in — and therefore when it reachessettled and appears in a transfer — is fixed by the settlement schedule.
Push Cash defines a 24-hour settlement window for payment intents submitted between the hours of 4PM Eastern the previous day and 4PM Eastern on each day of processing.
- For any
cash_inpayment intents, the funds will be settled 1 day later (t+1). - For any
cash_outpayment intents, the funds will be settled the same day (t).
The network operator will settle transfers to your operational account same-day if a processing day falls outside of a weekend or bank holiday.
Otherwise, the funds will be settled on the next banking day.Push Cash submits transfers to the payment network every day of the week, regardless of holidays or weekends.
Reconciliation
Because a transfer is an exact composition of its transactions, you can reconcile Push against your own books deterministically. A typical monthly or per-window reconciliation looks like this:1
Match each transfer to the funds movement on your bank statement
A
disbursement is a deposit into your operational account; a collection is a debit from it. The amount and date on the transfer correspond to the movement you’ll see at your bank.2
Expand the transfer into its transactions
Fetch the transfer with
get a transfer and read its transactions array. Confirm that the transactions net to the transfer amount:3
Tie each transaction back to your own records
Each transaction carries a
type and source_id pointing to the intent, refund, or dispute that created it. If you set a tag when you authorized the payment, you can retrieve the source object and match it to your internal identifier.You do not need to poll for the moment a transaction settles. Use webhooks for real-time payment outcomes, and use the ledger endpoints (
list transactions, list transfers) to reconcile settled activity for a window or date range.Querying the ledger
List endpoints are cursor-paginated: pass the
next_cursor from a response as the cursor parameter of the next request until it is null.