Internal Accounts
Strong Customer Authentication
Move a rule-based account's stranded funds
Changed onMove funds a sweep converted but could not deliver (listed in the account's strandedBalances) to the account holder's own internal account in the same currency.
The transfer is returned as a quote in PENDING_AUTHORIZATION carrying an scaChallenge. Authorize it with POST /quotes/{quoteId}/authorize, as for any other quote. Once it completes, the currency drops out of strandedBalances and an INTERNAL_ACCOUNT.BALANCE_UPDATED webhook is sent.
Stranded funds only arise for customers in a region where SCA is required (the EU). For other accounts, or when nothing is stranded in that currency, this returns 409.
post/internal-accounts/{id}/stranded-funds/transfer
Request
- Base URLhttps://api.lightspark.com/grid/2025-10-13
- URLhttps://api.lightspark.com/grid/2025-10-13/internal-accounts/{id}/stranded-funds/transfer
- AuthHTTP basic
Request body
Example request
{
"currency": "USDC",
"scaFactor": "SMS_OTP"
}Response
The transfer's quote, awaiting authorization.
Example response
{
"id": "Quote:019542f5-b3e7-1d02-0000-000000000006",
"status": "PENDING",
"createdAt": "2025-10-03T12:00:00Z",
"expiresAt": "2025-10-03T12:05:00Z",
"source": {
"sourceType": "ACCOUNT",
"accountId": "InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965",
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001"
},
"destination": {
"destinationType": "ACCOUNT",
"accountId": "ExternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123",
"paymentRail": "ACH"
},
"sendingCurrency": {
"code": "USD",
"name": "United States Dollar",
"symbol": "$",
"decimals": 2
},
"receivingCurrency": {
"code": "USD",
"name": "United States Dollar",
"symbol": "$",
"decimals": 2
},
"totalSendingAmount": 123010,
"totalReceivingAmount": 1000,
"feesIncluded": 10,
"platformFeesIncluded": 5,
"paymentInstructions": [
{
"accountOrWalletInfo": {
"accountType": "USD_ACCOUNT",
"paymentRails": [
"ACH",
"WIRE"
],
"accountNumber": "1234567890",
"routingNumber": "021000021",
"bankName": "Chase Bank",
"reference": "UMA-Q12345-REF"
},
"instructionsNotes": "Include reference UMA-Q12345-REF in memo"
},
{
"accountOrWalletInfo": {
"accountType": "SPARK_WALLET",
"assetType": "BTC",
"address": "spark1pgssyuuuhnrrdjswal5c3s3rafw9w3y5dd4cjy3duxlf7hjzkp0rqx6dj6mrhu",
"invoice": "lnbc15u1p3xnhl2pp5jptserfk3zk4qy42tlucycrfwxhydvlemu9pqr93tuzlv9cc7g3sdqsvfhkcap3xyhx7un8cqzpgxqzjcsp5f8c52y2stc300gl6s4xswtjpc37hrnnr3c9wvtgjfuvqmpm35evq9qyyssqy4lgd8tj637qcjp05rdpxxykjenthxftej7a2zzmwrmrl70fyj9hvj0rewhzj7jfyuwkwcg9g2jpwtk3wkjtwnkdks84hsnu8xps5vsq4gj5hs"
}
}
],
"transactionId": "Transaction:019542f5-b3e7-1d02-0000-000000000005",
"counterpartyInformation": {
"FULL_NAME": "John Sender",
"BIRTH_DATE": "1985-06-15",
"NATIONALITY": "DE"
},
"rateDetails": {
"counterpartyMultiplier": 1.08,
"counterpartyFixedFee": 10,
"gridApiMultiplier": 0.925,
"gridApiFixedFee": 10,
"gridApiVariableFeeRate": 0.003,
"gridApiVariableFeeAmount": 30
},
"documentIds": [
"PaymentDocument:019542f5-b3e7-1d02-0000-000000000001",
"PaymentDocument:019542f5-b3e7-1d02-0000-000000000002",
"PaymentDocument:019542f5-b3e7-1d02-0000-000000000003"
],
"scaChallenge": {
"id": "ScaChallenge:019542f5-b3e7-1d02-0000-000000000007",
"expiresAt": "2025-10-03T12:05:00Z",
"availableFactors": [
"SMS_OTP"
],
"purpose": "PAYOUT",
"passkeyAllowedOrigins": [
"https://app.example.com"
]
}
}Changes
- info
endpoint added
- info