Skip to content

Commit 8e4ddb9

Browse files
feat(rails): add ACH_SAME_DAY payment rail
Grid exposes one ACH rail today, so a platform cannot choose between standard and same-day settlement and the two cannot be priced apart. Add ACH_SAME_DAY alongside ACH in PaymentRail, and to the paymentRails array on UsdAccountInfo. The array is the one that matters at runtime: the generated client validates paymentRails against it, so advertising the rail on a USD account without this entry makes GET /customers/external-accounts/{id} return 500. UsdAccountInfo is composed by PaymentUsdAccountInfo and UsdExternalAccountInfo, so the single entry covers all three generated models. Describe the rails as they will actually behave on release. ACH keeps settling same-business-day on production platforms until an announced date, and already settles next-business-day on sandbox, so the description says so rather than claiming next-day everywhere. An over-cap same-day request settles on the standard schedule and is priced accordingly; it is not rejected. RailFeeConfig accepts the new rail, and its description now says the two are separate rails that each need their own fee config. The docs pages that enumerate rails list the new one: the US row of the country support table, the paymentRail tip on the sending pages, the rail-fee limits on the fees page, and a changelog entry. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RUF3krYG9C9hShf4iS5Sug
1 parent 0bd5a28 commit 8e4ddb9

10 files changed

Lines changed: 60 additions & 13 deletions

File tree

‎mintlify/changelog.mdx‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,24 @@ changes and roadmap, [book a live demo](https://www.lightspark.com/contact) or
1111

1212
<Update label="September 2026">
1313

14+
## Same-day ACH is its own payment rail
15+
16+
`ACH_SAME_DAY` joins `ACH` in `PaymentRail`. Pin it on a quote's destination to request
17+
same-business-day settlement for a USD payout.
18+
19+
- Grid never selects `ACH_SAME_DAY` for you. It is only used when you name it, so
20+
existing integrations that omit `paymentRail` are unaffected.
21+
- The two rails are priced separately. A `RailFeeConfig` with `rail: ACH_SAME_DAY`
22+
prices same-day sends; your existing `ACH` config keeps pricing standard sends.
23+
- A same-day request above the NACHA per-entry limit settles on the standard schedule
24+
and is priced accordingly. It is not rejected.
25+
- `ACH` will settle on the standard next-business-day schedule. Until a date we
26+
announce in advance, `ACH` continues to settle same-business-day on production
27+
platforms; it already settles next-business-day on sandbox platforms. To guarantee
28+
same-day settlement after that date, request `ACH_SAME_DAY`.
29+
30+
See [Assessing fees](/payouts-and-b2b/payment-flow/assessing-fees).
31+
1432
## Add cards to Apple Pay, Google Pay, and Samsung Pay from your app
1533

1634
New `POST /cards/{id}/tokenize` exchanges the values a wallet SDK produces

‎mintlify/openapi.yaml‎

Lines changed: 10 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎mintlify/payouts-and-b2b/payment-flow/assessing-fees.mdx‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ Both fee types may apply to the same transaction, e.g. a cross-currency payment
4949
only, and the fixed fee must be in that same currency — other currencies return
5050
`NOT_IMPLEMENTED`.
5151

52-
Rail fees cover `ACH`, `RTP`, `FEDNOW` and `WIRE`, going `OUT`, with the fixed fee in USD.
52+
Rail fees cover `ACH`, `ACH_SAME_DAY`, `RTP`, `FEDNOW` and `WIRE`, going `OUT`, with the fixed fee in USD.
53+
`ACH` and `ACH_SAME_DAY` are separate rails, so price each one with its own config.
5354
Anything else returns `NOT_IMPLEMENTED`.
5455

5556
Both are expanding — support for stablecoin sending currencies such as USDC is planned.

‎mintlify/payouts-and-b2b/payment-flow/send-payment.mdx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ curl -X POST 'https://api.lightspark.com/grid/2025-10-13/quotes' \
135135
</Info>
136136

137137
<Tip>
138-
The `paymentRail` field is optional. If omitted, Grid selects a default rail for the destination. Specify a rail (e.g., `ACH`, `WIRE`, `RTP`, `FEDNOW`) when you need to control which payment network processes the transfer.
138+
The `paymentRail` field is optional. If omitted, Grid selects a default rail for the destination. Specify a rail (e.g., `ACH`, `ACH_SAME_DAY`, `WIRE`, `RTP`, `FEDNOW`) when you need to control which payment network processes the transfer. `ACH_SAME_DAY` is never selected for you: it requests same-business-day settlement and is priced separately. Above the NACHA per-entry same-day limit it settles on the standard schedule and is priced accordingly.
139139
</Tip>
140140

141141
<Info>

‎mintlify/snippets/country-support.mdx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ import { FeatureCard, FeatureCardGrid, FeatureCardList, FeatureCardContainer } f
7777
| 🇺🇬 Uganda | UG | `Mobile Money` (Airtel, MTN) `SWIFT` |
7878
| 🇦🇪 United Arab Emirates | AE | `Bank Transfer` `SWIFT` |
7979
| 🇬🇧 United Kingdom | GB | `Faster Payments` `SWIFT` |
80-
| 🇺🇸 United States | US | `ACH` `Wire Transfer` `RTP` `FedNow` `SWIFT` |
80+
| 🇺🇸 United States | US | `ACH` `Same-day ACH` `Wire Transfer` `RTP` `FedNow` `SWIFT` |
8181
| 🇻🇳 Vietnam | VN | `Bank Transfer` `SWIFT` |
8282
| 🇿🇲 Zambia | ZM | `Mobile Money` (Airtel, MTN, Zamtel) `SWIFT` |
8383

‎mintlify/snippets/sending/accounts.mdx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ curl -X POST 'https://api.lightspark.com/grid/2025-10-13/quotes' \
6868
</Info>
6969

7070
<Tip>
71-
The `paymentRail` field is optional. If omitted, Grid selects a default rail for the destination. Specify a rail (e.g., `ACH`, `WIRE`, `RTP`, `FEDNOW`) when you need to control which payment network processes the transfer.
71+
The `paymentRail` field is optional. If omitted, Grid selects a default rail for the destination. Specify a rail (e.g., `ACH`, `ACH_SAME_DAY`, `WIRE`, `RTP`, `FEDNOW`) when you need to control which payment network processes the transfer. `ACH_SAME_DAY` is never selected for you: it requests same-business-day settlement and is priced separately. Above the NACHA per-entry same-day limit it settles on the standard schedule and is priced accordingly.
7272
</Tip>
7373

7474
<Info>

‎openapi.yaml‎

Lines changed: 10 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎openapi/components/schemas/common/PaymentRail.yaml‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ type: string
22
enum:
33
- ACH
44
- ACH_COLOMBIA
5+
- ACH_SAME_DAY
56
- BANK_TRANSFER
67
- BRE_B
78
- CIPS
@@ -26,4 +27,15 @@ enum:
2627
description: >-
2728
The payment rail used for the transfer. Payment rails represent the underlying
2829
payment network or system used to move funds between accounts.
30+
31+
32+
`ACH_SAME_DAY` requests same-business-day settlement for a USD payout and is priced
33+
separately. It is subject to the NACHA per-entry same-day limit; a request above that
34+
limit settles on the standard schedule and is priced accordingly.
35+
36+
37+
`ACH` will settle on the standard next-business-day schedule. Until a date we announce
38+
in advance, `ACH` continues to settle same-business-day on production platforms; it
39+
already settles next-business-day on sandbox platforms. To guarantee same-day
40+
settlement after that date, request `ACH_SAME_DAY`.
2941
example: ACH

‎openapi/components/schemas/common/UsdAccountInfo.yaml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ allOf:
1010
type: string
1111
enum:
1212
- ACH
13+
- ACH_SAME_DAY
1314
- WIRE
1415
- RTP
1516
- FEDNOW

‎openapi/components/schemas/config/RailFeeConfig.yaml‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ allOf:
88
rail:
99
$ref: ../common/PaymentRail.yaml
1010
description: >-
11-
The rail used in the transaction. `ACH`, `RTP`, `FEDNOW` and `WIRE` are
12-
accepted today; other rails return a `NOT_IMPLEMENTED` error.
11+
The rail used in the transaction. `ACH`, `ACH_SAME_DAY`, `RTP`, `FEDNOW` and
12+
`WIRE` are accepted today; other rails return a `NOT_IMPLEMENTED` error.
1313
direction:
1414
type: string
1515
enum:
@@ -35,4 +35,5 @@ allOf:
3535
description: >-
3636
A fee charged when a transaction uses the specified rail. There can be at most one for
3737
a given rail, direction and originator. For example, a config with rail: ACH, direction: OUT,
38-
originator: GRID will charge a fee on all outgoing ACH transactions.
38+
originator: GRID will charge a fee on all outgoing ACH transactions. `ACH` and
39+
`ACH_SAME_DAY` are separate rails, so price each one with its own config.

0 commit comments

Comments
 (0)