latestOpenAPI 3.0.32026-08-20146131.7 MB

672b1916ba61

Payments

Create recurring payment

Creates an SDP-custody outbound recurring payment intent from a custody wallet to a counterparty crypto-wallet account. This stores backend state only; activation and collection are added by follow-up endpoints.

post/v1/payments/recurring-payments

Headers

x-project-idstring

Selects the active project for this request. Required for session/dashboard callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.

Example:prj_example

Selects the active project for this request. Required for session/dashboard callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.

Request body

sourceWalletIdstring required

SDP custody wallet that will fund the recurring payment — the walletId field returned by GET /v1/wallets. The wallet record id and the public key are not accepted.

counterpartyIdstring required

Counterparty receiving the recurring payment.

counterpartyAccountIdstring required

Counterparty crypto_wallet account. It must contain Solana wallet details.

tokenstring required

Token mint address or well-known symbol. Must be a USD stablecoin (e.g. USDC) or a token issued in this project; native SOL is not supported.

amountstring required

Recurring payment amount in UI units.

periodHoursinteger required

Billing period length in hours.

firstCollectionAtstring date-time

Optional first collection timestamp. Defaults to activation time when omitted.

metadataUristring uri

Optional plan metadata URI.

Example request

{
  "sourceWalletId": "privy_wallet_123",
  "counterpartyId": "cp_example",
  "counterpartyAccountId": "cpa_example",
  "token": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "amount": "25.00",
  "periodHours": 720,
  "firstCollectionAt": "2099-01-01T00:00:00.000Z",
  "metadataUri": "https://example.com/subscriptions/monthly-usdc.json"
}

Response

Recurring payment created

Example response

{
  "data": {
    "recurringPayment": {
      "id": "prp_example",
      "organizationId": "org_example",
      "projectId": "prj_example",
      "sourceWalletId": "privy_wallet_123",
      "sourceAddress": "So11111111111111111111111111111111111111112",
      "counterpartyId": "cp_example",
      "counterpartyAccountId": "cpa_example",
      "destinationAddress": "So11111111111111111111111111111111111111112",
      "destinationTokenAccount": "So11111111111111111111111111111111111111112",
      "amount": "100.00",
      "periodHours": 720,
      "firstCollectionAt": "2025-01-01T00:00:00.000Z",
      "nextCollectionDueAt": "2025-01-01T00:00:00.000Z",
      "planPda": "So11111111111111111111111111111111111111112",
      "subscriptionPda": "So11111111111111111111111111111111111111112",
      "subscriptionAuthorityAddress": "So11111111111111111111111111111111111111112",
      "status": "active",
      "createdAt": "2025-01-01T00:00:00.000Z",
      "updatedAt": "2025-01-01T00:00:00.000Z"
    }
  },
  "meta": {
    "requestId": "req_example",
    "timestamp": "2025-01-01T00:00:00.000Z"
  }
}