NetSuite: Use SuiteQL to Get Transaction Relationships

Published on August 11, 2022.

I've been working on a project for a NetSuite client that uses the Multi-Partner Management feature. If you're not familiar with that feature, it essentially lets you associate multiple partners with a single customer and/or transaction.

In this post, I'll show how you can enable Multi-Partner Management, and more importantly, how you can use SuiteQL to query for the partners associated with a transaction.

Enabling Multi-Partner Management

To determine if the Multi-Partner Management feature is enabled, navigate to Setup > Company > Enable Features. The option is available on the CRM subtab in the Partners section.

Another way to determine the status of the Multi-Partner Management feature is to use a variation of the SuiteQL query that I wrote about in this blog post. For example:

SELECT
	Name,
	ID,
	IsAvailable,
	IsActive
FROM 
	CompanyFeatureSetup
WHERE
	ID = 'MULTIPARTNER'

Setting Up Partner Roles

If you're in the process of setting up the Multi-Partner Management feature, then you might be wondering how to configure the list of Partner Roles - the list that appears when you're associating partners to a customer or transaction.

You can manage that list by navigating to: Setup > Sales > CRM Lists. You can then use the filter function to display only the "Partner Category/Role" values.

Querying for Transaction Partners

The partner information for transactions is stored in a table named TransactionPartner. Here's a query against that table.

SELECT
	TransactionPartner.Partner AS PartnerID,
	Partner.CompanyName AS PartnerName,
	BUILTIN.DF( TransactionPartner.PartnerRole ) AS Role,
	TransactionPartner.IsPrimary,
	TransactionPartner.Contribution
FROM
	TransactionPartner
	INNER JOIN Partner ON
		( Partner.ID = TransactionPartner.Partner )
WHERE
	( TransactionPartner.Transaction = 26279 )

The query returns all of the partners that are associated with the transaction, including their internal IDs, names, roles, and contribution percentages. It also indicates which of the partners is the primary partner.

Note that I'm using the BUILTIN.DF function on the TransactionPartner.PartnerRole column to get the name of the partner role. However, the BUILTIN.DF function doesn't work on the TransactionPartner.Partner column. Therefore, to get the partner names, I'm joining to the Partner table.

In the example above, I'm querying for the partner relationships associated with a Sales Order that has an internal ID of 26279. Here's a screen shot that shows what that Sales Order looks like in the NetSuite UI.

Click the image to view a larger version.

Note the two partners that are associated with the Sales Order, as shown in the Relationships > Partners subtab.

Wrapping Up

In this post, I've introduced the TransactionPartner table and shown how you can query it to get the partners associated with a transaction. As always, I hope you've found this information to be helpful.

About Me

Hello, I'm Tim Dietrich. I develop custom software for businesses that are running on NetSuite, including mobile apps, Web portals, Web APIs, and more.

I'm the developer of several popular NetSuite open source solutions, including the SuiteQL Query Tool, SuiteAPI, and more.

I founded SuiteStep, a NetSuite development studio, to provide custom software and AI solutions - and continue pushing the boundaries of what's possible on the NetSuite platform.

Copyright © 2025 Tim Dietrich.