List recurring payments
Lists SDP-custody outbound recurring payments for the authenticated organization or project scope.
GET/Run in dashboard
Requires an API key with the recurring.read action.
Query parameters
-
counterpartyId·string· min length 1 · examplecpty_exampleFilter recurring payments by counterparty.
-
status·string· one ofpending_activation,activating,active,updating,canceling,resuming,paused,canceled,expired· exampleactiveRecurring payment status.
-
page·integer· greater than 0 · default1 -
pageSize·integer· min 1 · max 100 · default20
Headers
-
x-project-id·string· min length 1 · exampleprj_exampleRequired for dashboard sessions. API keys use their assigned project.
Responses
-
200Recurring payment list-
data·object· requiredRecurring payment list response payload.
-
recurringPayments·object[]· required-
id·string· required · exampleprp_exampleSDP recurring payment ID.
-
organizationId·string· required · min length 1 · exampleorg_exampleOrganization identifier.
-
projectId·string· required · min length 1 · exampleprj_exampleProject identifier.
-
sourceCustodyWalletId·string | null· required · examplecwlt_exampleExact source SDP Wallet ID, or null for unresolved legacy records.
-
sourceProviderWalletId·string· required · min length 1 · exampleprivy_wallet_123Source Provider wallet ID retained as evidence.
-
sourceAddress·string· required · min length 32 · max length 44 · exampleSo11111111111111111111111111111111111111112Source wallet address.
-
counterpartyId·string· required · examplecpty_exampleCounterparty ID.
-
counterpartyAccountId·string· required · examplecpacct_exampleCounterparty account ID.
-
destinationAddress·string· required · min length 32 · max length 44 · exampleSo11111111111111111111111111111111111111112Counterparty wallet owner address.
-
destinationTokenAccount·string | null· required · min length 32 · max length 44 · exampleSo11111111111111111111111111111111111111112Derived counterparty token account used for collection.
-
token·string· requiredSPL token mint address.
-
amount·string· required · example100.00Token amount in UI units (decimal string).
-
periodHours·integer· required · greater than 0 · example720 -
firstCollectionAt·string | null· required · formatdate-time· example2025-01-01T00:00:00.000ZRequested first collection timestamp.
-
nextCollectionDueAt·string | null· required · formatdate-time· example2025-01-01T00:00:00.000ZNext due collection timestamp.
-
planId·string | null· requiredLinked SDP subscription plan ID.
-
subscriptionId·string | null· requiredLinked SDP subscription ID.
-
planPda·string | null· required · min length 32 · max length 44 · exampleSo11111111111111111111111111111111111111112On-chain plan PDA.
-
planCreatedAt·string | null· requiredOn-chain plan createdAt value as an unsigned integer string.
-
planCreationSignature·string | null· requiredSolana signature for plan creation.
-
subscriptionPda·string | null· required · min length 32 · max length 44 · exampleSo11111111111111111111111111111111111111112On-chain subscription PDA.
-
subscriptionAuthorityAddress·string | null· required · min length 32 · max length 44 · exampleSo11111111111111111111111111111111111111112On-chain subscription authority address.
-
authorizationSignature·string | null· requiredSolana signature for subscription authorization.
-
status·string· required · one ofpending_activation,activating,active,updating,canceling,resuming,paused,canceled,expired· exampleactiveRecurring payment status.
-
pausedReason·string | null· required · one ofcustody_policy_refused,failed_attempts· examplenullWhy SDP paused the recurring payment, set exactly while
statusispaused:custody_policy_refusedwhen the custody provider's policy refused to sign a collection,failed_attemptswhen one due period failed 5 times. Resume clears it. -
metadataUri·string | null· requiredOptional plan metadata URI.
-
createdBy·string | null· requiredCreator user ID or API key ID.
-
createdAt·string· required · formatdate-time· example2025-01-01T00:00:00.000ZISO 8601 timestamp.
-
updatedAt·string· required · formatdate-time· example2025-01-01T00:00:00.000ZISO 8601 timestamp.
-
-
total·integer· required -
page·integer· required -
pageSize·integer· required
-
-
meta·object· requiredResponse metadata.
-
requestId·string· required · min length 1 · examplereq_exampleRequest identifier for tracing.
-
timestamp·string· required · formatdate-time· example2025-01-01T00:00:00.000ZISO 8601 timestamp.
-
-
-
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 therecurring.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. -
500Internal Server ErrorSame fields as
400.
Example request
curl 'https://api.solana.com/v1/payments/recurring-payments' \
-H "Authorization: Bearer $SDP_API_KEY"Example responses
{
"data": {
"recurringPayments": [
{
"id": "prp_example",
"organizationId": "org_example",
"projectId": "prj_example",
"sourceCustodyWalletId": "cwlt_example",
"sourceProviderWalletId": "privy_wallet_123",
"sourceAddress": "So11111111111111111111111111111111111111112",
"counterpartyId": "cpty_example",
"counterpartyAccountId": "cpacct_example",
"destinationAddress": "So11111111111111111111111111111111111111112",
"destinationTokenAccount": "So11111111111111111111111111111111111111112",
"token": "example",
"amount": "100.00",
"periodHours": 720,
"firstCollectionAt": "2025-01-01T00:00:00.000Z",
"nextCollectionDueAt": "2025-01-01T00:00:00.000Z",
"planId": "plan_example",
"subscriptionId": "subscription_example",
"planPda": "So11111111111111111111111111111111111111112",
"planCreatedAt": "example",
"planCreationSignature": "example",
"subscriptionPda": "So11111111111111111111111111111111111111112",
"subscriptionAuthorityAddress": "So11111111111111111111111111111111111111112",
"authorizationSignature": "example",
"status": "active",
"pausedReason": null,
"metadataUri": "example",
"createdBy": "example",
"createdAt": "2025-01-01T00:00:00.000Z",
"updatedAt": "2025-01-01T00:00:00.000Z"
}
],
"total": 1,
"page": 1,
"pageSize": 1
},
"meta": {
"requestId": "req_example",
"timestamp": "2025-01-01T00:00:00.000Z"
}
}Error responses use the standard error shape.