ACH Trace ID in Transfer API Responses
Transfer objects in the Dots API now include an ach_trace_id field that exposes the NACHA trace ID for ACH and RTP payouts. You can use this identifier to investigate payout status with your bank or when working with Dots support on ACH/RTP transfer issues.
The ach_trace_id field is specific to ACH and RTP payouts. Other payment rails (PayPal, Venmo, international bank transfers, crypto) do not expose a trace ID in this field.
Dashboard visibility
The ach_trace_id is also visible in the Dots dashboard. When viewing a completed ACH or RTP transfer in the Transfer details view, you can see the trace ID alongside other transfer information.
Field definition
The ach_trace_id field appears on transfer objects returned from /v2/transfers/* endpoints:
{
"id": "transfer_abc123",
"status": "completed",
"amount": 1000,
"ach_trace_id": "1234567890123456",
...
}The field is a string containing the NACHA trace ID assigned by the payment rail when processing your ACH or RTP transfer. This identifier is useful when:
Investigating a completed payout that hasn't appeared in the recipient's bank account
Coordinating with your bank to locate funds
Working with Dots support on a transfer investigation
Nullable behavior
The ach_trace_id field may be null in the following cases:
The transfer used a payment rail other than ACH or RTP
The transfer predates the JSONB backfill that populated trace IDs for historical records
The transfer failed before reaching the rail stage where a trace ID is assigned
Webhook payloads
The ach_trace_id field is included in terminal webhook events:
transfer.completedtransfer.failed
Both events include the full transfer object with ach_trace_id in the payload:
{
"event": "transfer.completed",
"transfer_id": "transfer_abc123",
"transfer": {
"id": "transfer_abc123",
"status": "completed",
"ach_trace_id": "1234567890123456",
...
},
"metadata": {}
}For transfer.failed events, ach_trace_id may be null if the transfer failed before a trace ID was assigned by the rail.
Legacy compatibility
For backward compatibility, transfers that predate the JSONB backfill may surface the trace ID value from an internal payout_trace_id field. Your integration should treat ach_trace_id as the authoritative field—any legacy field handling is internal to Dots.
If you previously accessed payout_trace_id through other means, migrate to using ach_trace_id from the public API response.
Using the trace ID with support
When contacting Dots support about an ACH or RTP payout issue, include the ach_trace_id (if available) along with the transfer ID and amount. This helps support trace the transfer through the payment network.
For payee-facing recovery guidance, see Where is my money?.