Accounting API

The Tai Software Online Accounting API utilizes REST architecture to seamlessly integrate your app with Tai's accounting features.

Let's get started. The Tai Accounting API gives you incredible flexibility to build the solutions you need to keep the accounting workflows in sync with the TMS. 

Workflow for Accounting API

There are 8 basic calls that can be utilized to get data into your application. Payments can be handled as either a pull from TMS or push into TMS.

The API is split into AR (Invoice) and  AP (Bill). Each section shares the same workflow. 

  1. TMS - Bill or Invoice Item is created in TMS
  2. API - GET API is called to retrieve pending items
  3. API - PUT Sync Status API is used to update items sync status. This step eliminates sync duplication
  4. TMS (Option 1) - Payment is posted in TMS
  5. API - GET Payment API is called to retrieve pending items
  6. API - PUT Sync Status API is used to update items sync status. This step eliminates sync duplication
  7. API (Option 2) - POST payment information from external accpouting application 

AR (Invoice) API Calls

  • GET Invoices
    • PUT InvoiceConfirmSync
  • GET InvoicePayment (Option 1)
    • PUT InvoicePaymentConfirmSync
  • POST InvoicePayment (Option 2)

AP (Bill) API Calls 

  • GET Bills
    • PUT BillConfirmSync
  • GET BillPayment (Option 1)
    • PUT BillPaymentConfirmSync
  • POST BillPayment (Option 2)

Carrier Bills

Get Bills


GET /publicapi/accounting/v2/Bills

{
  "syncStatus":"None",
  "BillStartDate": "2022-06-02T21:03:54.060Z"
}

The "Bills" endpoint will pull all available Bills that exist in the TMS. Two parameters can be passed in.

  • The "syncStatus" checks the sync status of the Items. Use "None" to capture Items that have not yet been pulled into your app. 
    • Available Statuses
      • None - Items that have not been synced (default value)
      • Complete - Items that have been synced
      • Failed - Items that failed to sync
  • The "BillStartDate" will show all Items with the selected status that exist as of the date passed in. You can think of this as from the date passed in moving forward. 
    • Date format must be: "2022-06-02T21:03:54.060Z"

PUT BillConfirmSync

PUT /publicapi/accounting/v2/BillConfirmSync

{
  "billId": 5959345,
  "status": "Complete",
  "transactionId": "test12345"
}

The "BillConfirmSync" endpoint will allow you to set the sync status on a specific bill. This would be the bill ID that was obtained in the Bills GET call. An optional transactionId is used to keep a record of an id that may have originated from your accounting app. 

  • Available Statuses
    • None - Items that have not been synced
    • Complete - Items that have been synced
    • Failed - Items that failed to sync

Customer Invoices

Get Invoices

GET /publicapi/accounting/v2/Invoices

{
  "syncStatus":"None",
  "invoiceStartDate": "2022-06-02T21:03:54.060Z"
}

The "Invoices" endpoint will pull all available Invoices that exist in the TMS. Two parameters can be passed in.

  • The "syncStatus" checks the sync status of the Items. Use "None" to capture Items that have not yet been pulled into your app. 
    • Available Statuses
      • None - Items that have not been synced (default value)
      • Complete - Items that have been synced
      • Failed - Items that failed to sync
  • The "InvoiceStartDate" will show all Items with the selected status that exist as of the date passed in. You can think of this as from the date passed in moving forward. 
    • Date format must be: "2022-06-02T21:03:54.060Z"

PUT InvoiceConfirmSync

PUT /publicapi/accounting/v2/InvoiceConfirmSync

{
"invoiceId": 5959345,
  "status": "Complete",
  "transactionId": "test12345"
}

The "InvoiceConfirmSync" endpoint will allow you to set the sync status on a specific invoice. This would be the invoice ID that was obtained in the Invoices GET call. An optional transactionId is used to keep a record of an id that may have originated from your accounting app. 

  • Available Statuses
    • None - Items that have not been synced
    • Complete - Items that have been synced
    • Failed - Items that failed to sync

Bill Payments

Bill payments can be processed by posting payments to the TMS or by pulling payments from the TMS. 

Option 1 (Recommended)

Payment information is entered into the TMS. Once entered into TMS the payment details are available for export

Option 2

Payment information is entered into an external accounting application. Once entered payments are pushed into the TMS. In this case, the TMS Bill id must be used to match payments into TMS.  

Get BillPayments (Option 1)

GET /publicapi/accounting/v2/BillPayments

{
  "syncStatus":"None",
  "syncStartDate": "2022-06-02T21:03:54.060Z"
}

The "BillPayments" endpoint will pull all available Bill Payments that exist in the TMS. Two parameters can be passed in.

  • The "syncStatus" checks the sync status of the Items. Use "None" to capture Items that have not yet been pulled into your app. 
    • Available Statuses
      • None - Items that have not been synced (default value)
      • Complete - Items that have been synced
      • Failed - Items that failed to sync
  • The "syncStartDate" will show all Items with the selected status that exist as of the date passed in. You can think of this as from the date passed in moving forward. 
    • Date format must be: "2022-06-02T21:03:54.060Z"

PUT BillPaymentConfirmSync (Option 1)

PUT /publicapi/accounting/v2/BillPaymentConfirmSync

{
  "billPaymentId": 761485,
  "status": "Complete",
  "transactionId": "test12345"
}

The "BillPaymentConfirmSync" endpoint will allow you to set the sync status on a specific bill payment. This would be the bill payment ID that was obtained in the Bill Payment GET call. An optional transactionId is used to keep a record of an id that may have originated from your accounting app. 

  • Available Statuses
    • None - Items that have not been synced
    • Complete - Items that have been synced
    • Failed - Items that failed to sync

POST BillPayment (Option 2)

POST /publicapi/accounting/v2/BillPayment

{
  "vendorId": 314351,
  "vendorType": "Carrier",
  "generalLedgerAccountId": 1,
  "checkDate": "2022-06-16T20:48:14.943Z",
  "checkRef": "TestCkRef",
  "checkMemo": "TestCkMemo",
  "checkType": "Cash",
  "lineItems": [
    {
      "billId": 6063812,
      "amountApplied": 20
    }
  ]
}

The "BillPayment" endpoint will allow you to pass in bill payments along with check ref (or any reference information) and check memo data. The vendorId, vendorType, and billId are required and can be obtained from the GET Bills endpoint.

  • checkType can have these values
    • Cash
    • Check
    • CreditCard
    • ACH
    • Other 

Invoice Payments

Invoice payments can be processed by posting payments to the TMS or by pulling payments from the TMS. 

Option 1 (Recommended)

Payment information is entered into the TMS. Once entered into TMS the payment details are available for export. 

Option 2

Payment information is entered into an external accounting application. Once entered payments are pushed into the TMS. In this case, the TMS Bill id must be used to match payments into TMS.  

Get InvoicePayments (Option 1)

GET /publicapi/accounting/v2/InvoicePayments

{
  "syncStatus":"None",
  "syncStartDate": "2022-06-02T21:03:54.060Z"
}

The "InvoicePayments" endpoint will pull all available Invoice Payments that exist in the TMS. Two parameters can be passed in.

  • The "syncStatus" checks the sync status of the Items. Use "None" to capture Items that have not yet been pulled into your app. 
    • Available Statuses
      • None - Items that have not been synced (default value)
      • Complete - Items that have been synced
      • Failed - Items that failed to sync
  • The "syncStartDate" will show all Items with the selected status that exist as of the date passed in. You can think of this as from the date passed in moving forward. 
    • Date format must be: "2022-06-02T21:03:54.060Z"

PUT InvoicePaymentConfirmSync (Option 1)

PUT /publicapi/accounting/v2/InvoicePaymentConfirmSync

{
  "billPaymentId": 761485,
  "status": "Complete",
  "transactionId": "test12345"
}

The "InvoicePaymentConfirmSync" endpoint will allow you to set the sync status on a specific invoice payment. This would be the invoice payment ID that was obtained in the Invoice Payment GET call. An optional transactionId is used to keep a record of an id that may have originated from your accounting app. 

  • Available Statuses
    • None - Items that have not been synced
    • Complete - Items that have been synced
    • Failed - Items that failed to sync

POST BillPayment (Option 2)

POST /publicapi/accounting/v2/InvoicePayment

{
"payerorganizationId": 314351,
"generalLedgerAccountId": 1,
  "checkDate": "2022-06-16T20:48:14.943Z",
  "checkRef": "TestCkRef",
"depositReferenceNumber": "TestCkMemo",
  "checkType": "Cash",
  "lineItems": [
    {
    "invoiceId": 6063812,
      "amountApplied": 20
    }
  ]
}

The "InvoicePayment" endpoint will allow you to pass in invoice payments along with check ref (or any reference information) and check memo data. The payerOrganizationId, and invoiceId are required and can be obtained from the GET Invoice endpoint.

  • checkType can have these values
    • Cash
    • Check
    • CreditCard
    • ACH
    • Other