Basic payment

Send a single token transfer with SDP.

SDP handles token transfers through its payments API. A basic payment moves tokens from a custody wallet you control to any Solana wallet address.

The sourceCustodyWalletId field is the exact SDP Wallet id (cwlt_…, from GET /v1/wallets), resolved server-side from the caller's custody-wallet list; destination is the recipient's on-chain wallet (owner) address — for SPL transfers, SDP derives the associated token account (ATA) from this address and creates it if needed, so pass the wallet pubkey, not a token-account address.

Transfers are available through the Payments dashboard and the API.

Prerequisites

  • A deployed token with minted supply
  • A custody wallet to use as sourceCustodyWalletId, with a custody signer configured so SDP can sign and submit.
  • An API key with both payments:write and wallets:read permissions, where the key's payments:write scope includes the source wallet — POST /v1/payments/transfers is gated by that pair at the route layer, and the source wallet is then re-checked against the key's payments:write wallet scope.

How it works

Set up the transfer

Specify the source, destination, token, and amount.

Go to Payments in the sidebar. The overview shows your total SDP balance, recent transactions, and Send / Receive actions.

Payments overview showing balance, Send and Receive buttons, and recent transactions

Click Send and select Wallet transfer to send from an SDP wallet to a Solana address.

Send page showing Wallet transfer and Off-ramp options

On the Enter transfer details form, select a source wallet from the dropdown.

Transfer details form with source wallet dropdown open

Fill in:

  • Source — a wallet you control in SDP
  • Amount — human-readable units (e.g., 0.5)
  • Asset — select from your deployed tokens
  • Destination address — any valid Solana wallet address
  • Memo — optional note recorded onchain

Transfer details form with all fields filled in

Execute the transfer

Submit the transfer. SDP signs with the source custody wallet and submits the transaction.

Click Review to see the transfer summary, then Confirm to submit.

The transfer status updates to Confirmed once the transaction is finalized.

Verify the transfer

Confirm the transfer completed and balances updated.

The transfer appears in Payments history with a confirmed status and an onchain transaction signature.

Payments overview showing confirmed inbound transaction

Click the record to see full details including the Solana Explorer link.

Deduplication

Send one stable Idempotency-Key per logical payment and reuse it for network retries. An identical request for the same exact sourceCustodyWalletId returns the original transfer; reusing the key with a different payload or wallet returns 409. A request without a key creates a new transfer intent.

Persist the returned Transfer.id as your local primary key. Once populated, the on-chain signature is also unique across SDP transfers and can deduplicate records across SDP and another chain indexer.

See Payouts and disbursements for the same pattern applied to batched outbound flows.

Is this page helpful?