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
| Field | Type | Notes |
|---|---|---|
billId | int | Tai's primary key for the bill. Use this in the sync callback. |
payerOrganization | object | The broker's accounting org that owes the money. |
vendor | object | Who's getting paid. vendor.vendorType = Carrier or Organization. |
carrierMasterId / carrierMasterName | int / string | Tai's FMCSA-derived carrier master reference — populated only when vendor.vendorType = Carrier. Use for DOT/MC cross-referencing. |
billNumber | string | Vendor's invoice number. |
billType | enum | Freight or Commission. |
paymentStatus | enum | Unpaid, Partial Paid, Fully Paid, Over Paid, Open. |
pendingUnapprovedBills | bool | If true, other pending bills exist against this shipment that haven't been approved yet. |
externalSync | object | {status, date, referenceNumber} — status is None until you call PUT /Sync. |
lineItems[] | array | Charge breakdown, each with a GL account block and calculationType (e.g. Flat, PercentageOfLinehaul). |
paymentLineItems[] | array | Empty when unpaid; populated with billPaymentLineItemId refs once payments have been applied. |
shipmentId | int | The shipment this bill is for. |
Delivery — Batch (backup or primary)
GET /PublicApi/Accounting/v2/Bills?SyncStatus=None
| Parameter | Values | Purpose |
|---|---|---|
SyncStatus | None, Complete, Failed, AlreadySynced, Updated | Filter 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
carrierMasterIdor DOT number as the join.GET /PublicApi/Carriers/v2/Carriers/Dot/{dotNumber}returns the LSPCarrier for that DOT. - Mapping table: save Tai's
vendor.vendorIdalongside your ERP's vendor key on your side. referenceNumberon the Vendor's Organization record: for organization-type vendors (vendor.vendorType = Organization), set your ERP's key as thereferenceNumberon the Vendor's Organization record. Round-trips inline once set. Not available forCarriervendor type.
- Natural key (recommended for carriers): if the vendor is a Carrier, use
- 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[].accountcarries 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
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.
Updated 23 days ago
