Bitfreighter API (1.0)

Download OpenAPI specification:Download

Overview

The Bitfreighter API is an HTTP API that allows you to integrate your system with Bitfreighter.

Warning The Bitfreighter API will make additive changes that can break client code if built too strictly. Enums can have new values added, and new fields can be added to objects. It is recommended to build clients that are resilient to these changes.

Authentication

EDI

Use standard Bearer token authentication. The token can by obtained by reaching out to your Bitfreighter Customer Success representative.

Send the token as a header in the following format:

Content-Type: application/json
Authentication: Bearer <token>
Security Scheme Type: HTTP
HTTP Authorization Scheme: bearer

LiveQuote

LiveQuote auth works seperately from the EDI endpoints. It uses an Oauth 2.0 Client Credentials workflow. These credentials can also be obtained by reaching out to your Bitfreighter Customer Success representative.

First, obtain an token from our authentication server. The authentication server takes your client_id and client_secret as basic auth, and requires the following key/value pairs to be sent over as Form URL Encoded.

Key Value
grant_type client_credentials
scope https://api.bitfreighter.com/live_quote
POST https://bitfreighter.auth.us-east-2.amazoncognito.com/oauth2/token
Authentication: Basic <client_id:client_secret base64 encoded>
Content-Type: application/form-url-encoded

POST BODY:
<see form url encoded table above>

If done properly, the response will look like the following:

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
  "expires_in": 3600,
  "token_type": "Bearer"
}

Send the access_token as a header in the following format:

Content-Type: application/json
Authentication: Bearer <token>
Security Scheme Type: HTTP
HTTP Authorization Scheme: bearer

CHANGELOG

1.0

2025-04-02

  • added the abliity to add a reason to the AppointmentUpdate event

2025-02-25

  • Changed Note type from enum to string length 3
  • We now support top level references in ShipmentStatusUpdate and AppointmentUpdate Events

2024-11-13

  • All addresses now accept any 3 letter code for country
  • [LQ - Custom Pricing Engine] Added 'fuel' and 'fuel_strategy_response' to data response object
  • [LQ - Custom Pricing Engine] Removed 'line_haul_rate' field from data object

2024-11-08

  • [LQ - Rate Request] added total_cargo_value.
  • [LQ - Custom Pricing Engine] Added cargo_value to outgoing request.

2024-10-25

  • [LQ - Custom Pricing Engine] Added new shipper object to outgoing request, moved shipper_identifier into shipper object, and renamed shipper_identifier to identifier
  • [LQ - Custom Pricing Engine] Added profile_name to shipper object

2024-10-02

  • Changed Equipment type from enum to string length 2

2024-09-30

  • Added new BillToParty, BillToAddress, which allows any country code for bill to parties
  • Added FlexAddress which allows 2 and 3 letter country codes for North America

2024-08-02

  • Added LiveQuote specific authentication documentation

2024-06-18

  • Added more accessorials to Rate Request

2024-06-10

  • Added an optional Rate Request Response API endpoint to allow shippers to communicate what bids they accept/reject

2024-06-05

  • Added field 'buy_it_now_price' to Rate Request and added possible value 'accept_buy_it_now` to Rate Request Success Response 'rate_type' enum

2024-05-20

  • Grouped EDI and LiveQuote endpoints under separate tags

2024-05-15

  • Removed custom Rate Request error structure in favor of common OpenAPI Error Response
  • Reworked Rate Request schema to match naming conventions used in existing EDI endpoints

2024-05-14

  • changed ShipmentStatusUpdate.reason.code and ReferenceNumber.type from enum types to string types

2024-04-11

  • added Rate Request action to documentation. This is a new public API that will be coming soon!

2024-03-22

  • added possible value 'delayed' to the ShipmentStatusUpdate.status enum
  • added field 'reason' to ShipmentStatusUpdate for sending status reasons

EDI Events

Typical Load Tender lifecycle

ShipperBitfreighterCarrierloopoptEDI 204LoadTender (webhook)Accept (API call)EDI 990ShipmentStatusUpdate (API call)EDI 214Invoice (API call)EDI 210ShipperBitfreighterCarrier

Events

Carrier Events

  • LoadTender - Motor Carrier Load Tender (EDI 204, B2A-01 = 00 or 02)
  • LoadTenderUpdate - Motor Carrier Load Tender Update (EDI 204, B2A-01 = 04 or 05)
  • LoadTenderCancel - Motor Carrier Load Tender Cancellation (EDI 204, B2A-01 = 01 or 03)

Shipper Events

Typical ShipmentStatusUpdate (214) events sequence

OriginStop 1Stop 2optloopoptloop{"status": "estimate", "stop": {"sequence_number": 1}}{"status": "delay", "reason": "AH", "stop": {"sequence_number": 1}}{"status": "enroute", "location": { ... }}{"status": "arrived", "stop": {"sequence_number": 1}}{"status": "departed", "stop": {"sequence_number": 1}}{"status": "estimate", "stop": {"sequence_number": 2}}{"status": "delay", "reason": "AH", "stop": {"sequence_number": 2}}{"status": "enroute", "location": { ... }}{"status": "arrived", "stop": {"sequence_number": 2}}{"status": "departed", "stop": {"sequence_number": 2}}OriginStop 1Stop 2

Accept Webhook

Request Body schema: application/json
type
required
string
Default: "Accept"
Value: "Accept"
required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner sending the message

required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner receiving the message

shipment_id
required
string (ShipmentId) <= 30 characters

Shipment identifier assigned by the shipper. This number is used on all load tenders, accept, decline, updates, cancellations and invoices

carrier_number
string or null (CarrierNumber) <= 30 characters

Carrier's Reference Number (PRO/Invoice)

mode
string (Mode)
Enum: "test" "production"

"test" or "production"

notes
string or null <= 600 characters
Default: ""

To transmit information in a free-form format, if necessary, for comment or special instruction

Request samples

Content type
application/json
{
  • "carrier_number": "CX-1234-5678",
  • "mode": "test",
  • "notes": "You'll need a lift-gate",
  • "receiver": {
    },
  • "sender": {
    },
  • "shipment_id": "1234567890",
  • "type": "Accept"
}

AppointmentUpdate Webhook

Request Body schema: application/json
type
required
string
Default: "AppointmentUpdate"
Value: "AppointmentUpdate"
required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner sending the message

required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner receiving the message

shipment_id
required
string (ShipmentId) <= 30 characters

Shipment identifier assigned by the shipper. This number is used on all load tenders, accept, decline, updates, cancellations and invoices

carrier_number
required
string or null (CarrierNumber) <= 30 characters

Carrier's Reference Number (PRO/Invoice)

required
object (ShipmentStatusStop)

Stop information for a load

required
(Appointment (Appointment.DateWindow (object) or Appointment.DateTimeWindow (object))) or DateTime (string) or Date (string)

Date and/or time of the appointment

mode
string (Mode)
Enum: "test" "production"

"test" or "production"

object or null (ShipmentStatusReason)

Indicating the reason a shipment status reason was transmitted (typically for delayed status)

Array of objects (ReferenceNumber) <= 10 characters
Default: []

Reference Numbers

Request samples

Content type
application/json
{
  • "carrier_number": "ABC1234567890",
  • "datetime": "2025-04-18T21:04:52.063421Z",
  • "mode": "test",
  • "reason": {
    },
  • "receiver": {
    },
  • "reference_numbers": [
    ],
  • "sender": {
    },
  • "shipment_id": "1234567890",
  • "stop": {
    },
  • "type": "AppointmentUpdate"
}

Decline Webhook

Request Body schema: application/json
type
required
string
Default: "Decline"
Value: "Decline"
required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner sending the message

required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner receiving the message

shipment_id
required
string (ShipmentId) <= 30 characters

Shipment identifier assigned by the shipper. This number is used on all load tenders, accept, decline, updates, cancellations and invoices

mode
string (Mode)
Enum: "test" "production"

"test" or "production"

reason
string or null

Short code indicating the decline reason

Examples, non-exhaustive:

  • "01" - Death of Principal Mortgagor
  • "09" - Distant Employment Transfer
  • "02" - Illness of Principal Mortgagor
  • "05" - Marital Difficulties
  • "03" - Illness of Mortgagor's Family Member
  • "06" - Curtailment of Income
  • "07" - Excessive Obligations - Same Income, Including Habitual Nonpayment of Debts
  • "08" - Abandonment of Property
  • "04" - Death of Mortgagor's Family Member
  • "019" - Casualty Loss
  • "060" - Servicer Pulling Servicing from Sub-Servicer as a Result of Default
  • "056" - Removed to Federal Court
  • "027" - Payment Dispute
  • "028" - Due on Transfer
  • "042" - Specified Time Period Completed
  • "064" - Member Resignation or Expulsion
  • "057" - Foreclosure Completed
  • "013" - Inability to Rent Property
  • "022" - Energy-Environment Cost
  • "038" - Lender Approval Not Required
  • "029" - Transfer of Ownership Pending
  • "045" - Facility Added
  • "051" - Vendor-Supplied Carrier Delay
  • "011" - Property Problem
  • "016" - Unemployment
  • "021" - Dissatisfied with Property
  • "018" - Bankruptcy
  • "026" - Payment Adjustment
  • "047" - Location Added
  • "024" - Auto Repairs
  • "044" - Triggered by Payment Increase
  • "023" - Servicing Problems
  • "036" - Automatic Conversion
  • "048" - Location Changed
  • "055" - Change of Venue Granted
  • "035" - Borrower Action
  • "053" - Notice of Term Enrollment
  • "015" - Default Detail
  • "025" - Extended Reasons
  • "010" - Neighborhood Problem
  • "061" - Consolidation, Extension, Modification (CEM)
  • "040" - Loan Reached Maturity
  • "058" - Servicing Rights Transferred to Non-member
  • "037" - Lender Approval Required
  • "050" - Internal Systems Problems
  • "020" - Moved - Vacated
  • "054" - Term Grade Report
  • "062" - Renewal and Extension
  • "017" - Business Failure
  • "014" - Military Service
  • "063" - Reinstatement - Loan Not Reassigned to Mortgage Electronic Registration System (MERS)
  • "031" - Unable to Contact Borrower
  • "046" - Facility Changed
  • "041" - Triggered by Interest Increase
  • "052" - Import Container Delay
  • "030" - Fraud
  • "059" - Investor is Pulling Servicing as a Result of Default
  • "012" - Inability to Sell Property
  • "049" - Merchandise Damaged or Destroyed
  • "039" - Owner-occupied Loan Outstanding
  • "043" - Transfer Without Written Notice
  • "API" - Application Incomplete
  • "A98" - Missed Pickup
  • "A22" - Package Missed Inbound Plane At Origin Station
  • "A03" - Incorrect Address
  • "A52" - No Requested Arrival Date
  • "A13" - Other
  • "A29" - Hold Changed To Delivery Package
  • "A11" - Business Closed
  • "A77" - Name Specified Does Not Match Account
  • "A23" - Customer Dropped Off Package After Aircraft Depart
  • "A01" - Missed Delivery
  • "AGD" - Anticipated Government-Caused Delay
  • "A75" - Invalid Account Format
  • "A17" - Customer Requested Future Delivery
  • "A07" - Refused by Consignee
  • "A51" - Carrier Keying Error
  • "A20" - Restricted Articles Unacceptable
  • "A41" - Standard Air Package
  • "A59" - Hold At Location
  • "A16" - Payment Received
  • "A27" - Driver Related
  • "A46" - Recipient Unavailable -- Delivery Delayed
  • "A85" - Customer-requested Early Delivery
  • "A09" - Damaged - Delivery Completed
  • "A63" - Puerto Rican Tax Authorities Holding Package
  • "A19" - Restricted Articles Incompatible
  • "A04" - Indirect Delivery
  • "A82" - Address Specified Does Not Match Account
  • "A28" - Package Missorted During Aircraft Unload
  • "A10" - Damaged - Delivery Not Completed
  • "A25" - Package Received At Destination Station Without Airbill
  • "A18" - Missort
  • "A14" - Returned to Shipper
  • "A38" - Detached Airbill
  • "A91" - Exceeds Service Limitations
  • "AFR" - Assignment Form Required
  • "ACC" - Actual Contractor-Caused Delay
  • "A64" - Non-FEC Broker Advised
  • "A40" - Shipper Related
  • "A78" - Item or Service Already Established, Cannot Add
  • "A99" - Alternate Carrier Delivered
  • "A61" - International Manifest
  • "ACD" - Anticipated Contractor-Caused Delay
  • "A49" - ODA/Cartage Agent
  • "A73" - Package Delivered Before Commitment
  • "A15" - Business On Strike
  • "A76" - Account Not Found
  • "A34" - Package Shipped From Overgoods
  • "A95" - Past Cutoff Time
  • "A36" - Holding In Overgoods
  • "A65" - Customs Release
  • "A06" - Address Corrected - Delivery Attempt
  • "A74" - Package Delivered After Commitment
  • "A81" - Item or Service Not Available on Requested Date
  • "ANL" - Agent Not Licensed
  • "A55" - Hold Due to Customs/Documentation
  • "A12" - Package Sorted To Wrong Route
  • "A53" - Shipper Changed Scheduled Shipment Date
  • "A80" - Item or Service Not Available
  • "A37" - Damaged Rewrapped In Hub
  • "A21" - Bulk Plane
  • "ANA" - Agent Not Appointed
  • "A08" - Not In On Delivery Completed
  • "A05" - Unable To Locate
  • "A33" - Other Carrier-Related
  • "A79" - Item or Service Not Established, Cannot Modify
  • "A32" - Aircraft Arrived Late In Hub
  • "A43" - Weather or Natural Disaster Related
  • "A26" - Consignee Related
  • "A30" - Mechanical Breakdown
  • "A50" - Improper International Paperwork
  • "A96" - Insufficient Pickup Time
  • "AGC" - Actual Government-Caused Delay
  • "ABN" - Abnormal
  • "A84" - Civil Event Related Delay
  • "A58" - Unable to Contact Recipient For Broker Information
  • "A24" - Accident
  • "A45" - Delivery Not Completed
  • "A42" - Holiday - Closed
  • "A02" - Release Signature or Release Number
  • "A83" - Unauthorized or Invalid Action
  • "A31" - Arrived In Station After Courier Dispatch
  • "A39" - Previous Stop
  • "B51" - Student on Suspension or Dismissal; Eligible to Apply for Re-entry
  • "B23" - Special certificate of completion
  • "B55" - Passed Screening
  • "B33" - Unreported - Information is not available in record
  • "B37" - Third Highest Honors
  • "B48" - Record being sent at request of student
  • "B56" - Better Features
  • "B31" - Not currently enrolled
  • "B47" - Requested record will not be sent; Institutional policy requires student release. Have student contact us
  • "B41" - Requested record will not be sent; Cannot identify student
  • "B50" - Requested record being sent
  • "B39" - Academic Probation
  • "B57" - Rating Changed
  • "B28" - Student is on suspension or dismissal
  • "B12" - Connecting Line or Cartage Pick-Up
  • "B26" - International diploma or certificate (such as International Baccalaureate)
  • "B13" - Held per Shipper
  • "B21" - Special education diploma
  • "B11" - Held for Protective Service
  • "B24" - General Education Development Diploma (GED)
  • "B09" - Receiving Time Restricted
  • "B54" - Passed Proficiency Test
  • "B44" - Part of requested record being sent; Remainder to be sent by hard copy
  • "B18" - Standard high school diploma
  • "B46" - Requested record will not be sent; Degree or Diploma not yet awarded
  • "BW2" - Bottom Well Cannot Handle Two or More Units
  • "BWW" - Bottom Well Cannot Handle Unit Assigned because of Width
  • "B02" - Appointment or Pre-Arranged Delivery Date
  • "B34" - Currently enrolled and courses in progress are included
  • "B45" - Requested record will not be sent; No record of student
  • "B20" - Vocational diploma
  • "B04" - Held for Payment
  • "B38" - Dropped
  • "BWT" - Bottom Well Cannot Handle Unit Assigned because of Type
  • "BWL" - Bottom Well Cannot Handle Unit Assigned because of Length
  • "B17" - Did not complete secondary school
  • "B08" - Improper Unloading Facility or Equipment
  • "B15" - Border Clearance
  • "B29" - Student is expelled (from PreK - grade 12)
  • "B36" - Second Highest Honors
  • "B22" - Certificate of completion or attendance
  • "B03" - Trap for Customer
  • "B25" - Other high school equivalency diploma
  • "B35" - Highest Honors
  • "B53" - Student Qualifies for Special Services
  • "B42" - Requested record will not be sent electronically; Paper copy will be sent
  • "B40" - Suspended
  • "B27" - Student is eligible to continue or return or both
  • "B07" - Dock Pick-Up
  • "B06" - Consignee Closed (Inventory, Vacation, Etc.)
  • "B32" - Previous enrollment. Used for entry or exit or both at school other than the sending school
  • "B43" - Requested record will not be sent; Have student contact us
  • "B05" - Held for Consignee
  • "B49" - Record being sent to replace one previously sent
  • "B01" - Reconsigned
  • "B14" - Missing Documents
  • "B52" - According to established regulations or statutes, the student is considered to be a 'dropout'
  • "B19" - Advanced or honors diploma
  • "B30" - Currently enrolled but courses in progress not included
  • "B16" - Road Conditions
  • "B10" - Order Notify
  • "BPR" - Better Performance
  • "CDE" - Clearance to Destination Exceeded
  • "C02" - Credit Hold
  • "C06" - Waiting Shipping Instructions
  • "CLA" - Collateral Assignment
  • "C12" - No Requested Arrival Time Provided To Carrier By Shipper
  • "C10" - Customs (Import/Export)
  • "CLP" - Contract or Lost Policy Statement Required
  • "CHA" - Changed Agent
  • "C03" - Suspended at Customer Request
  • "C04" - Customer Vacation
  • "C20" - Complete
  • "COS" - Cosmetic
  • "C17" - Coverage No Longer Required
  • "C09" - Cash Not Available from Consignee
  • "C07" - Waiting for Customer Specified Carrier
  • "C14" - Loan Refinanced, Insured by Insurer Receiving Report
  • "C05" - Customer Strike
  • "C15" - Loan Refinanced, Insured by Other Insurance Carrier
  • "CLR" - Clear - No motor vehicle violations
  • "CBD" - Changed Broker Dealer
  • "C08" - Collect on Delivery Required
  • "C19" - Court Probation
  • "C11" - No Requested Arrival Date Provided To Carrier By Shipper
  • "C16" - Loan Refinanced, No Insurance Required
  • "C13" - Loan Paid in Full
  • "CIE" - Conflict of Interest Exists
  • "CIM" - Check in Mail
  • "C01" - Waiting for Customer Pick-up
  • "C18" - No Outstanding Commitments
  • "D12" - Student withdrew to attend another public school in the same district
  • "D01" - Carrier Dispatch Error
  • "D03" - Student has attended a nonpublic school or home education program in- or out-of-state this year, but is entering a public school in this state for the first time this school year
  • "D62" - Graduate from a Technical Institute
  • "D57" - Returning Student Admitted to a New Program
  • "D05" - Student was received from a school in the same district
  • "D23" - Previously attended out-of-state public school but is entering a public school in this state for the first time this school year
  • "D56" - Exchange Student
  • "D53" - Graduate from a College
  • "D09" - Student was expected to attend a school but did not enter as expected for unknown reasons
  • "D20" - Student Withdrew to Attend a Non-Public School or Home Education Program In- or Out-of-State.
  • "D54" - Transfer from a University Program
  • "D10" - Student was promoted, retained, or transferred to another attendance-reporting unit in the same school
  • "D13" - Student withdrew to attend another public school in- or out-of-state
  • "D11" - Student was promoted, retained, or transferred to another school in the same district
  • "D27" - Placed in Next Grade After Expected Grade
  • "D55" - Graduate from a University Program
  • "D34" - Promoted
  • "D60" - Continuing Student Changing to a New Program
  • "D58" - Returning Student Admitted to the Same Program
  • "D63" - Transfer from a College
  • "D31" - Administratively Placed in a Higher Grade
  • "D08" - Student unexpectedly reentered the same school after withdrawing or being discharged
  • "D18" - Student Left School with a Special Certificate of Completion
  • "D07" - Student was received from a nonpublic school either in or out of the district or has returned after having been enrolled in a home education program; The student must have been enrolled previously in a public school this year
  • "D17" - Student Left School with a Certificate of Completion
  • "D19" - Student Left School with a State General Education Development (GED) High School Diploma
  • "D22" - Student has not entered any school in this or any other state this school year
  • "D06" - Student was received from another public school outside the district either in- or out-of-state
  • "D16" - Student Graduated from School with a Special Diploma
  • "D52" - Previously Applied
  • "D33" - Promotion Status not Applicable
  • "D28" - Placed in Transitional Program (K-1)
  • "D14" - Student Over Compulsory Attendance Age Left School Voluntarily with No Intention of Returning
  • "D51" - Currently Applying
  • "D32" - Academically Placed in a Higher Grade
  • "D25" - Reclassified Fully English Proficient
  • "D24" - Returned to Regular Education Program
  • "D26" - Retained in Current Grade
  • "D02" - Driver Not Available
  • "D59" - Returning or Continuing Student Changing to Unclassified or General or Unspecified Studies
  • "D15" - Student Graduated from School with a Standard Diploma
  • "D29" - Status Pending Completion of Summer School (K-12)
  • "D21" - Student withdrew from school due to hardship
  • "DEF" - Deferred Maintenance
  • "D61" - Special Permission
  • "D50" - Delayed
  • "D04" - Student was received from another attendance reporting unit in the same school
  • "D30" - Declined Services
  • "ENR" - Export Release Not Required
  • "EB4" - Graduated
  • "EB8" - Less Than Half-Time Enrollment
  • "EBA" - No Record Found
  • "EB3" - Withdrawn
  • "EB5" - Never Attended
  • "ERR" - Export Release Required
  • "EB9" - Approved Leave of Absence
  • "EB6" - Full-Time Enrollment
  • "EXD" - Excessive Dimension Cannot be Accepted
  • "EB1" - Deceased
  • "EB2" - Did not Attend this Semester
  • "EB7" - Half-Time Enrollment
  • "FZD" - Freeze Damage
  • "F74" - International Non-carrier Delay
  • "F73" - Non-express Clearance Delay
  • "FRB" - Failed to Release Billing
  • "FCS" - Flatcar Shortage
  • "HZM" - Hazardous Material Placement
  • "HIT" - Hit - At Least One Motor Vehicle Violation
  • "INF" - Incomplete - Final
  • "IBF" - Irrevocable Beneficiary
  • "INP" - Incomplete - In Progress
  • "INS" - Investment Selections
  • "IRS" - Internal Revenue Service Lien
  • "IOC" - Investment Objectives Changed
  • "IV2" - Material Shipped Between Intermediate Points
  • "INC" - Incarceration
  • "IV1" - Failed Material Returned for Repair
  • "JVP" - Juvenile Policy
  • "JOW" - Joint Ownership
  • "LSH" - Load Shifted
  • "LIQ" - Liquidated
  • "MIN" - Mental Incompetency
  • "MPW" - Middle Position Cannot Handle Unit Assigned because of Width
  • "MPL" - Middle Position Cannot Handle Unit Assigned because of Length
  • "MP2" - Middle Position Cannot Handle Two or More Units
  • "MPT" - Middle Position Cannot Handle Unit Assigned because of Type
  • "MAS" - Multiple Assignments
  • "MTC" - Multiple Conditions
  • "NNM" - No New Money (IRA > 70 1/2)
  • "NWD" - No Withdrawals
  • "NGP" - New Generation Product
  • "NOR" - Normal
  • "P03" - Production Falldown
  • "P04" - Held for Full Carrier Load
  • "POA" - Power of Attorney
  • "P07" - Producer Vacation
  • "P06" - Producer Strike
  • "P05" - Waiting Test Results
  • "PAL" - Pending Agent License
  • "P01" - Processing Delay
  • "PAA" - Pending Agent Appointment
  • "P02" - Waiting Inspection
  • "RFR" - Replacement Form Required
  • "RUN" - Reason Unknown
  • "RFM" - Railroad Failed to Meet Schedule
  • "REJ" - Rejected - Insufficient or Incorrect Information
  • "SCH" - Surrender Charges
  • "SFR" - Surrender Form Required
  • "STM" - Storm
  • "SOW" - Shipment Overweight
  • "S01" - Delivery Shortage
  • "SGR" - Signature Required
  • "T03" - Trailer Not Available
  • "TPW" - Top Position Cannot Handle Unit Assigned because of Width
  • "TIL" - Temporary Income Loss
  • "T05" - Trailer Class Not Available
  • "T04" - Trailer Not Usable Due to Prior Product
  • "TP2" - Top Position Cannot Handle Two or More Units
  • "TPL" - Top Position Cannot Handle Unit Assigned because of Length
  • "TDR" - Train Derailment
  • "THT" - Theft
  • "T06" - Trailer Volume Not Available
  • "TPT" - Top Position Cannot Handle Unit Assigned because of Type
  • "T07" - Insufficient Delivery Time
  • "T02" - Tractor, Conventional, Not Available
  • "T01" - Tractor With Sleeper Car Not Available
  • "UND" - Undetermined
  • "UCD" - Unknown Cause of Delay
  • "VAN" - Vandalism
  • "WAD" - Waiting Application Delivery
  • "W13" - Product Allocation Exceeded
  • "W08" - Material Shortage
  • "W04" - On Hold
  • "W14" - Improperly Sized Order
  • "W01" - Out of Stock
  • "WLC" - Weight Limit of Car Exceeded
  • "W16" - Insufficient Equipment Space
  • "W07" - Inventory Discrepancy
  • "W03" - Booking Location Request
  • "WTP" - Waiting for Proof
  • "W15" - Wrong Equipment
  • "W12" - Inbound Carrier Failure
  • "W02" - Equipment Cut
  • "WLT" - Weight Limit of Truck Exceeded
  • "W06" - Receiving Location Request
  • "W10" - Diverted Item
  • "W09" - Substitution
  • "W11" - Loading Error
  • "W05" - Order Discrepancy
  • "WLW" - Weight Limit of Well Exceeded
  • "ZZZ" - Mutually Defined

Request samples

Content type
application/json
{
  • "mode": "production",
  • "reason": "ABN",
  • "receiver": {
    },
  • "sender": {
    },
  • "shipment_id": "1234567890",
  • "type": "Decline"
}

Invoice Webhook

Request Body schema: application/json
type
required
string
Default: "Invoice"
Value: "Invoice"
required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner sending the message

required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner receiving the message

shipment_id
required
string (ShipmentId) <= 30 characters

Shipment identifier assigned by the shipper. This number is used on all load tenders, accept, decline, updates, cancellations and invoices

invoice_id
required
string <= 100 characters

Invoice ID

billing_date
required
string <date> (Date)

Date as ISO8601 formatted string

required
object or null (Payment)

Payment info for a load tender

required
Array of objects (LineItem) [ 1 .. 999 ] characters

Line items

required
Array of objects (InvoiceStop) [ 2 .. 999 ] characters

Pickup and dropoff stop completion dates

object or null (Party)

Bill-To party (if different from shipper)

object or null (CorrectionIndicator)

Invoice correction reason

currency
string or null (Currency)
Enum: "USD" "CAD" "MXN"

Currency

Array of objects (InvoiceItem) [ 1 .. 999 ] characters
Default: []

Items

mode
string (Mode)
Enum: "test" "production"

"test" or "production"

net_amount
string or null (Decimal) [ 1 .. 30 ] characters ^-?\d+(.\d+)?$

Net amount if different than total of line items

Array of objects (ReferenceNumber) <= 10 characters
Default: []

Reference Numbers

Request samples

Content type
application/json
{
  • "billing_date": "2025-04-18",
  • "correction_indicator": {
    },
  • "currency": "USD",
  • "invoice_id": "INV-123",
  • "items": [
    ],
  • "line_items": [
    ],
  • "mode": "test",
  • "net_amount": "123.45",
  • "payment": {
    },
  • "receiver": {
    },
  • "sender": {
    },
  • "shipment_id": "1234567890",
  • "stops": [
    ],
  • "type": "Invoice"
}

LoadTender Webhook

Request Body schema: application/json
type
required
string
Default: "LoadTender"
Value: "LoadTender"
required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner sending the message

required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner receiving the message

shipment_id
required
string (ShipmentId) <= 30 characters

Shipment identifier assigned by the shipper. This number is used on all load tenders, accept, decline, updates, cancellations and invoices

required
Array of objects (LoadTenderStop) [ 2 .. 999 ] characters

Pickup and dropoff stop details

object or null (Party)

Bill-To party (if different from shipper)

Array of objects (Charge)
Default: []

Charges pertaining to the shipment

object or null (Party)

Contact (if different from shipper)

object or null (Equipment)

Equipment Details

Array of objects (LoadTenderItem)
Default: []

Information about items to be shipped

mode
string (Mode)
Enum: "test" "production"

"test" or "production"

Array of objects (Note) <= 10 characters
Default: []

Notes or special instructions for the Load

object or null (Payment)

Payment info for a load tender

Array of objects (ReferenceNumber) <= 10 characters
Default: []

Load Reference Numbers

respond_by
string or null <date-time> (DateTime)

Date/Time as ISO8601 formatted string

object or null (Party)

Shipper who is tendering the load

Request samples

Content type
application/json
{
  • "charges": [
    ],
  • "equipment": {
    },
  • "items": [
    ],
  • "mode": "test",
  • "notes": [
    ],
  • "payment": {
    },
  • "receiver": {
    },
  • "respond_by": "2025-04-18T21:04:52.063421Z",
  • "sender": {
    },
  • "shipment_id": "1234567890",
  • "stops": [
    ],
  • "type": "LoadTender"
}

LoadTenderCancel Webhook

Request Body schema: application/json
type
required
string
Default: "LoadTenderCancel"
Value: "LoadTenderCancel"
required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner sending the message

required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner receiving the message

shipment_id
required
string (ShipmentId) <= 30 characters

Shipment identifier assigned by the shipper. This number is used on all load tenders, accept, decline, updates, cancellations and invoices

mode
string (Mode)
Enum: "test" "production"

"test" or "production"

Request samples

Content type
application/json
{
  • "mode": "test",
  • "receiver": {
    },
  • "sender": {
    },
  • "shipment_id": "1234567890",
  • "type": "LoadTenderCancel"
}

LoadTenderUpdate Webhook

Request Body schema: application/json
type
required
string
Default: "LoadTenderUpdate"
Value: "LoadTenderUpdate"
required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner sending the message

required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner receiving the message

shipment_id
required
string (ShipmentId) <= 30 characters

Shipment identifier assigned by the shipper. This number is used on all load tenders, accept, decline, updates, cancellations and invoices

required
Array of objects (LoadTenderStop) [ 2 .. 999 ] characters

Pickup and dropoff stop details

object or null (Party)

Bill-To party (if different from shipper)

Array of objects (Charge)
Default: []

Charges pertaining to the shipment

object or null (Party)

Contact (if different from shipper)

object or null (Equipment)

Equipment Details

Array of objects (LoadTenderItem)
Default: []

Information about items to be shipped

mode
string (Mode)
Enum: "test" "production"

"test" or "production"

Array of objects (Note) <= 10 characters
Default: []

Notes or special instructions for the Load

object or null (Payment)

Payment info for a load tender

Array of objects (ReferenceNumber) <= 10 characters
Default: []

Load Reference Numbers

respond_by
string or null <date-time> (DateTime)

Date/Time as ISO8601 formatted string

object or null (Party)

Shipper who is tendering the load

Request samples

Content type
application/json
{
  • "charges": [
    ],
  • "equipment": {
    },
  • "items": [
    ],
  • "mode": "test",
  • "notes": [
    ],
  • "payment": {
    },
  • "receiver": {
    },
  • "respond_by": "2025-04-18T21:04:52.063421Z",
  • "sender": {
    },
  • "shipment_id": "1234567890",
  • "stops": [
    ],
  • "type": "LoadTenderUpdate"
}

ShipmentStatusUpdate Webhook

Request Body schema: application/json
type
required
string
Default: "ShipmentStatusUpdate"
Value: "ShipmentStatusUpdate"
required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner sending the message

required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner receiving the message

shipment_id
required
string (ShipmentId) <= 30 characters

Shipment identifier assigned by the shipper. This number is used on all load tenders, accept, decline, updates, cancellations and invoices

carrier_number
required
string or null (CarrierNumber) <= 30 characters

Carrier's Reference Number (PRO/Invoice)

status
required
string
Enum: "arrived" "departed" "enroute" "delayed" "estimate"
datetime
required
string <date-time> (DateTime)

Date/Time of update

object or null (Location)

Location Information

mode
string (Mode)
Enum: "test" "production"

"test" or "production"

object or null (ShipmentStatusReason)

Indicating the reason a shipment status reason was transmitted (typically for delayed status)

Array of objects (ReferenceNumber) <= 10 characters
Default: []

Reference Numbers

object or null (ShipmentStatusStop)

Stop information for a load

Request samples

Content type
application/json
{
  • "carrier_number": "ABC1234567890",
  • "datetime": "2025-04-18T21:04:52.063421Z",
  • "location": {
    },
  • "reason": {
    },
  • "receiver": {
    },
  • "reference_numbers": [
    ],
  • "sender": {
    },
  • "shipment_id": "1234567890",
  • "status": "arrived",
  • "stop": {
    },
  • "type": "ShipmentStatusUpdate"
}

Sending EDI Events

Send event

Authorizations:
None
Request Body schema: application/json
required

Event

type
required
string
Default: "Accept"
required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner sending the message

required
TradingPartnerRef.BF (object) (TradingPartner)

Trading Partner receiving the message

shipment_id
required
string (ShipmentId) <= 30 characters

Shipment identifier assigned by the shipper. This number is used on all load tenders, accept, decline, updates, cancellations and invoices

carrier_number
string or null (CarrierNumber) <= 30 characters

Carrier's Reference Number (PRO/Invoice)

mode
string (Mode)
Enum: "test" "production"

"test" or "production"

notes
string or null <= 600 characters
Default: ""

To transmit information in a free-form format, if necessary, for comment or special instruction

Responses

Response Schema: application/json
event_id
required
string

Unique ID for this event. Will be returned on any subsequent Error events coorelating with this event

Request samples

Content type
application/json
Example
{
  • "carrier_number": "CX-1234-5678",
  • "mode": "test",
  • "notes": "You'll need a lift-gate",
  • "receiver": {
    },
  • "sender": {
    },
  • "shipment_id": "1234567890",
  • "type": "Accept"
}

Response samples

Content type
application/json
{
  • "event_id": "F-22jsppb3tJYRIAAidi"
}

CSV Formats

CSV Formats Specification

Example CSV file

customer_id,shipment_id_number,...
123,SID1,...
456,SID2,...

LoadTender (204)

Field name Type Description
customer_id
required
integer
shipment_id_number
required
string length: 1..30
po_number string length: 1..80
item_number string length: 1..48
item_description string length: 1..50
item_qty integer
item_total_weight decimal (dd.dd, e.g. 12.34)
handling_qty integer
pickup_date
required
date (ISO8601, YYYY-MM-DD, e.g. 2024-01-02)
pickup_appointment_time time (HH:MM, e.g. 12:34)
shipper_name
required
string length: 1..60
shipper_street_1
required
string length: 1..55
shipper_street_2 string length: 1..55
shipper_city
required
string length: 2..30
shipper_state
required
string length: 2
shipper_postal_code string length: 3..15
shipper_country_code
required
string length: 2..3
delivery_date
required
date (ISO8601, YYYY-MM-DD, e.g. 2024-01-02)
delivery_appointment_time time (HH:MM, e.g. 12:34)
delivery_name
required
string length: 1..60
delivery_street_1
required
string length: 1..55
delivery_street_2 string length: 1..55
delivery_city
required
string length: 2..30
delivery_state
required
string length: 2
delivery_postal_code string length: 3..15
delivery_country_code
required
string length: 2..3
base_rate
required
decimal (dd.dd, e.g. 12.34)
fuel decimal (dd.dd, e.g. 12.34)
equip_type string length: 2
equip_length string length: 2..5
temp decimal (dd.dd, e.g. 12.34)
reference_XXX string replace XXX with qualifier

ShipmentStatusUpdate (214)

Field name Type Description
customer_id
required
integer
shipment_id_number
required
string length: 1..30
carrier_number string length: 1..80
status
required
string one of APPOINTMENT, ENROUTE, ARRIVED, DEPARTED, DELIVERED
stop_type
required
string one of PICKUP, DELIVERY
stop_sequence_number
required
integer
location_name
required
string
city
required
string length: 2..30
state
required
string length: 2
country
required
string length: 3
latitude float
longitude float
status_date
required
date (ISO8601, YYYY-MM-DD, e.g. 2024-01-02)
status_time
required
time (HH:MM, e.g. 12:34)
reference_XXX string replace XXX with qualifier

LiveQuote

Rate Request

Request a real time rate for a shipment from a carrier

Request Body schema: application/json
required

RateRequest

external_reference_id
required
string

A unique identifier for the web request - helpful for debugging with the API caller

required
Array of objects (RateRequestStop)

An array of stops for the shipment

mode
required
string
Enum: "truckload" "ltl" "airfreight" "rail"

The transportation mode requested for the shipment

is_all_in
required
boolean

If true, Bitfreighter will return an all in rate with fuel costs included. Otherwise, Bitfreighter will return the line haul rate

equipment
required
Array of strings (Equipment)
Items Enum: "van" "reefer" "flatbed"

An array of equipment types that could be used for delivering the shipment

shipper_identifier
required
string

unique identifier for the shipper

accessorials
Array of strings (Accessorials)
Items Enum: "drydraught" "hazardous" "insurance" "liftgate" "lowboy" "pallet jack" "plated trailer" "safe transport of food" "stepdeck" "straps" … 3 more

An array of additional services requested for the shipment

buy_it_now_price
number

The rate in USD a carrier may accept for instant booking

external_load_reference_id
string

A unique identifier for the load. This is useful for helping identify what requests are tied to a particular load.

integration
string

Recommended.
The integration that is making the request. Please contact Bitfreighter when developing your integration for more information.

total_cargo_value
number

The sum total value of all cargo in the shipment. USD only.

object

The total distance of the shipment

object

The total volume of the shipment

object

The total weight of the shipment

Responses

Response Schema: application/json
outcome
required
string
Enum: "success" "no_rate_available"

The outcome of the rate request

object

The quote response data returned from the rate request. This will not be present if the outcome is 'no_rate_available' or 'error'

message
string

A message describing the outcome of the rate request. This is only provided when the outcome is 'no_rate_available' or 'error'

Request samples

Content type
application/json
{
  • "accessorials": [
    ],
  • "buy_it_now_price": 0,
  • "equipment": [
    ],
  • "external_load_reference_id": "string",
  • "external_reference_id": "string",
  • "integration": "string",
  • "is_all_in": true,
  • "mode": "truckload",
  • "shipper_identifier": "string",
  • "stops": [
    ],
  • "total_cargo_value": 1250.5,
  • "total_distance": {
    },
  • "total_volume": {
    },
  • "total_weight": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string",
  • "outcome": "success"
}

Rate Request Response

Respond to a Rate Request

Request Body schema: application/json
required

RateRequestResponse

quote_id
required
string

The quote ID provided by the rate_request endpoint

status
required
string
Enum: "accepted" "rejected"

The determination the shipper made on behalf of this quote

Responses

Response Schema: application/json
outcome
required
string
Value: "success"

The outcome of the rate request

message
string

A message describing the outcome of the response.

Request samples

Content type
application/json
{
  • "quote_id": "string",
  • "status": "accepted"
}

Response samples

Content type
application/json
{
  • "message": "string",
  • "outcome": "success"
}

Pricing

Fetch Truck Rate

Defines an interface into a customer's custom pricing tool. Note that this defines an API contract that will be consumed Bitfreighter - the implementer will provide Bitfreighter with their Oauth 2.0 server for authorization, and the URL that Bitfreigher will post the request body (disregard the URL defined above)

Request Body schema: application/json
required

CustomPricingEngineRequest

quote_id
required
string

The ID for this quote in Bitfreighter

required
Array of objects (RateRequestStop)

An array of stops for the shipment

mode
required
string
Enum: "truckload" "ltl" "airfreight" "rail"

The transportation mode requested for the shipment

equipment
required
string (EquipmentType)
Enum: "van" "reefer" "flatbed"

The selected equipment type Bitfreighter has determined based off the incoming request and your settings.

required
object

Information on the shipper

accessorials
Array of strings (Accessorials)
Items Enum: "drydraught" "hazardous" "insurance" "liftgate" "lowboy" "pallet jack" "plated trailer" "safe transport of food" "stepdeck" "straps" … 3 more

An array of additional services requested for the shipment

available_equipment_types
Array of strings (EquipmentType)
Items Enum: "van" "reefer" "flatbed"

The full list of requested equipment types that are acceptable for this shipment

buy_it_now_price
number or null

A price provided by the shipper that can be accepted immediately. If the final quote generated by Bitfreighter is lower than this price, Bitfreighter will automatically accept this load on your behalf.

cargo_value
number or null

The cargo value of the shipment in USD.

comments
string or null

Comments from the integration. If available, this could be provided either as freeform text, or a stringified JSON object.

object

The total distance of the shipment

object or null

The total volume of the shipment

object or null

The total weight of the shipment

Responses

Response Schema: application/json
outcome
required
string
Enum: "success" "no_rate_available"

The outcome of the custom pricing engine request

object

The custom pricing response data. This will not be present if the outcome is 'no_rate_available'

message
string

A message describing the outcome of the request. This is only provided when the outcome is 'no_rate_available'

Request samples

Content type
application/json
{
  • "accessorials": [
    ],
  • "available_equipment_types": [
    ],
  • "buy_it_now_price": 0,
  • "cargo_value": 0,
  • "comments": "This is a freeform comment, but a \"{\"stringified\":\"json object\"}\" might be provided instead",
  • "equipment": "van",
  • "mode": "truckload",
  • "quote_id": "132651209",
  • "shipper": {
    },
  • "stops": [
    ],
  • "total_distance": {
    },
  • "total_volume": {
    },
  • "total_weight": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "string",
  • "outcome": "success"
}

DataDriver Schemas

These schemas describe the JSON data stored for each row within a 'Chunk' file available via DataDriver. The files will be stored in NDJSON format so each line in the file will be a JSON object that adheres to one of these schemas. Let us know if you don't see the data you need here so we can add it.

Quote

accessorials
required
Array of strings (Accessorials)
Default: []

Additional services requested for the shipment

Examples, non-exhaustive: "drydraught", "hazardous", "insurance", "liftgate", "lowboy", "pallet jack", "plated trailer", "safe transport of food", "stepdeck", "straps", "tanker endorsement", "tarps", "team drivers"

required
Array of objects

List of bids placed for this quote

required
object
Default: {}

Prices determined for the quote

equipment
required
string (Equipment)

An equipment type that could be used for delivering the shipment

Examples, non-exhaustive: "van", "reefer", "flatbed"

ingested_at
required
string <date-time> (DateTime)

The Date/Time the quote was ingested by Bitfreighter as an ISO8601 formatted string.

quote_id
required
string

A Bitfreighter identifier for this quote.

required
Array of objects

List of statuses

required
Array of objects (RateRequestStop)

An array of stops for the shipment

event_id
string

A unique sequential identifier for the event.

external_load_reference_id
string or null

A unique identifier for the load.

external_reference_id
string or null

A unique identifier of the request.

replaced_by_quote_id
string or null

This field may contain the ID of a quote that represents an updated version of this quote. For example, some LiveQuote integrations publish updates to auctions or loads. In this context, Bitfreighter creates a new quote for the new information and updates the origin quote with the new quote's ID in the this field.

object or null

The Shipper Profile associated with this quote.

object or null

The total distance of the shipment

object or null

The total weight of the shipment

won_at
string or null <date-time> (DateTime)

The Date/Time the quote was won as an ISO8601 formatted string. This will be null if the Quote has not been won.

{
  • "accessorials": [
    ],
  • "bids": [
    ],
  • "costs": {
    },
  • "equipment": "flatbed",
  • "event_id": "01J2C82S0R00000000000004AV",
  • "external_load_reference_id": "7c3e24a6-4355-4fe5-8748-1939bc7f296e",
  • "external_reference_id": "a86a2da1-5758-44ba-9681-2db1aed1444f",
  • "ingested_at": "2024-07-09T17:18:55+0000",
  • "quote_id": "4443",
  • "shipper_profile": {
    },
  • "statuses": [
    ],
  • "stops": [
    ],
  • "total_distance": {
    },
  • "total_weight": {
    },
  • "won_at": "2024-07-09T15:10:31+0000"
}

DataDriver Destinations

DataDriver integrates with various storage solutions and data warehouses, including:

File Storage

  • Amazon S3
  • Azure Blob Storage
  • Google Cloud Storage
  • SFTP

Data Warehouses

  • Amazon Redshift
  • Databricks
  • Google BigQuery
  • Snowflake