latestOpenAPI 3.0.32026-08-20146131.7 MB

672b1916ba61

Payments

Collect recurring payment

Manually collects a due active SDP-custody recurring payment by submitting the Solana subscriptions collection transaction, creating a linked payment transfer, recording the collection attempt, and advancing the next due time.

post/v1/payments/recurring-payments/{id}/collect

Path parameters

idstring required

SDP recurring payment record ID.

Example:prp_example

SDP recurring payment record ID.

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.

Response

Recurring payment collected

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"
    },
    "collectionAttempt": {
      "id": "psca_example",
      "organizationId": "org_example",
      "projectId": "prj_example",
      "transferId": "xfr_example",
      "amount": "100.00",
      "dueAt": "2025-01-01T00:00:00.000Z",
      "attemptedAt": "2025-01-01T00:00:00.000Z",
      "status": "pending",
      "createdAt": "2025-01-01T00:00:00.000Z",
      "updatedAt": "2025-01-01T00:00:00.000Z"
    },
    "transfer": {
      "id": "xfr_example",
      "organizationId": "org_example",
      "walletId": "privy_wallet_123",
      "projectId": "prj_example",
      "type": "transfer",
      "direction": "outbound",
      "status": "confirmed",
      "signature": "sig_example",
      "serializedTx": "base64_tx_example",
      "slot": 123456,
      "blockTime": "2025-01-01T00:00:00.000Z",
      "fee": 5000,
      "error": "Signature failed",
      "initiatedBy": {
        "type": "api_key"
      },
      "source": "So11111111111111111111111111111111111111112",
      "destination": "So11111111111111111111111111111111111111112",
      "rampsMemo": {
        "invoice": "INV-123",
        "po": "PO-9"
      },
      "amount": "100.00",
      "provider": "moonpay",
      "counterpartyId": "counterparty_example",
      "counterpartyDisplayName": "Acme Studio",
      "providerReference": "ramp_quote_example",
      "deliveryMode": "session_widget",
      "fiatCurrency": "USD",
      "fiatAmount": "100.00",
      "risk": {
        "provider": "trm",
        "score": "0.12",
        "level": "low",
        "evaluatedAt": "2025-01-01T00:00:00.000Z"
      },
      "moneygram": {
        "transactionId": "mgi_tx_example",
        "referenceNumber": "12345678",
        "payoutAmount": 25,
        "payoutStatus": "completed",
        "cryptoTransferId": "xfr_moneygram_crypto_leg_example",
        "solanaTxSignature": "sig_moneygram_usdc_transfer_example",
        "lastWidgetError": "Transaction cancelled by user"
      },
      "createdAt": "2025-01-01T00:00:00.000Z",
      "updatedAt": "2025-01-02T00:00:00.000Z"
    }
  },
  "meta": {
    "requestId": "req_example",
    "timestamp": "2025-01-01T00:00:00.000Z"
  }
}