External accounts are bank accounts, cryptocurrency wallets, or payment destinations outside Grid where you can send funds. Grid supports two types:
Customer external accounts - Scoped to individual customers, used for withdrawals and customer-specific payouts
Platform external accounts - Scoped to your platform, used for platform-wide operations like receiving funds from external sources
Customer external accounts often require some basic beneficiary information for compliance.
Platform accounts are managed at the organization level.
Create external accounts by region or wallet
United States
Mexico
Brazil
Europe
India
Cryptocurrency
ACH, Wire, RTP curl -X POST 'https://api.lightspark.com/grid/2025-10-13/customers/external-accounts' \
-H 'Authorization: Basic $GRID_CLIENT_ID:$GRID_CLIENT_SECRET' \
-H 'Content-Type: application/json' \
-d '{
"currency": "USD",
"platformAccountId": "user_123_primary_bank",
"accountInfo": {
"accountType": "US_ACCOUNT",
"accountNumber": "123456789",
"routingNumber": "021000021",
"accountCategory": "CHECKING",
"bankName": "Chase Bank",
"beneficiary": {
"beneficiaryType": "INDIVIDUAL",
"fullName": "John Doe",
"birthDate": "1990-01-15",
"nationality": "US",
"address": {
"line1": "123 Main Street",
"city": "San Francisco",
"state": "CA",
"postalCode": "94105",
"country": "US"
}
}
}
}'
Category must be CHECKING
or SAVINGS
. Routing number must be 9 digits.
Use platformAccountId
to tie your internal id with the external account.
Sample Response:
{
"id" : "ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965" ,
"customerId" : "Customer:019542f5-b3e7-1d02-0000-000000000001" ,
"status" : "ACTIVE" ,
"currency" : "USD" ,
"platformAccountId" : "user_123_primary_bank" ,
"accountInfo" : {
"accountType" : "US_ACCOUNT" ,
"accountNumber" : "123456789" ,
"routingNumber" : "021000021" ,
"accountCategory" : "CHECKING" ,
"bankName" : "Chase Bank" ,
"beneficiary" : {
"beneficiaryType" : "INDIVIDUAL" ,
"fullName" : "John Doe" ,
"birthDate" : "1990-01-15" ,
"nationality" : "US" ,
"address" : {
"line1" : "123 Main Street" ,
"city" : "San Francisco" ,
"state" : "CA" ,
"postalCode" : "94105" ,
"country" : "US"
}
}
}
}
Business beneficiaries
For business accounts, include business information:
{
"currency" : "USD" ,
"platformAccountId" : "acme_corp_account" ,
"customerId" : "Customer:019542f5-b3e7-1d02-0000-000000000001" ,
"accountInfo" : {
"accountType" : "US_ACCOUNT" ,
"accountNumber" : "987654321" ,
"routingNumber" : "021000021" ,
"accountCategory" : "CHECKING" ,
"bankName" : "Chase Bank" ,
"beneficiary" : {
"beneficiaryType" : "BUSINESS" ,
"businessInfo" : {
"legalName" : "Acme Corporation, Inc." ,
"taxId" : "EIN-987654321"
},
"address" : {
"line1" : "456 Business Ave" ,
"city" : "New York" ,
"state" : "NY" ,
"postalCode" : "10001" ,
"country" : "US"
}
}
}
}
Account status
Beneficiary data may be reviewed for risk and compliance. Only ACTIVE
accounts can receive payments. Updates to account data may trigger account re-review.
Status Description PENDING
Created, awaiting verification ACTIVE
Verified and ready for transactions UNDER_REVIEW
Additional review required INACTIVE
Disabled, cannot be used
Listing external accounts
List customer accounts
curl -X GET 'https://api.lightspark.com/grid/2025-10-13/customers/external-accounts?customerId=Customer:019542f5-b3e7-1d02-0000-000000000001' \
-H 'Authorization: Basic $GRID_CLIENT_ID:$GRID_CLIENT_SECRET'
For platform-wide operations, list all platform-level external accounts:
curl -X GET 'https://api.lightspark.com/grid/2025-10-13/platform/external-accounts' \
-H 'Authorization: Basic $GRID_CLIENT_ID:$GRID_CLIENT_SECRET'
Platform external accounts are used for platform-wide operations like
depositing funds from external sources.
Best practices
Validate account information
Verify status before sending payments: if ( account . status !== "ACTIVE" ) {
throw new Error ( `Account is ${ account . status } , cannot process payment` );
}
Never expose full account numbers. Display only masked info: function displaySafely ( account ) {
return {
id: account . id ,
bankName: account . accountInfo . bankName ,
lastFour: account . accountInfo . accountNumber . slice ( - 4 ),
status: account . status ,
};
}
Next steps