Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion mintlify/platform-overview/core-concepts/account-model.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ PENDING → ACTIVE
- **INACTIVE**: Disabled (can be reactivated)
- **REJECTED**: Failed verification

You'll receive `ACCOUNT_STATUS` webhooks as status changes.
You'll receive `INTERNAL_ACCOUNT.BALANCE_UPDATED` webhooks as balance changes, and `INTERNAL_ACCOUNT.STATUS_UPDATED` webhooks when account status changes (e.g., ACTIVE to FROZEN).

### Using External Accounts

Expand Down
28 changes: 16 additions & 12 deletions mintlify/ramps/accounts/internal-accounts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -136,22 +136,26 @@ Internal accounts support both fiat and crypto balances:

## Monitoring account balance changes

Subscribe to `ACCOUNT_STATUS` webhooks to receive real-time balance updates:
Subscribe to `INTERNAL_ACCOUNT.BALANCE_UPDATED` webhooks to receive real-time balance updates:

```json
{
"accountId": "InternalAccount:btc456",
"oldBalance": {
"amount": 5000000,
"currency": { "code": "BTC", "decimals": 8 }
},
"newBalance": {
"amount": 10000000,
"currency": { "code": "BTC", "decimals": 8 }
},
"id": "Webhook:019542f5-b3e7-1d02-0000-000000000007",
"type": "INTERNAL_ACCOUNT.BALANCE_UPDATED",
"timestamp": "2025-10-03T14:32:00Z",
"webhookId": "Webhook:webhook001",
"type": "ACCOUNT_STATUS"
"data": {
"id": "InternalAccount:btc456",
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
"type": "INTERNAL_CRYPTO",
"status": "ACTIVE",
"balance": {
"amount": 10000000,
"currency": { "code": "BTC", "name": "Bitcoin", "symbol": "₿", "decimals": 8 }
},
"fundingPaymentInstructions": [],
"createdAt": "2025-08-01T10:00:00Z",
"updatedAt": "2025-10-03T14:32:00Z"
}
}
```

Expand Down
2 changes: 1 addition & 1 deletion mintlify/ramps/platform-tools/sandbox-testing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ curl -X POST 'https://api.lightspark.com/grid/2025-10-13/sandbox/internal-accoun
Replace `InternalAccount:btc001` with your actual BTC internal account ID.

<Check>
You'll receive an `ACCOUNT_STATUS` webhook showing the updated balance.
You'll receive an `INTERNAL_ACCOUNT.BALANCE_UPDATED` webhook showing the updated balance.
</Check>

### Step 2: Create external bank account
Expand Down
62 changes: 48 additions & 14 deletions mintlify/ramps/platform-tools/webhooks.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -47,23 +47,27 @@ Grid sends webhooks for key events in the ramp lifecycle:
</Check>
</Tab>

<Tab title="ACCOUNT_STATUS">
<Tab title="INTERNAL_ACCOUNT.BALANCE_UPDATED">
Sent when internal account balances change (deposits, conversions, withdrawals).

```json
{
"accountId": "InternalAccount:btc456",
"oldBalance": {
"amount": 10000000,
"currency": { "code": "BTC", "decimals": 8 }
},
"newBalance": {
"amount": 5000000,
"currency": { "code": "BTC", "decimals": 8 }
},
"id": "Webhook:019542f5-b3e7-1d02-0000-000000000007",
"type": "INTERNAL_ACCOUNT.BALANCE_UPDATED",
"timestamp": "2025-10-03T15:03:00Z",
"webhookId": "Webhook:webhook001",
"type": "ACCOUNT_STATUS"
"data": {
"id": "InternalAccount:btc456",
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
"type": "INTERNAL_CRYPTO",
"status": "ACTIVE",
"balance": {
"amount": 5000000,
"currency": { "code": "BTC", "name": "Bitcoin", "symbol": "₿", "decimals": 8 }
},
"fundingPaymentInstructions": [],
"createdAt": "2025-08-01T10:00:00Z",
"updatedAt": "2025-10-03T15:03:00Z"
}
}
```

Expand All @@ -72,6 +76,35 @@ Grid sends webhooks for key events in the ramp lifecycle:
</Info>
</Tab>

<Tab title="INTERNAL_ACCOUNT.STATUS_UPDATED">
Sent when the status of an internal account changes (e.g., PENDING → ACTIVE, ACTIVE → FROZEN).

```json
{
"id": "Webhook:019542f5-b3e7-1d02-0000-000000000008",
"type": "INTERNAL_ACCOUNT.STATUS_UPDATED",
"timestamp": "2025-10-03T15:03:00Z",
"data": {
"id": "InternalAccount:btc456",
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
"type": "INTERNAL_CRYPTO",
"status": "FROZEN",
"balance": {
"amount": 5000000,
"currency": { "code": "BTC", "name": "Bitcoin", "symbol": "₿", "decimals": 8 }
},
"fundingPaymentInstructions": [],
"createdAt": "2025-08-01T10:00:00Z",
"updatedAt": "2025-10-03T15:03:00Z"
}
}
```

<Warning>
Account status values: `PENDING` (provisioning), `ACTIVE` (ready for payments), `CLOSED` (customer-initiated), `FROZEN` (compliance/fraud hold). Frozen accounts cannot send or receive payments.
</Warning>
</Tab>

<Tab title="KYC_STATUS">
Sent when customer KYC verification completes (required before conversions).

Expand Down Expand Up @@ -240,8 +273,9 @@ if (type === "OUTGOING_PAYMENT.COMPLETED") {
Track crypto deposits for off-ramp liquidity:

```javascript
if (type === "ACCOUNT_STATUS") {
const { accountId, newBalance, oldBalance } = req.body;
if (type === "INTERNAL_ACCOUNT.BALANCE_UPDATED") {
const { data } = req.body;
const { id: accountId, balance: newBalance } = data;

// Crypto deposit detected
if (
Expand Down
2 changes: 1 addition & 1 deletion mintlify/rewards/platform-tools/sandbox-testing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ curl -X POST https://api.lightspark.com/grid/2025-10-13/sandbox/internal-account
}'
```

This endpoint returns the updated `InternalAccount` object with the new balance. You'll also receive an `ACCOUNT_STATUS` webhook showing the balance change.
This endpoint returns the updated `InternalAccount` object with the new balance. You'll also receive an `INTERNAL_ACCOUNT.BALANCE_UPDATED` webhook showing the balance change.

<Note>
In production, ACH transfers typically take 1-3 business days to settle. In sandbox, funding is instant.
Expand Down
40 changes: 19 additions & 21 deletions mintlify/rewards/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -140,28 +140,26 @@ When the funds are received and the internal account balance is updated, you'll

```json
{
"accountId": "InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965",
"oldBalance": {
"amount": 0,
"currency": {
"code": "USD",
"name": "United States Dollar",
"symbol": "$",
"decimals": 2
}
},
"newBalance": {
"amount": 200000,
"currency": {
"code": "USD",
"name": "United States Dollar",
"symbol": "$",
"decimals": 2
}
},
"id": "Webhook:019542f5-b3e7-1d02-0000-000000000020",
"type": "INTERNAL_ACCOUNT.BALANCE_UPDATED",
"timestamp": "2025-10-03T14:32:00Z",
"webhookId": "Webhook:019542f5-b3e7-1d02-0000-000000000020",
"type": "ACCOUNT_STATUS"
"data": {
"id": "InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965",
"type": "INTERNAL_FIAT",
"status": "ACTIVE",
"balance": {
"amount": 200000,
"currency": {
"code": "USD",
"name": "United States Dollar",
"symbol": "$",
"decimals": 2
}
},
"fundingPaymentInstructions": [],
"createdAt": "2025-10-03T12:00:00Z",
"updatedAt": "2025-10-03T14:32:00Z"
}
}
```

Expand Down
2 changes: 1 addition & 1 deletion mintlify/snippets/depositing-funds.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ Customer initiates a push payment from their bank or wallet to the account/addre
Set up webhook listeners to receive updates for the deposit transaction and account balance updates. The account balance will update automatically.

<Info>
You'll receive `ACCOUNT_STATUS` webhook events when the internal account balance changes.
You'll receive `INTERNAL_ACCOUNT.BALANCE_UPDATED` webhook events when the internal account balance changes.
</Info>
</Step>
</Steps>
Expand Down
75 changes: 75 additions & 0 deletions mintlify/snippets/external-accounts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,81 @@ curl -X POST 'https://api.lightspark.com/grid/2025-10-13/customers/external-acco
<Tip>Key types: `CPF`, `CNPJ`, `EMAIL`, `PHONE`, or `RANDOM`</Tip>
</Tab>

<Tab title="Colombia">
**Bank Transfer or Mobile Money (Nequi, Daviplata)**

Colombia supports two payment rails: bank transfer and mobile money.

**Bank Transfer:**

```bash cURL
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": "COP",
"platformAccountId": "co_bank_001",
"accountInfo": {
"accountType": "COP_ACCOUNT",
"bankName": "Bancolombia",
"accountNumber": "1234567890",
"bankAccountType": "CHECKING",
"beneficiary": {
"beneficiaryType": "INDIVIDUAL",
"fullName": "Juan Carlos García",
"birthDate": "1988-03-15",
"nationality": "CO",
"documentType": "CC",
"documentNumber": "1234567890",
"address": {
"line1": "Carrera 7 #45-23",
"city": "Bogotá",
"postalCode": "110111",
"country": "CO"
}
}
}
}'
```

**Mobile Money (Nequi, Daviplata):**

```bash cURL
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": "COP",
"platformAccountId": "co_mobile_001",
"accountInfo": {
"accountType": "COP_ACCOUNT",
"phoneNumber": "+573001234567",
"beneficiary": {
"beneficiaryType": "INDIVIDUAL",
"fullName": "María López",
"birthDate": "1992-07-20",
"nationality": "CO",
"documentType": "CC",
"documentNumber": "9876543210",
"address": {
"line1": "Calle 100 #15-30",
"city": "Medellín",
"postalCode": "050021",
"country": "CO"
}
}
}
}'
```

<Note>
Bank transfer requires `bankName`, `accountNumber`, and `bankAccountType` (CHECKING or SAVINGS).
Mobile money requires `phoneNumber` in international format (e.g., +573001234567).
Most Colombian banks require `documentType` and `documentNumber` for KYC matching.
Document types: `CC` (Cédula de Ciudadanía), `CE` (Cédula de Extranjería), `TI` (Tarjeta de Identidad), `NIT` (Número de Identificación Tributaria), `PP` (Passport).
</Note>
</Tab>

<Tab title="El Salvador">
**Bank Transfer or Mobile Money (Tigo Money)**

Expand Down
6 changes: 5 additions & 1 deletion mintlify/snippets/internal-accounts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ curl -X GET 'https://api.lightspark.com/grid/2025-10-13/customers/internal-accou
{
"id": "InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965",
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
"type": "INTERNAL_FIAT",
"status": "ACTIVE",
"balance": {
"amount": 50000,
"currency": {
Expand Down Expand Up @@ -249,6 +251,8 @@ curl -X GET 'https://api.lightspark.com/grid/2025-10-13/customers/internal-accou
"data": {
"id": "InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965",
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
"type": "INTERNAL_FIAT",
"status": "ACTIVE",
"balance": {
"amount": 50000,
"currency": {
Expand Down Expand Up @@ -307,7 +311,7 @@ Show the payment details prominently in your UI:
Set up webhook listeners to receive notifications when deposits are credited to the internal account. The account balance will update automatically.

<Info>
You'll receive `ACCOUNT_STATUS` webhook events when the internal account balance changes.
You'll receive `INTERNAL_ACCOUNT.BALANCE_UPDATED` webhook events when the internal account balance changes.
</Info>
</Step>
</Steps>
Expand Down
4 changes: 2 additions & 2 deletions mintlify/snippets/sending/cross-currency.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -229,11 +229,11 @@ Grid automatically detects blockchain deposits and processes the transfer once f
</Step>

<Step title="Grid detects the deposit">
Grid monitors the blockchain for incoming deposits. You'll receive an `ACCOUNT_STATUS` webhook when the deposit is confirmed:
Grid monitors the blockchain for incoming deposits. You'll receive an `INTERNAL_ACCOUNT.BALANCE_UPDATED` webhook when the deposit is confirmed:

```json
{
"type": "ACCOUNT_STATUS",
"type": "INTERNAL_ACCOUNT.BALANCE_UPDATED",
"accountId": "InternalAccount:019542f5-b3e7-1d02-0000-000000000025",
"oldBalance": { "amount": 0, "currency": { "code": "USDC", "decimals": 2 } },
"newBalance": { "amount": 10000, "currency": { "code": "USDC", "decimals": 2 } },
Expand Down
Loading