Fishbowl API

From Fishbowl
Jump to navigation Jump to search

Just as Fishbowl integrates with QuickBooks, we allow developers to integrate their own software with Fishbowl. The Fishbowl API allows users to log in from third-party applications. These applications can run certain procedures when connected to the Fishbowl Server. This provides developers with the connection they need to customize applications to meet your business's specific needs. The API also has the responsibility to validate and process the requests that are sent to it from third-party integrated applications and send the response back.

The Fishbowl API provides integration with the data and objects stored on the Fishbowl Server. When scoping out a potential application, it would be beneficial to view the developer tools and the documentation below to verify that the data and requests you need are accessible through the API. All of the documentation and examples were obtained by using the demo Fishbowl database and the Fishbowl Developer Hook.

When connecting to the Fishbowl API you will need to create a socket connection to the port. We do have some very basic sample code available to demonstrate how to make a connection in Java and C#.

More objects, requests, and examples, are available in the Fishbowl Legacy API and in the new Fishbowl REST API.


Request Syntax Brief Description
Execute Query ExecuteQueryRq Returns results of sql query in csv format
Import ImportRq Request allows you to import data
Import Headers ImportHeaderRq Returns a list of import header for a specific import.
Issue SO IssueSORq Issues an SO.
Login LoginRq Logs a user in to Fishbowl.
Logout LogoutRq Logs a user out of Fishbowl.
QuickShip QuickShipRq Will do an automatic pick, pack, and ship on a SO.
Void SO VoidSORq This request is used to void sales orders
Fishbowl Legacy API More objects, requests, and examples, are available in the Fishbowl Legacy API.
Fishbowl REST API More objects, requests, and examples, are available in the Fishbowl REST API.


Each example listed below will include 3 things.

  1. A description
  2. The generic syntax
  3. An example using the demo database included with Fishbowl

Execute Query

Description: Returns results of sql query in csv format. The ExecuteQueryRq can run a query saved in the Icon.Data.png Data module, or a custom query included in the request. The Icon.Data.png Data module may be helpful for testing queries and extracting queries based on reports.
Note: Using this request requires the user to have view access to the Icon.Data.png Data module.


	"ExecuteQueryRq": {
		"Query": "",
		"Name": ""


	"FbiJson": {
		"Ticket": {
			"Key": "xTypHT/pZXZy6Re+H66kSA=="
		"FbiMsgsRq": {
			"ExecuteQueryRq": {
				"Name": "PartList"


	"FbiJson": {
		"Ticket": {
			"Key": "xTypHT/pZXZy6Re+H66kSA=="
		"FbiMsgsRq": {
			"ExecuteQueryRq": {
				"Query": "SELECT part.num AS partNumber, part.description AS partDescription FROM part"

Description: This request allows you to run any of the CSV imports. The type is formatted as "ImportCsvName" with no spaces. Data columns can be blank, but each data column must be represented in the request. The example uses the import to edit/add a vendor. It is best practice to always include the header rows when importing data.


	"ImportRq": {
		"Type": "",
		"Rows": ["",


	"FbiJson": {
		"Ticket": {
			"Key": "xTypHT/pZXZy6Re+H66kSA=="
		"FbiMsgsRq": {
			"ImportRq": {
				"Type": "ImportVendors",
				"Rows": {
					"Row": [
					"\"Monroe Bike Company\",\"Williams Bike Company - 210\",\"Williams Bike Company\",\"50\",\"true\",\"Wall st.\",\"New York\",\"NY\",\"21004\",\"UNITED STATES\",\"212-321-5643\",,,,,,,,,,,,,"

Import Headers

Description: This request allows you to get the headers of an import. The type is formatted as "ImportCsvName" with no spaces. The example retrieves the import headers of the Add Inventory import.


	"ImportHeaderRq": {
		"Type": ""


	"FbiJson": {
		"Ticket": {
			"Key": "xTypHT/pZXZy6Re+H66kSA=="
		"FbiMsgsRq": {
			"ImportHeaderRq": {
				"Type": "ImportAddInventory"

Description: Will issue a sales order.


	"IssueSORq": {
		"SONumber": ""


	"FbiJson": {
		"Ticket": {
			"Key": "xTypHT/pZXZy6Re+H66kSA=="
		"FbiMsgsRq": {
			"IssueSORq": {
				"SONumber": "50054"

Description: Logs a user in to Fishbowl. The IAID can be any randomly generated integer value as long as the IAID and the IAName are unique per Fishbowl server. The algorithm required to encrypt the password is Base64.encode(MD5.hash(password))


	"LoginRq": {
		"IAID": 111111,
		"IADescription": "",
		"UserName": "",
		"IAName": "",
		"UserPassword": ""


	"FbiJson": {
		"Ticket": {
			"Key": ""
		"FbiMsgsRq": {
			"LoginRq": {
				"IAID": 1234,
				"IADescription": "Fishbowl Developer Hook an API test application for Fishbowl Inventory",
				"UserName": "admin",
				"IAName": "Fishbowl Developer Hook",
				"UserPassword": "ISMvKXpXpadDiUoOSoAfww=="

Description: Logs a user out of Fishbowl.


	"LogoutRq": ""


	"FbiJson": {
		"Ticket": {
			"Key": "xTypHT/pZXZy6Re+H66kSA=="
		"FbiMsgsRq": {
			"LogoutRq": ""

Description: Will do an automatic pick, pack, and ship on a SO.


	"QuickShipRq": {
		"SONumber": "",
		"FulfillServiceItems": boolean,
		"ErrorIfNotFulfilled": boolean,
		"ShipDate": ""



	"FbiJson": {
		"Ticket": {
			"Key": "xTypHT/pZXZy6Re+H66kSA=="
		"FbiMsgsRq": {
			"QuickShipRq": {
				"SONumber": "50052"

Description: This request is used to void sales orders


	"VoidSORq": {
		"SONumber": ""



	"FbiJson": {
		"Ticket": {
			"Key": "xTypHT/pZXZy6Re+H66kSA=="
		"FbiMsgsRq": {
			"VoidSORq": {
				"SONumber": "50052"

Legacy Objects

Legacy Object Syntax Description
Account Account Contains information on accounts in the database
Address Address An object containing information about an address.
Carton Carton Stores information about a carton.
Carrier Carrier This object just contains the carrier's name.
Contacts Contacts Object that contains Contact Information.
Contact Information ContactInformation Contains information about a contact.
Credit Card CreditCard Contains information about a credit card
Customer Customer Contains Customer information.
Custom Field CustomField Stores the details about a Fishbowl custom field.
Custom List CustomList A list of Custom Items.
Custom List Item CustomListItem Stores Custom Items.
Discount Discount Stores discount information.
Location Location Represents a Location.
Location Group LocationGroup Compacts Location Group name and ID into one object.
Memo Memo Stores additional notes on requests and objects.
Order History OrderHistory This is a storage object for Order History.
Parameter Parameter Contains name and value module parameters.
Part Part Stores information about a part.
Payment Payment Contains payment information.
Pick Pick Stores all the information associated with a pick.
Pick Item PickItem Stores information about items that are involved in a pick.
Product Product Contains information about a Product
Purchase Order PurchaseOrder Object used to store data concerning a Purchase Order.
Receipt Receipt Contains receipt information.
Report Report Contains report information.
Report Tree ReportTree Contains report tree information.
Sales Order SalesOrder Stores sales order information.
Sales Order Item SalesOrderItem Stores sales order item information.
Shipping Shipping Contains the details about a shipment.
Tag Tag A number that helps describe a location.
Tax Rate TaxRate Stores tax rate information.
Tracking Tracking This simply contains the TrackingItem objects.
Tracking Item TrackingItem This object contains the information being tracked.
UOM UOM Contains Unit of Measure details.
UOM Conversion UOMConversion Stores conversion information for a Unit of Measure.
User User User details.
Vendor Vendor Contains all the vendor information and details.
Vendor Part Number VendorPartNumber Object that contains the Vendor Part Number.
Work Order WO Contains all the work order information and details.
Work Order Item WOItem Stores information about an item found in a work order.

Legacy Requests

Legacy Request Syntax Brief Description
Add Inventory AddInventoryRq Adds initial inventory of a part.
Add Memo AddMemoRq Adds a memo to the specified object.
Add SO Item AddSOItemRq Adds an item to an SO.
Add WO Item AddWorkOrderItemRq Adds an item to an existing open WO.
Build BOM BuildBomRq Create an MO for a specific BOM.
Calculate SO CalculateSORq Returns a potential order summary (unsaved)
Carrier List CarrierListRq Returns the shipping carriers stored in the database
Close Short SO CloseShortSORq This request is used to close short a sales order
Customer Get CustomerGetRq Returns the information for a specific customer
Customer List CustomerListRq Returns every customers information
Customer Name List CustomerNameListRq Returns the names of all customers
Cycle Count CycleCountRq Used to correct inventory amounts.
Email Report EmailReportRq Emails a report to a given email address
Export List ExportListRq Returns a list of available exports
Export ExportRq Returns export data of specified export type
Execute Query ExecuteQueryRq Returns results of sql query in csv format
Get Account Balance GetAccountBalanceRq Returns QuickBooks value for the specified account.
Get Account List GetAccountListRq Returns a list of all QuickBooks accounts
Get Part List GetPartListRq Returns a list of Parts based on the search parameters.
Get Pick GetPickRq Return the information on a specified pick
Get PO List GetPOListRq Returns all PO from a given location
Get Receipt GetReceiptRq Returns receipt information.
Get Ship List GetShipListRq Request a list of Shipments.
Get Shipment GetShipmentRq Returns the shipment details about a specified shipment.
Get Ship Now List GetShipNowListRq Requests a list of Shipments ready to ship.
Get SO List GetSOListRq Returns a list of SOs based on the search parameters.
Get Total Inventory GetTotalInventoryRq Returns the number of an item at a specific location.
Import List ImportListRq Returns a list of your import options.
Import ImportRq Request allows you to import data
Import Headers ImportHeaderRq Returns a list of import header for a specific import.
Inventory Quantity InvQtyRq Returns details and quantity of a specified part or list of parts.
Issue SO IssueSORq Issues an SO.
Light Part List LightPartListRq Returns a simple list of parts.
Load SO LoadSORq Returns information on a Sales Order.
Location Group LocationGroupRq Returns a list of the location groups.
Location List LocationListRq Returns a list of locations and their details.
Location Query LocationQueryRq Returns information on a location.
Login LoginRq Logins a user in or out of Fishbowl.
Make Payment MakePaymentRq Makes a payment on the specified order.
Move MoveRq Moves items from one specified location to another.
Part Cost PartCostRq Obtains the average cost.
Part Get PartGetRq Returns details about a part.
Part Query PartQueryRq Also returns details about a part.
Pick Query PickQueryRq Returns all picks specified.
Print Report PrintReportRq Prints the default report for the specified module.
Product Get ProductGetRq Requests detailed information about the product.
Product Price ProductPriceRq Request the best price for a given product.
Quick Ship QuickShipRq Will do an automatic pick, pack, and ship on a SO.
Receiving List ReceivingListRq Returns information about orders in the receiving module.
Save Discount SaveDiscountRq Saves and updates discounts.
Save Image SaveImageRq Saves an image to the associated object.
Save Pick SavePickRq Enables the fulfillment and adjustments to picks.
Save Receipt SaveReceiptRq Updates receipt stored data.
Save Report SaveReportRq Save the report data.
Save Shipment SaveShipmentRq Save the shipment data.
Save UPC SaveUPCRq Request permits the change of a product UPC.
Set Def Part Loc SetDefPartLocRq Enables you to change the default location of a part.
Save Tax Rate SaveTaxRateRq Saves and updates tax rates.
Ship ShipRq Ships an order
UOM UOMRq Requests a list of UOMs.
Vendor Get VendorGetRq Retrieves a vendor object.
Vendor List VendorListRq Requests a list of all vendors.
Vendor Name List VendorNameListRq Requests a list of all vendor names.
Void Shipment VoidShipmentRq This request is used to void shipments that are in a packed status or shipped status.
Void SO VoidSORq This request is used to void sales orders.

Best practices

First integration

When you first connect your application you will receive a status code 1110 or 1112 which indicates you will need to approve your application.

Creating Orders

In order to create orders through the API, the recommended method is to use the ImportRq and specify the type of ImportSalesOrder. The ImportRq allows you to run any of the CSV imports, and specifying the ImportSalesOrder defines that you want to import a Sales Order. Going through the ImportRq is the fastest, easiest, and safest way to create an order in Fishbowl.

Updating Orders

Occasionally once an order has been entered into the system it requires some changes. If you are changing order details such as the shipping or billing address you can use the ImportRq using a type of ImportSalesOrderDetails in order to update order level information. If you need to make changes to order items through the API then you will need to run the VoidSORq in order to close the current order and recreate the order using the order creation process above. The VoidSORq will either void out the order or close it short if it has already been partially shipped. The easiest way to ensure track-ability in this case is to append "-1" or "-2" to the end of the order number. This will allow you to search back the original order number in Fishbowl and find the historical orders.

Troubleshooting tips

The following general tips may be helpful for developers when troubleshooting an issue. Completing these steps will often reveal the source of the problem and eliminate the need to submit a developer ticket.

  • Use the Icon.Data.png Data module to examine the database tables.
  • Run eve.bat and client.bat and examine the output or errors displayed in the command window.
    Eve.bat example.png
  • To increase the logging level of the server, double-click the server tray icon and then click the Logging tab. Debug is the recommended level to show all relevant data. Trace may overwhelm the logging with too much information.
    Increase Logging Level.png
  • If an error is being displayed in Fishbowl, clicking the Double Arrow Icon Button.png Double Arrow button will display more information about the error.
  • It is highly recommended to have a separate installation of Fishbowl that can be used for testing and troubleshooting purposes.
  • NOTE: Fishbowl can assist in troubleshooting issues, but will not debug your code for you.

Error codes

Code Error
900 Success! This API request is deprecated and could be removed in the future.
1000 Success!
1001 Unknown message received.
1002 Connection to Fishbowl server was lost.
1003 Some requests had errors.
1004 There was an error with the database.
1009 Fishbowl server has been shut down.
1010 You have been logged off the server by an administrator.
1011 Not found.
1012 General error.
1013 Dependencies need to be deleted
1014 Unable to establish network connection.
1015 Your subscription date is greater than your server date.
1016 Incompatible database version.
1100 Unknown login error occurred.
1109 This integrated application registration key is already in use.
1110 A new integrated application has been added to Fishbowl. Please contact the Fishbowl administrator to approve this integrated application.
1111 This integrated application registration key does not match.
1112 This integrated application has not been approved by the Fishbowl administrator.
1120 Invalid username or password.
1130 Invalid ticket passed to Fishbowl server.
1131 Invalid ticket key passed to Fishbowl server.
1140 Initialization token is not correct type.
1150 Request was invalid.
1161 Response was invalid.
1162 The login limit has been reached for the server's key.
1163 Your API session has timed out.
1164 Your API session has been logged out.
1200 Custom field is invalid.
1300 Was not able to find the memo _________.
1301 The memo was invalid.
1400 Was not able to find the order history.
1401 The order history was invalid.
1500 The import was not properly formed.
1501 That import type is not supported.
1502 File not found.
1503 That export type is not supported.
1504 Unable to write to file.
1505 The import data was of the wrong type.
1506 Import requires a header.
1600 Unable to load the user.
1601 Unable to find the user.
2000 Was not able to find the part _________.
2001 The part was invalid.
2002 Was not able to find a unique part.
2003 BOM had an error on the part
2100 Was not able to find the product _________.
2101 The product was invalid.
2102 The product is not unique
2120 The kit item was invalid.
2121 The associated product was invalid.
2200 Yield failed.
2201 Commit failed.
2202 Add initial inventory failed.
2203 Cannot adjust committed inventory.
2204 Invalid quantity.
2205 Quantity must be greater than zero.
2206 Serial number _________ already committed.
2207 Part _________ is not an inventory part.
2208 Not enough available quantity in _________.
2209 Move failed.
2210 Cycle count failed.
2300 Was not able to find the tag number _________.
2301 The tag was invalid.
2302 The tag move failed.
2303 Was not able to save tag number _________.
2304 Not enough available inventory in tag number _________.
2305 Tag number _________ is a location.
2400 Invalid UOM.
2401 UOM _________ not found.
2402 Integer UOM _________ cannot have non-integer quantity.
2403 The UOM is not compatible with the part's base UOM.
2404 Cannot convert to the requested UOM
2405 Cannot convert to the requested UOM
2406 The quantity must be a whole number.
2407 The UOM conversion for the quantity must be a whole number.
2500 The tracking is not valid.
2501 Part tracking not found.
2502 The part tracking name is required.
2503 The part tracking name _________ is already in use.
2504 The part tracking abbreviation is required.
2505 The part tracking abbreviation _________ is already in use.
2506 The part tracking _________ is in use or was used and cannot be deleted.
2510 Serial number is missing.
2511 Serial number is null.
2512 Duplicate serial number.
2513 The serial number is not valid.
2514 Tracking is not equal.
2515 The tracking _________ was not found in location _________' or is committed to another order.
2600 Location _________ not found.
2601 Invalid location.
2602 Location group _________ not found.
2603 Default customer not specified for location _________.
2604 Default vendor not specified for location _________.
2605 Default location for part _________ not found.
2606 _________ is not a pickable location.
2607 _________ is not a receivable location.
2700 Location group not found.
2701 Invalid location group.
2702 User does not have access to location group _________.
3000 Customer _________ not found.
3001 Customer is invalid.
3002 Customer _________ must have a default main office address.
3100 Vendor _________ not found.
3101 Vendor is invalid.
3300 Address not found
3301 Invalid address
4000 There was an error loading PO _________.
4001 Unknown status _________.
4002 Unknown carrier _________.
4003 Unknown QuickBooks class _________.
4004 PO does not have a PO number. Please turn on the auto-assign PO number option in the purchase order module options.
4005 Duplicate order number _________.
4006 Cannot create PO with configurable parts: _________.
4007 The following parts were not added to the purchase order. They have no default vendor:
4008 Unknown type _________.
4100 There was an error loading SO _________.
4101 Unknown salesman _________.
4102 Unknown tax rate _________.
4103 Cannot create SO with configurable parts: _________.
4104 The sales order item is invalid: _________.
4105 SO does not have a SO number. Please turn on the auto-assign SO numbers option in the sales order module options.
4106 Cannot create SO with kit products
4107 A kit item must follow a kit header.
4108 Sales order cannot be found.
4200 There was an error loading BOM _________.
4201 Bill of materials cannot be found.
4202 Duplicate BOM number _________.
4203 The bill of materials is not up to date and must be reloaded.
4204 Bill of materials was not saved.
4205 Bill of materials is in use and cannot be deleted
4206 requires a raw good and a finished good, or a repair.
4207 This change would make this a recursive bill of materials.
4210 There was an error loading MO _________.
4211 Manufacture order cannot be found.
4212 No manufacture order was created. Duplicate order number _________.
4213 The manufacture order is not up to date and must be reloaded.
4214 Manufacture order was not saved.
4215 Manufacture order is closed and cannot be modified.
4220 There was an error loading WO _________.
4221 Work order cannot be found.
4222 Duplicate work order number _________.
4223 The work order is not up to date and must be reloaded.
4224 Work order was not saved.
4300 There was an error loading TO _________.
4301 Unknown status _________.
4302 Unknown carrier _________.
4303 Transfer order cannot be found.
4304 TO does not have a TO number. Please turn on the auto-assign TO number option in the Transfer Order module options.
4305 Duplicate order number _________.
4306 Unknown type _________.
4307 Transfer order was not saved.
4308 The transfer order is not up to date and must be reloaded.
5000 There was a receiving error.
5001 Receive ticket invalid.
5002 Could not find a line item for part number _________.
5003 Could not find a line item for product number _________.
5004 Not a valid receive type.
5005 The receipt is not up to date and must be reloaded.
5006 A location is required to receive this part. Part num: _________
5007 Cannot receive or reconcile more than the quantity ordered on a TO.
5008 Receipt not found _________.
5100 Pick invalid
5101 Pick not found _________.
5102 Pick not saved.
5103 An order on pick _________ has a problem.
5104 Pick item not found _________.
5105 Could not finalize pick. Quantity is not correct.
5106 The pick is not up to date and must be reloaded.
5107 The part in tag _________ does not match part _________.
5108 Incorrect slot for this item. Item must be placed with others for this order.
5109 Wrong number of serial numbers sent for pick.
5110 Pick items must be started to assign tag.
5111 Order must be picked from location group _________.
5112 The item must be picked from _________.
5200 Shipment invalid
5201 Shipment not found _________.
5202 Shipment status error
5203 Unable to process shipment.
5204 Carrier not found _________.
5205 The shipment _________ has already been shipped.
5206 Cannot ship order _________. The customer has a ship hold.
5207 Cannot ship order _________. The vendor has a ship hold.
5300 Could not load RMA.
5301 Could not find RMA.
5400 Could not take payment.
5500 Could not load the calendar.
5501 Could not find the calendar.
5502 Could not save the calendar.
5503 Could not delete the calendar.
5504 Could not find the calendar activity.
5505 Could not save the calendar activity.
5506 Could not delete the calendar activity.
5507 The start date must be before the stop date.
6000 Account invalid
6001 Discount invalid
6002 Tax rate invalid
6003 Accounting connection failed
6005 Accounting system not defined
6006 Accounting brought back a null result
6007 Accounting synchronization error
6008 The export failed
6009 Fishbowl and Quickbooks multiple currency features don't match
6010 The data validation for the export has failed.
6011 Accounting integration is not configured. Please reintegrate.
6100 Class already exists
7000 Pricing rule error
7001 Pricing rule not found
7002 The pricing rule name is not unique
8000 Unknown FOB _________.