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
53 changes: 51 additions & 2 deletions mintlify/payouts-and-b2b/onboarding/disclosures.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,58 @@ Copy Lightspark's End User Terms and append them to your own terms of service, s

Present the combined terms in your onboarding or consent flow, and require each end user to affirmatively accept them (for example, an unchecked checkbox or an "I Agree" button) before they can use Grid.

Use `GET /customers/end-user-terms` to retrieve the current terms URL and version. Record acceptance with the `endUserTermsConsent` field when you create or update the customer. The acceptance record includes the timestamp, device IP address, terms version, and acceptance method. Grid rejects versions that it does not recognize.
## Record each acceptance

For unregulated platforms, Grid does not open customer accounts until you record this acceptance. Customer responses include the full `endUserTermsConsent` object after acceptance is recorded.
Send the evidence of acceptance as `endUserTermsConsent` when you create the customer. Collect it for **both `INDIVIDUAL` and `BUSINESS` customers**.

<Warning>
Until a customer's acceptance is on file, Grid does not provision their internal accounts, and customer-scoped transactions are rejected with `403 END_USER_TERMS_NOT_ACCEPTED`.
</Warning>

```bash
curl -sS -X POST "https://api.lightspark.com/grid/2025-10-13/customers" \
-u "$GRID_CLIENT_ID:$GRID_CLIENT_SECRET" \
-H "Content-Type: application/json" \
-d '{
"customerType": "INDIVIDUAL",
"platformCustomerId": "9f84e0c2a72c4fa",
"fullName": "Jane Doe",
"endUserTermsConsent": {
"acceptedAt": "2025-10-03T12:00:00Z",
"ipAddress": "198.51.100.24",
"termsVersion": "V1",
"acceptanceMethod": "CHECKBOX"
}
}'
```

| Field | Description |
| --- | --- |
| `acceptedAt` | When the customer accepted the terms (ISO 8601). |
| `ipAddress` | IP address of the device the customer accepted from. |
| `termsVersion` | Version identifier of the End User Terms the customer accepted. Send the version they actually accepted — Grid rejects a version it doesn't recognize with `400 END_USER_TERMS_VERSION_NOT_FOUND`. |
| `acceptanceMethod` | How the customer accepted: `CHECKBOX` or `CLICK_TO_ACCEPT`. |

The same field is accepted on `PATCH /customers/{customerId}`, so you can record consent for a customer that already exists — including customers you created before you started collecting it. `customerType` is required on the update:

```bash
curl -sS -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 '{
"customerType": "INDIVIDUAL",
"endUserTermsConsent": {
"acceptedAt": "2025-10-03T12:00:00Z",
"ipAddress": "198.51.100.24",
"termsVersion": "V1",
"acceptanceMethod": "CLICK_TO_ACCEPT"
}
}'
```

Customer responses include the recorded `endUserTermsConsent` object once acceptance is on file, and omit it until then — read it back with `GET /customers/{customerId}` to confirm which customers still need consent.

Regulated platforms rely on their own end user agreements and don't send this field.

## Provide evidence of your consent flow

Expand Down
8 changes: 8 additions & 0 deletions mintlify/snippets/internal-accounts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@ Internal accounts are created for both:
are created when you configure your platform with supported currencies.
</Info>

<Warning>
On unregulated platforms, a customer's internal accounts aren't provisioned
until you record their End User Terms acceptance in `endUserTermsConsent`, and
customer-scoped transactions are rejected with `403
END_USER_TERMS_NOT_ACCEPTED` until then. See
[Disclosures](/payouts-and-b2b/onboarding/disclosures).
</Warning>

## How internal accounts work

Internal accounts act as an intermediary holding account in the payment flow:
Expand Down
Loading