Explore docs

The rails under American fleetsNow under your code

Issue fleet cards, fund wallets in minutes, advance cash against a load. The AtoB Partner API puts each of them one request away.

FLEET CARD •••• •••• •••• 4021 ABC TRUCKING LLC USDOT 1234567 CREDIT POST/applications status approved Telematics: truck 0.1 mi from pump $250,000 fraud guarantee

Issue a Fleet Card with one request.

Submit the carrier's application on their behalf. Because you have already vetted the business, partner applications skip bank linking and go straight to automated underwriting.

Then decide exactly where it works.

Diesel only. Whitelisted truck stops. Operating hours. A weekly ceiling. Controls live in the AtoB dashboard your customer already uses; the API gives you the switches a partner needs — suspend, deactivate, reactivate.

Every swipe posts to you, with the reason.

Merchant, gross and net amounts, authorization and transaction timestamps, and a decline_reason when there is one. Filter by time, amount or merchant.

Matched to the truck, not just the card.

Connect telematics and AtoB validates that the vehicle was at the pump before the fuel was. Fraud is guaranteed up to $250,000 on connected fleets.

Where spend management lives in the API.

Twenty-six endpoints cover the card's whole life: the application that creates it, the customer it belongs to, the drivers and vehicles it is assigned to, and every transaction it makes.

POST/external/partner/v1/applications

curl -X POST https://partner-api-sandbox.atob.com/external/partner/v1/applications \
  -H "Authorization: Bearer $ATOB_TOKEN" \
  -H 'content-type: application/json' \
  -d '{
        "customer_application": {
          "company_name":     "ABC Trucking LLC",
          "company_phone":    "+15551234567",
          "owner_name":       "John Smith",
          "owner_email":      "owner@trucking.com",
          "application_type": "credit",
          "dot_number":       "1234567",
          "fleet_type":       "heavy",
          "external_id":      "partner-app-12345"
        }
      }'

Five fields are required: company name and phone, owner name and email, and application_type. Poll GET /applications/{id}/status or subscribe to the webhook for approved.

Trucking runs 24/7Now the money does too

Every fleet in America runs on money that used to move on banking hours. The wallet is where your integration puts it, and where the driver takes it out — any day, any hour.

FLEET CARD WALLET BALANCE $0.00 USD POST/funding_requests $2,500.00 funding_request.updated succeeded Bank ••4410 $1,850.00 under 2 min

Fund a wallet in one call.

A funding request moves money from your float into the carrier's wallet. It is idempotent by reference_id: retry after a timeout and you get the same request back, never a second transfer.

The driver picks the rail. It lands in minutes.

Instant ACH, Zelle, Venmo, PayPal, push-to-card, Interac — or standard ACH and wire. Weekends and holidays included: 365 paydays a year instead of 260.

Every movement, with the balance after it.

Wallet activities give you amount, balance_after, activity_type and a description, in cents, in order. It is the ledger your reconciliation was going to rebuild anyway.

Where payments live in the API.

Your integration puts money into the wallet and reads what happens to it. AtoB moves it out on whichever rail the driver picks — that side is product, not API surface.

POST/external/partner/v1/funding_requests

curl -X POST https://partner-api-sandbox.atob.com/external/partner/v1/funding_requests \
  -H "Authorization: Bearer $ATOB_TOKEN" \
  -H 'content-type: application/json' \
  -d '{
        "funding_request": {
          "customer_id":  "550e8400-e29b-41d4-a716-446655440000",
          "amount":       250000,
          "currency":     "USD",
          "reference_id": "invoice_12345",
          "description":  "Advance for freight invoice #12345"
        }
      }'

# Later, on your webhook endpoint:
# { "type": "funding_request.updated", "data": { "status": "succeeded", ... } }

amount is in cents: 250000 is $2,500.00. Funding settles asynchronously — listen for funding_request.updated rather than polling.

Accept the load. Get the cash.

Every freight brokerage in America runs a second business it never asked for: fuel advances, hundreds of times a week. Trip Credit ends that.

Underwritten by AtoB, not the broker Factoring-friendly

Up to half the load, the second it is tendered.

Trip Credit advances up to 50% of the rate confirmation into the carrier's wallet — 24/7, with new carriers qualified in minutes. It arrives as a funding request, the same object your integration already understands.

Spend it where the load goes.

Fuel, tolls, lumpers, permits, repairs. Hand Fuel Listings the route's encoded polyline and it returns stations and live diesel prices along it, filtered to high-flow lanes if you ask.

Repaid in weekly installments, automatically.

One, two or four weeks, as low as 0.99% for a one-week term. Each installment comes back as a wallet adjustment — the reverse of a funding request — so your ledger sees both directions.

The risk sits with AtoB, not the broker.

Brokers stop running a lending desk and earn a revenue share instead. It is factoring-friendly: an advance never reduces the value of the factored invoice.

Where trip credit lives in the API.

Trip Credit is underwritten and offered by AtoB inside the driver's app. What the Partner API exposes is the rails it runs on: money in, money back, and the fuel along the way.

There is no dedicated Trip Credit endpoint in the public API today. Partners see advances and repayments as funding requests and wallet adjustments on the customer's wallet.

POST/external/partner/v1/fuel_listings/polyline

curl -X POST https://partner-api-sandbox.atob.com/external/partner/v1/fuel_listings/polyline \
  -H "Authorization: Bearer $ATOB_TOKEN" \
  -H 'content-type: application/json' \
  -d '{
        "encoded_polyline":                 "_p~iF~ps|U_ulLnnqC_mqNvxq`@",
        "buffer_distance_meters":           "1500",
        "filter_on_high_flow_diesel_lanes": "true",
        "customer_id":                      "550e8400-e29b-41d4-a716-446655440000"
      }'

# Repayment lands as the mirror image of the advance:
# POST /customers/{customer_id}/wallet_adjustments
# { "wallet_adjustment": { "amount": 40500, "currency": "USD", "reference_id": "tc-48812-w1" } }

Send the route as a Google-encoded polyline. buffer_distance_meters widens the corridor; pass customer_id to price with that customer's discounts.

Stop polling. Let us call you.

Every chapter above settles asynchronously. Register an endpoint and AtoB posts each event as it happens — signed with HMAC SHA-256 under the open Standard Webhooks spec, logged, and replayable with one click from app.atob.com/webhooks.

POSTyour-server.example.com/hooks/atob

import { Webhook } from "standardwebhooks";

const wh = new Webhook(process.env.ATOB_WEBHOOK_SECRET);

app.post("/hooks/atob", raw(), (req, res) => {
  let event;
  try {
    event = wh.verify(req.body, req.headers); // raw body, not parsed
  } catch {
    return res.sendStatus(400);
  }
  if (event.type === "funding_request.updated") settleAdvance(event.data);
  res.sendStatus(204); // reply fast, queue the work
});

Start in the sandbox today.

Ten guides, a full OpenAPI reference you can call from the page, and a sandbox that behaves like production. Credentials come from your AtoB partnership manager.

Sandbox
https://partner-api-sandbox.atob.com
Production
https://partner-api.atob.com
Audience
https://api.atob.com/external/partner/v1