Collect recurring payment
Manually starts a due active SDP-custody recurring payment collection, creating a linked payment transfer and collection attempt. If submission cannot be confirmed immediately, a 200 response returns the same transfer as processing with its known signature; reconciliation settles it, and the next due time advances only after exact on-chain confirmation.
Path parameters
SDP recurring payment record ID.
SDP recurring payment record ID.
Headers
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.
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 collection result
Example response
{
"data": {
"recurringPayment": {
"id": "prp_example",
"organizationId": "org_example",
"projectId": "prj_example",
"sourceWalletId": "privy_wallet_123",
"sourceAddress": "So11111111111111111111111111111111111111112",
"counterpartyId": "cpty_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",
"custodyWalletId": "cwlt_example",
"providerWalletId": "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": "cpty_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"
}
}Changes
Changed in 2 of the 11 revisions of this API.162
- ▲
removed the required property
//from the response with the statusresponse-required-property-removed
- ○
added the required property
//to the response with the statusresponse-required-property-added
- ○
added the required property
//to the response with the statusresponse-required-property-added
- ▲
- ●
added the new
SERVICE_UNAVAILABLEenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
SERVICE_UNAVAILABLEenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
SERVICE_UNAVAILABLEenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
SERVICE_UNAVAILABLEenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
SERVICE_UNAVAILABLEenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
SERVICE_UNAVAILABLEenum value to the/response property for the response statusresponse-property-enum-value-added
- ●