Simulate funding an internal account
Changed onSimulate receiving funds into an internal account in the sandbox environment. This is useful for testing scenarios where you need to add funds to a customer's or platform's internal account without going through a real bank transfer or following payment instructions. This endpoint is only for the sandbox environment and will fail for production platforms/keys.
Funding a rule-based account
Funding a RULE_BASED account triggers its sweep, exactly as a settled deposit does in production: the balance is swept to the rule's destination and the account is left at zero. A balance outside the corridor band moves to the account holder's own account in the same currency instead, and the transaction fails with failureReason: SWEEP_AMOUNT_OUT_OF_RANGE — fund a rule-based account with a very small amount to rehearse that path. Either way the rule-based account is left at zero; it never holds a balance. The sweep's transaction reports a placeholder ACH depositor as its REALTIME_FUNDING source and the funded account as its ruleBasedAccountId, matching what a production deposit reports. To simulate the information a depositor attaches to a payment, pass remittanceInformation. It appears on the swept transaction's source (see remittanceInformation in the request body for which field). description cannot be set when funding a rule-based account: the swept transaction's description comes from the account's sweep rule, exactly as it does for a production deposit. Sending it returns 400 INVALID_INPUT.
Funding other account types
description sets the memo on the incoming transaction for the credit. With remittanceInformation set, the credit is reported as a REALTIME_FUNDING ACH deposit from a placeholder sandbox depositor, matching what a production bank deposit reports. The request is validated before any funds are credited, so a request rejected with 400 leaves the balance unchanged. Sandbox simulates the API contract and the routing decision, not the banking rails. The quote, the corridor bounds, the destination checks and the webhook are all real; the settlement legs behind them are not, so timings and failure modes that originate at a partner bank cannot be reproduced here.
Request
- Base URLhttps://api.lightspark.com/grid/2025-10-13
- URLhttps://api.lightspark.com/grid/2025-10-13/sandbox/internal-accounts/{accountId}/fund
- AuthHTTP basic
Path parameters
The ID of the internal account to fund
Request body
Example request
{
"amount": 100000,
"remittanceInformation": "INV-2026-0042",
"description": "Test deposit for invoice reconciliation"
}Response
Internal account funded successfully
Example response
{
"id": "InternalAccount:12dcbd6-dced-4ec4-b756-3c3a9ea3d123",
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
"status": "ACTIVE",
"balance": {
"amount": 12550,
"currency": {
"code": "USD",
"name": "United States Dollar",
"symbol": "$",
"decimals": 2
}
},
"totalBalance": {
"amount": 12550,
"currency": {
"code": "USD",
"name": "United States Dollar",
"symbol": "$",
"decimals": 2
}
},
"fundingPaymentInstructions": [
{
"instructionsNotes": "Please ensure the reference code is included in the payment memo/description field",
"isPlatformAccount": true,
"accountOrWalletInfo": {
"accountType": "USD_ACCOUNT",
"accountNumber": "1234567890",
"routingNumber": "021000021",
"bankName": "Chase Bank",
"intermediaryBankName": "JPMorgan Chase Bank",
"intermediaryRoutingNumber": "021000021",
"fiToFiInformation": "/BNF/Invoice 4471",
"bankAccountType": "CHECKING"
}
}
],
"onBehalfOfCustomerId": "Customer:019542f5-b3e7-1d02-0000-000000000002",
"label": "invoice-4417",
"sweepRule": {
"destination": {
"accountId": "ExternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123",
"paymentRail": "ACH"
},
"minimumAmount": {
"amount": 12550,
"currency": {
"code": "USD",
"name": "United States Dollar",
"symbol": "$",
"decimals": 2
}
},
"maximumAmount": {
"amount": 12550,
"currency": {
"code": "USD",
"name": "United States Dollar",
"symbol": "$",
"decimals": 2
}
},
"description": "Rent sweep",
"remittanceInformation": "Unit 4B March",
"platformFeeOverride": {
"platformFixedFee": {
"amount": 50,
"currency": "USD"
},
"platformVariableFeeBps": 30
}
},
"privateEnabled": true,
"cardCapabilities": {
"supportsVelocityLimits": true,
"supportsPanReveal": true,
"supportsDigitalWalletTokenization": true
},
"createdAt": "2025-10-03T12:30:00Z",
"updatedAt": "2025-10-03T12:30:00Z"
}Changes
- info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status - info
added the optional property
/to the response with the status
- info
- warning
added the new
CORRIDOR_UNDER_MAINTENANCEenum value to theresponse property for the response status
- warning