ACH Payments
Full control over FedACH
Originate ACH credits and debits, track and initiate returns, and store frequently used counterparty details.
1await summitspan.achTransfers.create({
2 account_id: "account_in71c4amph0vgo2qllky",
3 amount: 378289,
4 routing_number: "101050001",
5 account_number: "877362798",
6 individual_name: "Sarah Ogazi",
7 company_entry_description: "Inv237483",
8 company_name: "Otto Group",
9});Send ACH payments that settle in as little as a few hours.
Automate reconciliation with a unique account number for every counterparty.
Use debited funds right away when you maintain a reserve.
Know exactly when your transfers are submitted and when funds land.
See return codes and standard entry class codes directly.
Returns are matched to their original transfers automatically.
Set predictable statement descriptors for recipients.
Store external account details for repeat payments.
Stable and reliable
Predictably fast ACH payments
ACH can feel like a black box. Transfers take days, and it’s rarely clear when funds will actually be available.
We default to same-day ACH, submit at every Fed window, and give you settlement tracking you can build on — so payments often arrive in hours.
- Same-day ACH by default
- Submissions at every ACH window
- Transparent settlement tracking
ACH in hours
instead of days
Complete control
Preview every inbound payment
Review incoming ACH debits for an hour before they post. Reject unwanted debits, fund accounts just in time, or write your own allow and block rules for advanced cases.
- Just-in-time funding
- Custom allow and block lists
- Auto-reject unwanted transfers
Just-in-time funding
Account
debit received
allowed to settle
to move funds
settles
••1234
••5678
1await summitspan.accountTransfers.create({
2 account_id: "account_5678",
3 destination_account_id: "account_1234",
4 amount: 1000,
5 description: "Just-in-time funding",
6});Operator workflows
Always know where your money is
Track every ACH payment from the dashboard. See which transfers are waiting for submission, preview when funds will arrive, and follow returns as they happen.
Bare metal APIs
Every detail directly from FedACH
return_reason_codeUnderstand exactly why a payment came back with 80+ specific codes.
trace_numberGive recipients proof that a payment was sent.
company_nameCraft predictable statement descriptors for recipients.
addendumAttach remittance details like an invoice number.
standard_entry_class_codeDeclare the kind of payment you’re sending, like a direct deposit (PPD).
FedACH for developers
1await summitspan.achTransfers.create({
2 amount: 10000,
3 account_id: "account_in71c4amph0vgo2qllky",
4 routing_number: "101050001",
5 account_number: "987654321",
6 individual_name: "Ian Crease",
7 statement_descriptor: "July Consulting",
8 company_name: "ACME Corp",
9});Create ACH debits and credits programmatically.
- Same-day ACH by default, at every window.
- Returns are correlated automatically.
- Webhooks keep you current on the transfer lifecycle.
1await summitspan.inboundACHTransfers.transferReturn({
2 inbound_ach_transfer_id: "inbound_ach_transfer_fhcxk5huskwhmt7iz0gk",
3 reason: "payment_stopped",
4});Return inbound transfers you didn’t authorize.
- Use any valid Nacha return reason.
- Returns are sent at the next window.
- The original transfer is linked automatically.
1await summitspan.inboundACHTransfers.decline({
2 inbound_ach_transfer_id: "inbound_ach_transfer_tdrwqr3fq9gnnq49odev",
3 reason: "insufficient_funds",
4});Decline debits during the preview window.
- Decide within an hour of receipt.
- Declines never touch your balance.
- Automate decisions with your own rules.
1await summitspan.externalAccounts.create({
2 routing_number: "101050001",
3 account_number: "987654321",
4 description: "Landlord",
5 account_holder: "business",
6});Store counterparty details once and reuse them.
- Reference external accounts by ID.
- Prenote to validate details before sending.
- Keep sensitive numbers out of your database.
Learn how Nacha works
ACH uses a fixed-width file format called Nacha. Learn what’s in each file and what you can customize.
101 010500011 6022140762301311601A094101SUMMITSPAN 5200OTTO GROUP 1602214076CCDInv237483 120220120220 1065503680000001 101050001 877362798 0000000000378289 SARAH OGAZI006550368 000000182000000080137163116000000000000000000000123456789 06550368000000190000010000020000000801371631160000000000000 9999999999999999999999999999999999999999999999999999999999
Banking for builders
Everything you need and nothing you don’t
Direct connections to the networks for money movement. Accounts that open instantly. Unopinionated building blocks that don’t force you into legacy patterns.
Originate ACH credits and debits, validate account numbers with prenotes, and store frequently used details.
Learn more RadialMail branded checks anywhere in the US with one API call, or deposit checks via API or the dashboard.
Learn more GradientThe Federal Reserve’s newest rail. Move money 24/7/365 with any participating bank.
Learn more ArraySend money to accounts at most major banks in seconds, not days.
Learn more Push-to-CardSend funds to eligible Visa and Mastercard debit cards in seconds, any time.
Learn more WiresThe original instant money transfer. Send money anywhere, any time Fedwire is open.
Learn more Bank AccountsFlexible account structures with unlimited account numbers.
Learn more CardsIssue custom cards, approve authorizations in real time, and set your own limits.
Learn more