AP Records: Tai → Third Party

Sync carrier and vendor bills approved in Tai out to your accounting system — via the BillCreateUrl webhook for live delivery or the GET /Bills?SyncStatus=None batch endpoint as backup.

What this is for

Every bill approved in Tai — freight bills, commission bills, third-party service charges — is a payable that your accounting system needs to know about so vendor balances stay accurate, check runs go out on time, and 1099 reporting is complete at year-end. This flow gets each bill from Tai into your AP system the moment it's approved, with a batch safety net for anything the webhook misses.

Common downstream uses: creating a vendor invoice record in your ERP, queuing a check for the next payment run, feeding a carrier-payment platform like TriumphPay or HaulPay, or updating a factoring reserve.

Delivery — Webhook (live)

HOOK  BillCreateUrl → POST {your-registered-url}

Fires the moment a bill is created in Tai. Register the URL as an IntegrationSourceParameter on your integration source. Note: this covers freight bills; commission bills have a separate CommissionBillCreateUrl webhook if you need to handle them differently.

Example payload — real shape returned by the API

{
  "billId": 18042026,
  "payerOrganization": {
    "organizationId": 40750,
    "name": "Acme Brokerage LLC",
    "address": {
      "streetAddress": "111 Broker Way",
      "streetAddressTwo": "",
      "city": "LONG BEACH",
      "state": "CA",
      "zipCode": "90802",
      "country": "USA"
    },
    "billToAddress": {
      "streetAddress": "111 Broker Way",
      "streetAddressTwo": "",
      "city": "LONG BEACH",
      "state": "CA",
      "zipCode": "90802",
      "country": "USA"
    },
    "phone": "",
    "mobile": "",
    "fax": "+15625550100",
    "parentIds": ",30843,",
    "referenceNumber": "",
    "modifiedById": 774705,
    "modifiedByName": "Broker Admin",
    "organizationType": "LSP",
    "modifiedDate": "2017-09-27T20:58:13.697+00:00",
    "createdDate": "2017-09-27T20:58:13.697+00:00"
  },
  "vendor": {
    "vendorId": 903421,
    "name": "Estes Express Lines",
    "vendorType": "Carrier",
    "remitToAddress": {
      "streetAddress": "PO Box 25612",
      "streetAddressTwo": "",
      "city": "Richmond",
      "state": "VA",
      "zipCode": "23260",
      "country": "USA"
    },
    "phone": "+18043211000",
    "notes": "",
    "modifiedDate": "2026-09-04T19:36:48.597"
  },
  "carrierMasterName": "ESTES EXPRESS LINES",
  "carrierMasterId": 1122,
  "billDate": "2026-09-04T00:00:00+00:00",
  "billNumber": "B-2026-091043",
  "billDueDate": "2026-10-04T00:00:00+00:00",
  "totalAmount": 1847.50,
  "totalAmountApplied": 0.00,
  "paymentStatus": "Unpaid",
  "billType": "Freight",
  "pendingUnapprovedBills": false,
  "externalSync": {
    "status": "None"
  },
  "lineItems": [
    {
      "billLineItemId": 40004912,
      "account": {
        "generalLedgerAccountId": 0,
        "accountCode": "Freight COS",
        "accountType": "Accounts Payable",
        "creditAccount": false
      },
      "quantity": 1,
      "description": "Linehaul",
      "amount": 1650.00,
      "externalSync": { "status": "None" },
      "calculationType": "Flat"
    },
    {
      "billLineItemId": 40004913,
      "account": {
        "generalLedgerAccountId": 0,
        "accountCode": "Fuel Surcharge",
        "accountType": "Accounts Payable",
        "creditAccount": false
      },
      "quantity": 1,
      "description": "Fuel",
      "amount": 197.50,
      "externalSync": { "status": "None" },
      "calculationType": "PercentageOfLinehaul"
    }
  ],
  "paymentLineItems": [],
  "shipmentId": 131382699
}

Key fields

FieldTypeNotes
billIdintTai's primary key for the bill. Use this in the sync callback.
payerOrganizationobjectThe broker's accounting org that owes the money.
vendorobjectWho's getting paid. vendor.vendorType = Carrier or Organization.
carrierMasterId / carrierMasterNameint / stringTai's FMCSA-derived carrier master reference — populated only when vendor.vendorType = Carrier. Use for DOT/MC cross-referencing.
billNumberstringVendor's invoice number.
billTypeenumFreight or Commission.
paymentStatusenumUnpaid, Partial Paid, Fully Paid, Over Paid, Open.
pendingUnapprovedBillsboolIf true, other pending bills exist against this shipment that haven't been approved yet.
externalSyncobject{status, date, referenceNumber} — status is None until you call PUT /Sync.
lineItems[]arrayCharge breakdown, each with a GL account block and calculationType (e.g. Flat, PercentageOfLinehaul).
paymentLineItems[]arrayEmpty when unpaid; populated with billPaymentLineItemId refs once payments have been applied.
shipmentIdintThe shipment this bill is for.

Delivery — Batch (backup or primary)

GET  /PublicApi/Accounting/v2/Bills?SyncStatus=None

View in API Reference →

ParameterValuesPurpose
SyncStatusNone, Complete, Failed, AlreadySynced, UpdatedFilter to unsynced records for the batch backup.

Sample response — array of bill objects, each with the full shape shown above.

Integration notes

  • Field casing: all responses are camelCase.
  • Vendor matching — three ways to cross-reference:
    • Natural key (recommended for carriers): if the vendor is a Carrier, use carrierMasterId or DOT number as the join. GET /PublicApi/Carriers/v2/Carriers/Dot/{dotNumber} returns the LSPCarrier for that DOT.
    • Mapping table: save Tai's vendor.vendorId alongside your ERP's vendor key on your side.
    • referenceNumber on the Vendor's Organization record: for organization-type vendors (vendor.vendorType = Organization), set your ERP's key as the referenceNumber on the Vendor's Organization record. Round-trips inline once set. Not available for Carrier vendor type.
  • A missing vendor is the most common cause of an AP sync failure — reconcile any unmatched vendors as they appear so they're on file before the next bill hits.
  • Line-item GL accounts: each lineItems[].account carries the GL account Tai wants the line posted to (Freight COS, Fuel Surcharge, etc.) — feeds directly into your ERP's expense posting.
  • calculationType: tells you how Tai computed the line — Flat, PercentageOfLinehaul, CWT, Mileage, Pallet, Pound, etc. Useful when your ERP wants to reconstruct the calculation.

Close the loop

Every attempted push — successful or failed — must be confirmed back to Tai so it's cleared from the batch queue.

PUT  /PublicApi/Accounting/v2/Bills/Sync

View in API Reference →

Full details, enum values, and retry semantics: Sync Status Updates.

When something goes wrong

Post the error text on the shipment so a Tai user can act on it. See Shipment Activity Logs.


Did this page help you?