List transfers
Lists persisted payment transfers for the authenticated scope.
GET/Run in dashboard
Set custodyWalletId to select one exact SDP wallet; observed address history is opt-in with includeObserved=true.
Requires an API key with the transfers.read action.
Query parameters
-
custodyWalletId·string· min length 1 · examplecwlt_exampleFilter persisted transfers by exact SDP Wallet ID.
-
search·string· max length 200 · examplexfr_exampleSearch transfer ID, signature, source or destination address, memo, counterparty ID, or counterparty display name. Use at least 3 non-whitespace characters; a blank value is treated as no search filter.
-
token·string· exampleUSDCFilter by token symbol or mint.
-
direction·string· one ofinbound,outbound· exampleoutboundFilter by transfer direction.
-
status·string· exampleconfirmed,finalizedFilter by transfer status. Accepts a comma-separated list of statuses.
-
category·string· alwayswalletFilter by transfer category.
-
type·string· exampletransfer,transfer_batchFilter by one or more comma-separated transfer types.
-
counterpartyId·string· min length 1 · examplecpty_exampleFilter transfers tied to a specific counterparty.
-
from·string· formatdate-time· example2025-01-01T00:00:00.000ZFilter from timestamp.
-
to·string· formatdate-time· example2025-01-02T00:00:00.000ZFilter to timestamp.
-
includeObserved·string· one oftrue,false· defaultfalse· examplefalseWhen custodyWalletId is supplied, also include RPC-observed activity for that exact wallet row's address. Observed rows have custodyWalletId null.
-
sortBy·string· one ofcreatedAt,updatedAt,amount,status· defaultcreatedAt· examplecreatedAtField used to sort the transfer list.
-
sortDirection·string· one ofasc,desc· defaultdesc· exampledescSort direction.
-
page·integer· greater than 0 · default1· example1Page number (1-based).
-
pageSize·integer· min 1 · max 100 · default20· example20Items per page.
Headers
-
x-project-id·string· min length 1 · exampleprj_exampleRequired for dashboard sessions. API keys use their assigned project.
Responses
-
200Transfer list-
data·object[]· required-
fireblocks·objectNative Fireblocks transfer tracking. A processing payment may await approval in Fireblocks; network fees are paid by its source vault. A missing transaction ID means submission is still being reconciled. Do not create a replacement payment while its outcome is unknown.
-
transactionId·string | null· required -
status·string· required -
subStatus·string | null· required
-
-
id·string· required · min length 1 · examplexfr_exampleTransfer identifier (SDP record ID, not the on-chain signature).
-
organizationId·string· required · min length 1 · exampleorg_exampleOrganization identifier.
-
custodyWalletId·string | null· required · examplecwlt_exampleExact SDP Wallet ID associated with the persisted transfer, or null for unresolved legacy and observed rows.
-
providerWalletId·string· required · min length 1 · exampleprivy_wallet_123Provider wallet ID retained as evidence; not an execution selector.
-
projectId·string· min length 1 · exampleprj_exampleProject identifier for the transfer.
-
type·string· required · exampletransferTransfer type.
-
kind·string· requiredDashboard transaction kind derived from the transfer type and originating Payments resource.
-
direction·string· required · one ofinbound,outbound· exampleoutboundTransfer direction.
-
status·string· required · exampleconfirmedTransfer status.
-
signature·string | null· required · examplesig_exampleSolana transaction signature (tx id/hash).
-
serializedTx·string | null· required · min length 1 · examplebase64_tx_exampleBase64-encoded transaction payload, if available. Always null for transfer batch chunks, whose signed bytes stay server-side.
-
slot·integer | null· required · example123456Slot number, if confirmed.
-
blockTime·string | null· required · formatdate-time· example2025-01-01T00:00:00.000ZBlock time, if confirmed.
-
confirmedAt·string· formatdate-time· example2025-01-01T00:00:00.000ZWhen SDP confirmed the transfer on chain.
-
fee·integer | null· required · example0Network fee the source wallet paid, in lamports: 0 when SDP sponsored the transaction, null when not known.
-
error·string | null· required · exampleSignature failedError message if the transaction failed.
-
initiatedBy·objectInitiator that triggered the transfer.
-
type·string· required · one ofapi_key,user,system· exampleapi_keyInitiator type.
-
id·stringInitiator identifier if applicable.
-
display·stringHuman-friendly label for the initiator.
-
-
source·string· min length 32 · max length 44 · exampleSo11111111111111111111111111111111111111112Source wallet address.
-
destination·string· min length 32 · max length 44 · exampleSo11111111111111111111111111111111111111112Destination wallet address.
-
memo·string· max length 256Optional memo for the transfer.
-
token·stringToken symbol or mint address.
-
amount·string· example100.00Token amount in UI units (decimal string).
-
counterpartyId·string· examplecpty_exampleCounterparty tied to the transfer record, when available.
-
counterpartyDisplayName·string· exampleAcme StudioCurrent display name of the counterparty tied to the transfer.
-
risk·objectOptional risk evaluation for the transfer.
-
provider·string· required · exampletrmRisk scoring provider.
-
score·string· required · example0.12Provider-specific risk score.
-
level·string· required · one oflow,medium,high,unknown· examplelowRisk level classification.
-
evaluatedAt·string· required · formatdate-time· example2025-01-01T00:00:00.000ZTimestamp when risk was evaluated.
-
-
createdAt·string· required · formatdate-time· example2025-01-01T00:00:00.000ZCreation timestamp.
-
updatedAt·string· required · formatdate-time· example2025-01-02T00:00:00.000ZLast update timestamp.
-
-
meta·object· requiredPagination metadata.
-
total·integer· required · min 0Total items.
-
page·integer· required · greater than 0Current page number.
-
pageSize·integer· required · greater than 0Items per page.
-
hasMore·boolean· requiredWhether more pages exist.
-
requestId·string· required · min length 1 · examplereq_exampleRequest identifier for tracing.
-
-
-
400Bad Request-
error·object· requiredStandard error payload.
-
code·string· requiredMachine-readable error code.
-
message·string· requiredHuman-readable error message.
-
details·objectOptional error details for debugging.
*·any
-
-
meta·object-
requestId·string· min length 1 · examplereq_exampleRequest identifier for tracing.
-
-
-
401UnauthorizedSame fields as
400. -
403Forbidden. Requires thetransfers.readaction: an API key must hold it (a module'smanageorexecutealso covers itsread), and a signed-in member's organization role must include it. Without it the error is INSUFFICIENT_PERMISSIONS anderror.details.actionnames the action. Any other 403 names its own reason.Same fields as
400. -
404Not FoundSame fields as
400. -
409ConflictSame fields as
400. -
500Internal Server ErrorSame fields as
400. -
503Service UnavailableSame fields as
400.