diff --git a/mintlify/global-p2p/getting-started/platform-configuration.mdx b/mintlify/global-p2p/getting-started/platform-configuration.mdx
index c3ce626..8e44ad2 100644
--- a/mintlify/global-p2p/getting-started/platform-configuration.mdx
+++ b/mintlify/global-p2p/getting-started/platform-configuration.mdx
@@ -1,10 +1,10 @@
---
title: "Platform Configuration"
+description: "Configuring credentials, webhooks and currencies for your platform global P2P payments"
---
import PlatformConfigAPI from '/snippets/platform-config-currency-api-webhooks.mdx';
import { topLevelProductName } from '/snippets/variables.mdx';
-This guide explains how to configure your platform: get API credentials, configure webhooks, and set up UMA.
diff --git a/mintlify/global-p2p/onboarding-customers/configuring-customers.mdx b/mintlify/global-p2p/onboarding-customers/configuring-customers.mdx
index 6b2f89a..e6805e3 100644
--- a/mintlify/global-p2p/onboarding-customers/configuring-customers.mdx
+++ b/mintlify/global-p2p/onboarding-customers/configuring-customers.mdx
@@ -1,23 +1,18 @@
---
title: "Configuring Customers"
-description: "Creating and managing customers in the Grid API"
+description: "Creating and managing customers for global P2P payments"
---
import KycWebhooks from '/snippets/kyc/kyc-webhooks.mdx'
+import CustomerTypes from '/snippets/creating-customers/customer-types.mdx'
+import OnboardingModel from '/snippets/creating-customers/onboarding-model.mdx'
+import KycRegulated from '/snippets/kyc/kyc-regulated.mdx'
+import KycUnregulated from '/snippets/kyc/kyc-unregulated.mdx'
This guide provides comprehensive information about creating customers in the Grid API, including customer types, onboarding models, registration, and management.
-## Onboarding model
+
-There are two platform models for regulated and unregulated platforms.
-
-- Regulated institutions: Use your existing compliance processes. Create individual and business customers directly via `POST /customers`. The information you supply is used for beneficiary/counterparty compliance screening.
-- Unregulated institutions: Grid performs KYC/KYB. Generate a hosted KYC/KYB link, redirect your customer to complete verification in their locale, receive a KYC result webhook. While KYC is pending, allow customers to finish account setup but block funding and money movement.
-
-## Customer Types
-
-The Grid API supports both individual and business customers. While the API schema itself makes most Personally Identifiable Information (PII) optional at initial creation, specific fields may become mandatory based on the currencies the customer will transact with.
-
-Your platform's configuration (retrieved via `GET /config`) includes a `supportedCurrencies` array. Each currency object within this array has a `providerRequiredCustomerFields` list. If a customer is intended to use a specific currency, any fields listed for that currency **must** be provided when creating or updating the customer.
+
The base required information for all customers is only:
@@ -26,6 +21,18 @@ The base required information for all customers is only:
If using sending and receiving to just-in-time UMA addresses, you'll also need to specify the bank account information
+## Creating Customers
+
+
+
+
+
+
+
+
+
+
+
### Individual customers
In some cases, only the above fields are required at customer creation. Beyond those base requirements, additional fields commonly associated with individual customers include:
diff --git a/mintlify/global-p2p/quickstart.mdx b/mintlify/global-p2p/quickstart.mdx
index 7a291c0..5c5483d 100644
--- a/mintlify/global-p2p/quickstart.mdx
+++ b/mintlify/global-p2p/quickstart.mdx
@@ -4,7 +4,7 @@ description: "Send your first cross-border payment"
---
import { remittanceProductName } from '/snippets/variables.mdx'
-This quickstart guides you through a regulated FI sending an individual customer payment from the US to a bank account in Mexico using just-in-time funding.
+With Global P2P you can send and receive payments in any supported fiat or crypto currency. This quickstart guides you through a regulated FI sending an individual customer payment from the US to a bank account in Mexico using USDC just-in-time funding. For examples funding with real time fiat rails, see the [Sending Payments](/global-p2p/sending-receiving-payments/sending-payments) guide.
## Understanding Entity Mapping for Remittances
@@ -130,8 +130,8 @@ In this guide, the entities map as follows:
-H "Content-Type: application/json" \
-d '{
"source": {
- "umaAddress": "$alice@yourapp.example",
- "currency": "USD"
+ "customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
+ "currency": "USDC"
},
"destination": {
"accountId": "ExternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123",
@@ -151,28 +151,25 @@ In this guide, the entities map as follows:
"fees": { "amount": 50, "currency": { "code": "USD", "decimals": 2 } },
"paymentInstructions": [
{
- "accountOrWalletInfo": {
- "reference": "UMA-Q12345-REF",
- "accountType": "US_ACCOUNT",
- "accountNumber": "987654321",
- "routingNumber": "123456789",
- "accountCategory": "CHECKING",
- "bankName": "Example Bank"
- }
+ "accountOrWalletInfo": {
+ "accountType": "SOLANA_WALLET",
+ "address": "0x1234567890123456789012345678901234567890",
+ "assetType": "USDC"
+ }
},
{
- "accountOrWalletInfo": {
- "accountType": "SOLANA_WALLET",
- "assetType": "USDC",
- "address": "4Nd1m6Qkq7RfKuE5vQ9qP9Tn6H94Ueqb4xXHzsAbd8Wg"
- }
+ "accountOrWalletInfo": {
+ "accountType": "BASE_WALLET",
+ "address": "0x1234567890123456789012345678901234567890",
+ "assetType": "USDC"
+ }
}
],
"status": "PENDING"
}
```
## Fund the quote (Sandbox simulation)
- In production, you would trigger a real‑time push on a local instant rail (e.g., RTP, SPEI, SEPA Instant) to the provided `bankAccountInfo` using the exact `reference`. In Sandbox, you can mock funding using the simulate send endpoint.
+ In production, you would trigger a payment on one of the supported blockchains to the provided address. In Sandbox, you can mock funding using the simulate send endpoint.
```bash
curl -sS -X POST "https://api.lightspark.com/grid/2025-10-13/sandbox/send" \
@@ -180,7 +177,7 @@ In this guide, the entities map as follows:
-H "Content-Type: application/json" \
-d '{
"reference": "UMA-Q12345-REF",
- "currencyCode": "USD",
+ "currencyCode": "USDC",
"currencyAmount": 10000
}'
```
@@ -208,19 +205,6 @@ In this guide, the entities map as follows:
"receivedAmount": { "amount": 9706, "currency": { "code": "MXN", "decimals": 2 } },
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
"quoteId": "Quote:019542f5-b3e7-1d02-0000-000000000006",
- "paymentInstructions": [
- {
- "instructionsNotes": "Include reference code in transfer memo",
- "accountOrWalletInfo": {
- "accountType": "US_ACCOUNT",
- "accountNumber": "1234567890",
- "routingNumber": "021000021",
- "bankName": "Chase Bank",
- "referenceCode": "REF123456"
- }
- },
- ]
- }
},
"timestamp": "2025-01-15T14:32:00Z",
"webhookId": "Webhook:019542f5-b3e7-1d02-0000-000000000007",
diff --git a/mintlify/openapi.yaml b/mintlify/openapi.yaml
index 03e8222..b8ed0ed 100644
--- a/mintlify/openapi.yaml
+++ b/mintlify/openapi.yaml
@@ -1201,12 +1201,11 @@ paths:
responses:
'202':
description: |
- Public token accepted and external account creation initiated.
- The platform will receive a webhook notification when the external account is ready.
+ A pending external account resource will be created and returned while the Grid API asynchronously processes the Plaid public token.
content:
application/json:
schema:
- $ref: '#/components/schemas/PlaidCallbackResponse'
+ $ref: '#/components/schemas/ExternalAccount'
'400':
description: Bad request - Invalid public token or link token
content:
@@ -4911,7 +4910,7 @@ components:
invoice:
type: string
description: Invoice for the payment
- example: lnbc15u1p3xnhl2pp5jptserfk3zk4qy42tlucycrfwxhydvlemu9pqr93tuzlv9cc7g3sdqsvfhkcap3xyhx7un8cqzpgxqzjcsp5f8c52y2stc300gl6s4xswtjpc37hrnnr3c9wvtgjfuvqmpm35evq9qyyssqy4lgd8tj637qcjp05rdpxxykjenthxftej7a2zzmwrmrl70fyj9hvj0rewhzj7jfyuwkwcg9g2jpwtk3wkjtwnkdks84hsnu8xps5vsq4gj5hs
+ example: sparkrt1pgss8ter0fhc4c220f3zftmpz49h8wqte8eg3m5zkrraplgc048jucgszg3ssqgjzqqekv73mmh842yj7drsjwh7t7tz5zt8wf5kghm5v4ehggszppjp5s80cg3qjdzc55g2567tn3lj705hdsr577tg8ah795mlnt6807y657qhkmgfkf9w75p4wz3l8vhua85zdn6ryj32zuj0p00pv2l5z4u47mw6h4s
PaymentLightningInvoiceInfo:
allOf:
- $ref: '#/components/schemas/PaymentAccountOrWalletInfo'
@@ -5608,19 +5607,6 @@ components:
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
- PlaidCallbackResponse:
- type: object
- required:
- - message
- properties:
- message:
- type: string
- description: Human-readable message about the processing status
- example: External account creation initiated. You will receive a webhook notification when complete.
- requestId:
- type: string
- description: A unique identifier for this request, useful for debugging
- example: req_abc123def456
Transaction:
type: object
required:
@@ -6108,7 +6094,7 @@ components:
example: InternalAccount:85dcbd6-dced-4ec4-b756-3c3a9ea3d965
currency:
type: string
- description: Currency code for the source account
+ description: Currency code for the funding source. See [Supported Currencies](https://grid.lightspark.com/platform-overview/core-concepts/currencies-and-rails) for the full list of supported fiat and crypto currencies.
example: USD
description: Source account details
- title: Real-time funding
@@ -6123,7 +6109,7 @@ components:
example: Customer:019542f5-b3e7-1d02-0000-000000000009
currency:
type: string
- description: Currency code for the source
+ description: Currency code for the funding source. See [Supported Currencies](https://grid.lightspark.com/platform-overview/core-concepts/currencies-and-rails) for the full list of supported fiat and crypto currencies.
example: USD
description: Fund the quote using a real-time funding source (RTP, SEPA Instant, Spark, Stables, etc.). This will require manual just-in-time funding using `paymentInstructions` in the response. Because quotes expire quickly, this option is only valid for instant payment methods. Do not try to fund a quote with a non-instant payment method (ACH, etc.).
Quote:
@@ -6296,7 +6282,7 @@ components:
example: a12dcbd6-dced-4ec4-b756-3c3a9ea3d123
currency:
type: string
- description: Currency code for the destination account
+ description: Currency code for the destination account. See [Supported Currencies](https://grid.lightspark.com/platform-overview/core-concepts/currencies-and-rails) for the full list of supported fiat and crypto currencies.
example: EUR
description: Destination account details
- title: UMA Address
@@ -6311,7 +6297,7 @@ components:
example: $receiver@uma.domain.com
currency:
type: string
- description: Currency code for the destination
+ description: Currency code for the destination. See [Supported Currencies](https://grid.lightspark.com/platform-overview/core-concepts/currencies-and-rails) for the full list of supported fiat and crypto currencies.
example: EUR
description: UMA address destination details
- title: External Account Details
diff --git a/mintlify/payouts-and-b2b/onboarding/configuring-customers.mdx b/mintlify/payouts-and-b2b/onboarding/configuring-customers.mdx
index 123677d..d3bf13b 100644
--- a/mintlify/payouts-and-b2b/onboarding/configuring-customers.mdx
+++ b/mintlify/payouts-and-b2b/onboarding/configuring-customers.mdx
@@ -40,17 +40,37 @@ You can retrieve customer information using either the Grid-assigned customer ID
```bash Grid-assigned customer ID
curl -X GET "https://api.lightspark.com/grid/2025-10-13/customers/{customerId}" \
- -H "Authorization: Basic $GRID_CLIENT_ID:$GRID_CLIENT_SECRET"
+ -u "$GRID_CLIENT_ID:$GRID_CLIENT_SECRET"
```
```bash List customers with a filter
curl -X GET "https://api.lightspark.com/grid/2025-10-13/customers?platformCustomerId={platformCustomerId}&customerType={customerType}&createdAfter={createdAfter}&createdBefore={createdBefore}&cursor={cursor}&limit={limit}" \
- -H "Authorization: Basic $GRID_CLIENT_ID:$GRID_CLIENT_SECRET"
+ -u "$GRID_CLIENT_ID:$GRID_CLIENT_SECRET"
```
Note that this example shows all available filters. You can use any combination of them.
+### Updating Customer Information
+
+To update customer information:
+
+```bash
+curl -X PATCH "https://api.lightspark.com/grid/2025-10-13/customers/{customerId}" \
+ -u "$GRID_CLIENT_ID:$GRID_CLIENT_SECRET" \
+ -H "Content-Type: application/json" \
+ -d '{
+ "bankAccountInfo": {
+ "accountType": "US_ACCOUNT",
+ "accountNumber": "123456789",
+ "routingNumber": "987654321",
+ "bankName": "Chase Bank"
+ }
+ }'
+```
+
+Note that not all customer information can be updated. Particularly for non-regulated platforms, you cannot update personal information after the customer has been created.
+
## Bank Account Information
The API supports various bank account formats based on country and funding type. There are two types of funding
@@ -183,7 +203,7 @@ For large-scale customer imports, you can upload a CSV file containing customer
```bash
curl -X POST "https://api.lightspark.com/grid/2025-10-13/customers/bulk/csv" \
- -H "Authorization: Basic $GRID_CLIENT_ID:$GRID_CLIENT_SECRET" \
+ -u "$GRID_CLIENT_ID:$GRID_CLIENT_SECRET" \
-F "file=@customers.csv"
```
@@ -212,7 +232,7 @@ You can track the job status through:
```bash
curl -X GET "https://api.lightspark.com/grid/2025-10-13/customers/bulk/jobs/{jobId}" \
- -H "Authorization: Basic $GRID_CLIENT_ID:$GRID_CLIENT_SECRET"
+ -u "$GRID_CLIENT_ID:$GRID_CLIENT_SECRET"
```
Example job status response:
diff --git a/mintlify/payouts-and-b2b/onboarding/platform-configuration.mdx b/mintlify/payouts-and-b2b/onboarding/platform-configuration.mdx
index 3a95b79..e9a631a 100644
--- a/mintlify/payouts-and-b2b/onboarding/platform-configuration.mdx
+++ b/mintlify/payouts-and-b2b/onboarding/platform-configuration.mdx
@@ -1,6 +1,6 @@
---
title: "Platform Configuration"
-description: "Configuring platform settings for global payouts"
+description: "Configuring credentials, webhooks and currencies for your platform"
---
import PlatformConfigAPI from '/snippets/platform-config-currency-api-webhooks.mdx';
diff --git a/mintlify/payouts-and-b2b/quickstart.mdx b/mintlify/payouts-and-b2b/quickstart.mdx
index e964c9f..9978257 100644
--- a/mintlify/payouts-and-b2b/quickstart.mdx
+++ b/mintlify/payouts-and-b2b/quickstart.mdx
@@ -21,17 +21,18 @@ In this guide, the entities map as follows:
**Flow**: Your customer (a business) funds their internal account → uses your platform to send payments → to their vendors' external bank accounts.
## Get API credentials
- Create Sandbox API credentials in the dashboard, then set environment variables for local use.
+Create Sandbox API credentials in the dashboard, then set environment variables for local use.
- ```bash
- export GRID_BASE_URL="https://api.lightspark.com/grid/2025-10-13"
- export GRID_CLIENT_ID="YOUR_SANDBOX_CLIENT_ID"
- export GRID_CLIENT_SECRET="YOUR_SANDBOX_CLIENT_SECRET"
- ```
-
- Use Basic Auth in cURL with `-u "$GRID_CLIENT_ID:$GRID_API_SECRET"`.
-
+```bash
+export GRID_BASE_URL="https://api.lightspark.com/grid/2025-10-13"
+export GRID_CLIENT_ID="YOUR_SANDBOX_CLIENT_ID"
+export GRID_CLIENT_SECRET="YOUR_SANDBOX_CLIENT_SECRET"
+```
+
+
+Use Basic Auth in cURL with `-u "$GRID_CLIENT_ID:$GRID_API_SECRET"`.
+
## Onboard a Customer
Onboard a customer using the hosted KYC/KYB link flow.
@@ -43,7 +44,7 @@ Onboard a customer using the hosted KYC/KYB link flow.
```bash
curl -X GET "https://api.lightspark.com/grid/2025-10-13/customers/kyc-link?redirectUri=https://yourapp.com/onboarding-complete&platformCustomerId=019542f5-b3e7-1d02-0000-000000000001" \
- -H "Authorization: Basic $GRID_CLIENT_ID:$GRID_CLIENT_SECRET"
+ -u "$GRID_CLIENT_ID:$GRID_CLIENT_SECRET"
```
**Response:**
@@ -86,7 +87,7 @@ Once the customer is created, internal accounts will automatically be created on
```bash
curl -X GET "https://api.lightspark.com/grid/2025-10-13/internal-account?customerId=Customer:019542f5-b3e7-1d02-0000-000000000001¤cy=USD" \
- -H "Authorization: Basic $GRID_CLIENT_ID:$GRID_CLIENT_SECRET"
+ -u "$GRID_CLIENT_ID:$GRID_CLIENT_SECRET"
```
**Response:**
@@ -148,7 +149,7 @@ making sure to include the reference code `FUND-ABC123` in the transfer memo if
```bash
# Sandbox: fund internal account directly
curl -X POST "https://api.lightspark.com/grid/2025-10-13/sandbox/internal-accounts/InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965/fund" \
- -H "Authorization: Basic $GRID_CLIENT_ID:$GRID_CLIENT_SECRET" \
+ -u "$GRID_CLIENT_ID:$GRID_CLIENT_SECRET" \
-H "Content-Type: application/json" \
-d '{
"currencyCode": "USD",
@@ -194,7 +195,7 @@ Mexican CLABE account as the external account.
```bash
curl -X POST "https://api.lightspark.com/grid/2025-10-13/customers/external-accounts" \
- -H "Authorization: Basic $GRID_CLIENT_ID:$GRID_CLIENT_SECRET" \
+ -u "$GRID_CLIENT_ID:$GRID_CLIENT_SECRET" \
-H "Content-Type: application/json" \
-d '{
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
@@ -254,7 +255,7 @@ Create a quote to lock in the exchange rate, fees, and get the transfer details
```bash
curl -X POST "https://api.lightspark.com/grid/2025-10-13/quotes" \
- -H "Authorization: Basic $GRID_CLIENT_ID:$GRID_CLIENT_SECRET" \
+ -u "$GRID_CLIENT_ID:$GRID_CLIENT_SECRET" \
-H "Content-Type: application/json" \
-d '{
"lookupId": "LookupRequest:019542f5-b3e7-1d02-0000-000000000009", # ID from the lookup step
@@ -328,7 +329,7 @@ Execute the quote to initiate the transfer from the internal account to the exte
```bash
curl -X POST "https://api.lightspark.com/grid/2025-10-13/quotes/Quote:019542f5-b3e7-1d02-0000-000000000006/execute" \
- -H "Authorization: Basic $GRID_CLIENT_ID:$GRID_CLIENT_SECRET"
+ -u "$GRID_CLIENT_ID:$GRID_CLIENT_SECRET"
```
**Response:**
diff --git a/mintlify/snippets/creating-customers/customer-types.mdx b/mintlify/snippets/creating-customers/customer-types.mdx
new file mode 100644
index 0000000..0d4ac2c
--- /dev/null
+++ b/mintlify/snippets/creating-customers/customer-types.mdx
@@ -0,0 +1,5 @@
+## Customer Types
+
+The Grid API supports both individual and business customers. While the API schema itself makes most Personally Identifiable Information (PII) optional at initial creation, specific fields may become mandatory based on the currencies the customer will transact with.
+
+Your platform’s configuration ( retrieved via `GET /config`) includes a supportedCurrencies array. Each currency object within this array has a providerRequiredCustomerFields list. If a customer is intended to use a specific currency, any fields listed for that currency must be provided when creating or updating the customer.
\ No newline at end of file
diff --git a/mintlify/snippets/creating-customers/onboarding-model.mdx b/mintlify/snippets/creating-customers/onboarding-model.mdx
new file mode 100644
index 0000000..f97511f
--- /dev/null
+++ b/mintlify/snippets/creating-customers/onboarding-model.mdx
@@ -0,0 +1,6 @@
+## Onboarding model
+
+There are two models for regulated and unregulated platforms.
+
+- Regulated platforms: Use your existing compliance processes. Create individual and business customers directly via `POST /customers`. The information you supply is used for beneficiary/counterparty compliance screening.
+- Unregulated platforms: Grid performs KYC/KYB. Generate a hosted KYC/KYB link, redirect your customer to complete verification in their locale, receive a KYC result webhook. While KYC is pending, allow customers to finish account setup but block funding and money movement.
\ No newline at end of file
diff --git a/mintlify/snippets/sending/cross-currency.mdx b/mintlify/snippets/sending/cross-currency.mdx
index 23c6714..469201c 100644
--- a/mintlify/snippets/sending/cross-currency.mdx
+++ b/mintlify/snippets/sending/cross-currency.mdx
@@ -4,7 +4,7 @@ Use the quotes flow when sending funds with currency conversion. This locks in a
### When to use cross-currency transfers
-- Converting USD to EUR, MXN, BRL, or other supported currencies
+- Converting USD, USDC, USDT to EUR, MXN, BRL, BTC, or other supported fiat and crypto currencies
- Sending international payments with automatic currency conversion
- Need to lock in a specific exchange rate for the transfer
@@ -119,3 +119,114 @@ You'll receive a webhook when the transaction completes:
+### Funding with cryptocurrencies
+
+Cross-currency transfers support funding via USDC and BTC on popular blockchains including Solana, Base, Lightning and Spark. When you create a quote specifying the source currency as USDC or BTC, the response includes payment instructions for multiple funding options.
+
+#### Supported blockchains
+
+| Blockchain Network | Cryptocurrencies |
+|-------|-------------|
+| Solana | USDC |
+| Base | USDC |
+| Tron | USDT |
+| Polygon | USDC |
+| Lightning | BTC |
+| Spark | BTC |
+
+#### Create a quote for USDC-funded transfer
+
+Request a quote that provides blockchain funding options:
+
+```bash
+curl -X POST 'https://api.lightspark.com/grid/2025-10-13/quotes' \
+ -u "$GRID_CLIENT_ID:$GRID_CLIENT_SECRET" \
+ -H 'Content-Type: application/json' \
+ -d '{
+ "source": {
+ "customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
+ "currency": "USDC"
+ },
+ "destination": { "accountId": "ExternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123", "currency": "EUR" },
+ "lockedCurrencySide": "SENDING",
+ "lockedCurrencyAmount": 10000,
+ "description": "Payment for services - Invoice #1234"
+ }'
+```
+
+The response includes an array of payment instructions, including blockchain wallet addresses for USDC and invoices for BTC:
+
+```json Success (201 Created)
+{
+ "id": "Quote:019542f5-b3e7-1d02-0000-000000000025",
+ "status": "PENDING",
+ "source": { "customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001", "currency": "USDC" },
+ "destination": { "accountId": "ExternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123", "currency": "EUR" },
+ "sendingAmount": { "amount": 10000, "currency": { "code": "USDC", "decimals": 2 } },
+ "receivingAmount": { "amount": 9200, "currency": { "code": "EUR", "decimals": 2 } },
+ "exchangeRate": 0.92,
+ "fee": { "amount": 50, "currency": { "code": "USD", "decimals": 2 } },
+ "expiresAt": "2025-10-03T15:15:00Z",
+ "createdAt": "2025-10-03T15:00:00Z",
+ "paymentInstructions": [
+ {
+ "accountOrWalletInfo": {
+ "accountType": "SOLANA_WALLET",
+ "assetType": "USDC",
+ "address": "4Nd1m6Qkq7RfKuE5vQ9qP9Tn6H94Ueqb4xXHzsAbd8Wg"
+ }
+ },
+ {
+ "accountOrWalletInfo": {
+ "accountType": "BASE_WALLET",
+ "assetType": "USDC",
+ "address": "0x1234567890abcdef1234567890abcdef12345678"
+ }
+ }
+ ]
+}
+```
+
+#### Transaction processing
+
+Grid automatically detects blockchain deposits and processes the transfer once funds are received:
+
+
+
+ Transfer the exact amount of USDC specified in `sendingAmount` to your chosen blockchain wallet address.
+
+
+
+ Grid monitors the blockchain for incoming deposits. You'll receive an `ACCOUNT_STATUS` webhook when the deposit is confirmed:
+
+```json
+{
+ "type": "ACCOUNT_STATUS",
+ "accountId": "InternalAccount:019542f5-b3e7-1d02-0000-000000000025",
+ "oldBalance": { "amount": 0, "currency": { "code": "USDC", "decimals": 2 } },
+ "newBalance": { "amount": 10000, "currency": { "code": "USDC", "decimals": 2 } },
+ "timestamp": "2025-10-03T15:05:00Z"
+}
+```
+
+
+
+ Once the deposit is confirmed, Grid executes the cross-currency transfer. You'll receive `OUTGOING_PAYMENT` webhooks as the transfer progresses and completes:
+
+```json
+{
+ "type": "OUTGOING_PAYMENT",
+ "transaction": {
+ "id": "Transaction:019542f5-b3e7-1d02-0000-000000000030",
+ "status": "COMPLETED",
+ "sentAmount": { "amount": 10000, "currency": { "code": "USD", "decimals": 2 } },
+ "receivedAmount": { "amount": 9200, "currency": { "code": "EUR", "decimals": 2 } },
+ "exchangeRate": 0.92,
+ "settledAt": "2025-10-03T15:30:00Z",
+ "quoteId": "Quote:019542f5-b3e7-1d02-0000-000000000025"
+ },
+ "timestamp": "2025-10-03T15:31:00Z"
+}
+```
+
+
diff --git a/openapi.yaml b/openapi.yaml
index 03e8222..b8ed0ed 100644
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -1201,12 +1201,11 @@ paths:
responses:
'202':
description: |
- Public token accepted and external account creation initiated.
- The platform will receive a webhook notification when the external account is ready.
+ A pending external account resource will be created and returned while the Grid API asynchronously processes the Plaid public token.
content:
application/json:
schema:
- $ref: '#/components/schemas/PlaidCallbackResponse'
+ $ref: '#/components/schemas/ExternalAccount'
'400':
description: Bad request - Invalid public token or link token
content:
@@ -4911,7 +4910,7 @@ components:
invoice:
type: string
description: Invoice for the payment
- example: lnbc15u1p3xnhl2pp5jptserfk3zk4qy42tlucycrfwxhydvlemu9pqr93tuzlv9cc7g3sdqsvfhkcap3xyhx7un8cqzpgxqzjcsp5f8c52y2stc300gl6s4xswtjpc37hrnnr3c9wvtgjfuvqmpm35evq9qyyssqy4lgd8tj637qcjp05rdpxxykjenthxftej7a2zzmwrmrl70fyj9hvj0rewhzj7jfyuwkwcg9g2jpwtk3wkjtwnkdks84hsnu8xps5vsq4gj5hs
+ example: sparkrt1pgss8ter0fhc4c220f3zftmpz49h8wqte8eg3m5zkrraplgc048jucgszg3ssqgjzqqekv73mmh842yj7drsjwh7t7tz5zt8wf5kghm5v4ehggszppjp5s80cg3qjdzc55g2567tn3lj705hdsr577tg8ah795mlnt6807y657qhkmgfkf9w75p4wz3l8vhua85zdn6ryj32zuj0p00pv2l5z4u47mw6h4s
PaymentLightningInvoiceInfo:
allOf:
- $ref: '#/components/schemas/PaymentAccountOrWalletInfo'
@@ -5608,19 +5607,6 @@ components:
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
- PlaidCallbackResponse:
- type: object
- required:
- - message
- properties:
- message:
- type: string
- description: Human-readable message about the processing status
- example: External account creation initiated. You will receive a webhook notification when complete.
- requestId:
- type: string
- description: A unique identifier for this request, useful for debugging
- example: req_abc123def456
Transaction:
type: object
required:
@@ -6108,7 +6094,7 @@ components:
example: InternalAccount:85dcbd6-dced-4ec4-b756-3c3a9ea3d965
currency:
type: string
- description: Currency code for the source account
+ description: Currency code for the funding source. See [Supported Currencies](https://grid.lightspark.com/platform-overview/core-concepts/currencies-and-rails) for the full list of supported fiat and crypto currencies.
example: USD
description: Source account details
- title: Real-time funding
@@ -6123,7 +6109,7 @@ components:
example: Customer:019542f5-b3e7-1d02-0000-000000000009
currency:
type: string
- description: Currency code for the source
+ description: Currency code for the funding source. See [Supported Currencies](https://grid.lightspark.com/platform-overview/core-concepts/currencies-and-rails) for the full list of supported fiat and crypto currencies.
example: USD
description: Fund the quote using a real-time funding source (RTP, SEPA Instant, Spark, Stables, etc.). This will require manual just-in-time funding using `paymentInstructions` in the response. Because quotes expire quickly, this option is only valid for instant payment methods. Do not try to fund a quote with a non-instant payment method (ACH, etc.).
Quote:
@@ -6296,7 +6282,7 @@ components:
example: a12dcbd6-dced-4ec4-b756-3c3a9ea3d123
currency:
type: string
- description: Currency code for the destination account
+ description: Currency code for the destination account. See [Supported Currencies](https://grid.lightspark.com/platform-overview/core-concepts/currencies-and-rails) for the full list of supported fiat and crypto currencies.
example: EUR
description: Destination account details
- title: UMA Address
@@ -6311,7 +6297,7 @@ components:
example: $receiver@uma.domain.com
currency:
type: string
- description: Currency code for the destination
+ description: Currency code for the destination. See [Supported Currencies](https://grid.lightspark.com/platform-overview/core-concepts/currencies-and-rails) for the full list of supported fiat and crypto currencies.
example: EUR
description: UMA address destination details
- title: External Account Details
diff --git a/openapi/components/schemas/common/PaymentSparkWalletInfo.yaml b/openapi/components/schemas/common/PaymentSparkWalletInfo.yaml
index 743c5af..7933ff4 100644
--- a/openapi/components/schemas/common/PaymentSparkWalletInfo.yaml
+++ b/openapi/components/schemas/common/PaymentSparkWalletInfo.yaml
@@ -13,4 +13,4 @@ properties:
invoice:
type: string
description: Invoice for the payment
- example: lnbc15u1p3xnhl2pp5jptserfk3zk4qy42tlucycrfwxhydvlemu9pqr93tuzlv9cc7g3sdqsvfhkcap3xyhx7un8cqzpgxqzjcsp5f8c52y2stc300gl6s4xswtjpc37hrnnr3c9wvtgjfuvqmpm35evq9qyyssqy4lgd8tj637qcjp05rdpxxykjenthxftej7a2zzmwrmrl70fyj9hvj0rewhzj7jfyuwkwcg9g2jpwtk3wkjtwnkdks84hsnu8xps5vsq4gj5hs
\ No newline at end of file
+ example: sparkrt1pgss8ter0fhc4c220f3zftmpz49h8wqte8eg3m5zkrraplgc048jucgszg3ssqgjzqqekv73mmh842yj7drsjwh7t7tz5zt8wf5kghm5v4ehggszppjp5s80cg3qjdzc55g2567tn3lj705hdsr577tg8ah795mlnt6807y657qhkmgfkf9w75p4wz3l8vhua85zdn6ryj32zuj0p00pv2l5z4u47mw6h4s
\ No newline at end of file
diff --git a/openapi/components/schemas/quotes/QuoteRequest.yaml b/openapi/components/schemas/quotes/QuoteRequest.yaml
index 4d27692..5e27a72 100644
--- a/openapi/components/schemas/quotes/QuoteRequest.yaml
+++ b/openapi/components/schemas/quotes/QuoteRequest.yaml
@@ -30,7 +30,10 @@ properties:
example: a12dcbd6-dced-4ec4-b756-3c3a9ea3d123
currency:
type: string
- description: Currency code for the destination account
+ description: >-
+ Currency code for the destination account. See
+ [Supported Currencies](https://grid.lightspark.com/platform-overview/core-concepts/currencies-and-rails)
+ for the full list of supported fiat and crypto currencies.
example: EUR
description: Destination account details
- title: UMA Address
@@ -45,7 +48,10 @@ properties:
example: $receiver@uma.domain.com
currency:
type: string
- description: Currency code for the destination
+ description: >-
+ Currency code for the destination. See
+ [Supported Currencies](https://grid.lightspark.com/platform-overview/core-concepts/currencies-and-rails)
+ for the full list of supported fiat and crypto currencies.
example: EUR
description: UMA address destination details
- title: External Account Details
diff --git a/openapi/components/schemas/quotes/QuoteSource.yaml b/openapi/components/schemas/quotes/QuoteSource.yaml
index 1f7ad86..d12a92d 100644
--- a/openapi/components/schemas/quotes/QuoteSource.yaml
+++ b/openapi/components/schemas/quotes/QuoteSource.yaml
@@ -10,7 +10,10 @@ oneOf:
example: InternalAccount:85dcbd6-dced-4ec4-b756-3c3a9ea3d965
currency:
type: string
- description: Currency code for the source account
+ description: >-
+ Currency code for the funding source. See
+ [Supported Currencies](https://grid.lightspark.com/platform-overview/core-concepts/currencies-and-rails)
+ for the full list of supported fiat and crypto currencies.
example: USD
description: Source account details
- title: Real-time funding
@@ -27,7 +30,10 @@ oneOf:
example: Customer:019542f5-b3e7-1d02-0000-000000000009
currency:
type: string
- description: Currency code for the source
+ description: >-
+ Currency code for the funding source. See
+ [Supported Currencies](https://grid.lightspark.com/platform-overview/core-concepts/currencies-and-rails)
+ for the full list of supported fiat and crypto currencies.
example: USD
description: >-
Fund the quote using a real-time funding source (RTP, SEPA Instant, Spark, Stables, etc.).
diff --git a/openapi/paths/plaid/plaid_callback_{plaid_link_token}.yaml b/openapi/paths/plaid/plaid_callback_{plaid_link_token}.yaml
index ae40fbb..965607d 100644
--- a/openapi/paths/plaid/plaid_callback_{plaid_link_token}.yaml
+++ b/openapi/paths/plaid/plaid_callback_{plaid_link_token}.yaml
@@ -33,12 +33,11 @@ post:
responses:
'202':
description: |
- Public token accepted and external account creation initiated.
- The platform will receive a webhook notification when the external account is ready.
+ A pending external account resource will be created and returned while the Grid API asynchronously processes the Plaid public token.
content:
application/json:
schema:
- $ref: ../../components/schemas/plaid/PlaidCallbackResponse.yaml
+ $ref: ../../components/schemas/external_accounts/ExternalAccount.yaml
'400':
description: Bad request - Invalid public token or link token
content: