Skip to main content
POST
/
plaid
/
callback
/
{plaid_link_token}
Submit Plaid public token
curl --request POST \
  --url https://api.lightspark.com/grid/2025-10-13/plaid/callback/{plaid_link_token} \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "publicToken": "public-sandbox-12345678-1234-1234-1234-123456789012",
  "accountId": "plaid_account_id_123"
}
'
{
  "id": "ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965",
  "status": "ACTIVE",
  "currency": "USD",
  "accountInfo": {
    "accountType": "US_ACCOUNT",
    "accountNumber": "123456789",
    "routingNumber": "987654321",
    "accountCategory": "CHECKING",
    "beneficiary": {
      "beneficiaryType": "INDIVIDUAL",
      "fullName": "John Michael Doe",
      "birthDate": "1990-01-15",
      "nationality": "US",
      "address": {
        "line1": "123 Main Street",
        "postalCode": "94105",
        "country": "US",
        "line2": "Apt 4B",
        "city": "San Francisco",
        "state": "CA"
      }
    },
    "bankName": "Chase Bank"
  },
  "customerId": "Customer:da459a29-1fb7-41ce-a4cb-eb3a3c9fd7a7",
  "platformAccountId": "acc_123456789",
  "defaultUmaDepositAccount": false
}

Authorizations

Authorization
string
header
required

API token authentication using format <api token id>:<api client secret>

Path Parameters

The Plaid link token from the link token response, used to identify the session

Body

application/json
publicToken
string
required

The public token returned by Plaid Link after the customer successfully authenticates and selects an account.

Example:

"public-sandbox-12345678-1234-1234-1234-123456789012"

accountId
string

Optional Plaid account ID if the customer selected a specific account. If not provided, the default account will be used.

Example:

"plaid_account_id_123"

Response

A pending external account resource will be created and returned while the Grid API asynchronously processes the Plaid public token.

id
string
required

The system generated identifier of this account

Example:

"ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965"

status
enum<string>
required

Status of the external account

Available options:
PENDING,
ACTIVE,
UNDER_REVIEW,
INACTIVE
Example:

"ACTIVE"

currency
string
required

The ISO 4217 currency code

Example:

"USD"

accountInfo
US Account · object
required
customerId
string

The customer this account is tied to, or null if the account is on behalf of the platform.

Example:

"Customer:da459a29-1fb7-41ce-a4cb-eb3a3c9fd7a7"

platformAccountId
string

Optional platform-specific identifier for this account

Example:

"acc_123456789"

defaultUmaDepositAccount
boolean

Whether this account is the default UMA deposit account for the customer. If true, incoming UMA payments to this customer's UMA address will be automatically deposited into this account instead of the primary internal account. False if not provided. Note that at most, one external account can be set as the default UMA deposit account for a customer. If there is no default UMA deposit account, incoming UMA payments will be deposited into the primary internal account for the customer.

Example:

false