Payables and Receivables in NetSuite

Payables and Receivables in NetSuite with the Routable API

Oracle NetSuite is a very powerful platform, and consequently, it has a great amount of data it needs to perform its tasks, particularly as it applies to Payables and Receivables in the Routable API. In this article, we'll go through the extra data that Routable needs to link Payables and Receivables to NetSuite.

The Payable's ledger object

As with Xero and QuickBooks Online, there is a ledger object on a NetSuite Payable or Receivable that carries extra data related to the integration.

In addition to the standard memo field, the NetSuite metadata object contains several fields to tie the payment to various categories within NetSuite. For each of these objects, you can obtain the ID by querying NetSuite's own API, or by just looking in the URL query parameters when you open the object in NetSuite (see the screenshot below). The NetSuite fields on a Payable include:

  • account is an object containing the ID of an account in the NetSuite Chart of Accounts.
  • class is an object containing the ID of a class for the Payable or Receivable in NetSuite, such as "Furniture" or "Hardware"
  • location is an object containing the ID of a NetSuite location - perhaps a store number or a warehouse.
  • posting_period is an object containing the ID of a NetSuite posting period, such as "Fiscal Year 2022".

To obtain these IDs, you can make a call to our accounting software object list endpoint. We strongly recommend caching these results in your system.

If you have added additional custom fields in NetSuite that are configured for Payables and/or Receivables, they will appear in this object as well.

Payable / Receivable Line Items

In addition to the Payable or Receivable itself, the Line Items contained within a Payable or Receivable also have specialized fields for NetSuite integration. They are stored in the ledger object on each LineItem. They include:

  • amortiz_start_date and amortiz_end_date are for tracking the amortization progress for a line item.
  • amortization_residual stores the estimated value of the line item at the end of the lease term or useful life.
  • amortization_sched is an object containing the ID of the Amortization Schedule in NetSuite that determines the timing of depreciation of this line item.
  • class is an object containing the ID of a class for the individual line item in NetSuite, such as "Furniture" or "Hardware".
  • customer_ref allows you to enter a reference to a customer to track this line item against.
  • department is an object containing the ID of a department in NetSuite, such as "Engineering" or "Sales".
  • location is an object containing the ID of a NetSuite location - perhaps a store number or a warehouse.

Additional fields, such as custom fields you have configured for a line item in NetSuite, may also appear here.

Custom Fields

To add custom fields to your payloads, you'll need to use the internal ID of the custom field from NetSuite. So, if the Payable or Receivable has an internal ID of foo, and we want to give it a value of bar, we'll add it to the Create a Payable or Create a Receivable payload like this:

{ 
  "acting_team_member": "...",
  "line_items": [ { "...": "..." } ],
  "ledger": { 
    "account": "...",
    "foo": "bar"
  }
  ...
}

Custom fields can be added this way both on the Payable or Receivable itself, or on an individual line_item, depending on how the custom field is structured in NetSuite. A custom field on a line item goes inside the ledger field of an individual line item object:

{ 
  "acting_team_member": "...",
  "line_items": [ 
    {  
       "...": "...",
       "ledger": { 
          "foo": "bar"
       }
    } 
  ],
  "ledger": { 
    "account": "..."
  }
  ...
}

To obtain the internal IDs for your custom fields, you'll need to turn on the ability to see them in NetSuite itself. Here's an article from the Oracle NetSuite documentation explaining how to do this.