A PO created in Ramp arrives in NetSuite with item lines from your NetSuite catalog. NetSuite can then populate custom line fields from Item records. Those values stay in NetSuite because the native PO sync does not send changes back to Ramp.
How the PO sync works
Ramp manages the PO in this integration. A PO created or updated in Ramp syncs to NetSuite, but edits made in NetSuite do not sync back.
Ramp handles PO approvals, spend controls, and vendor details. NetSuite receives the PO for accounting and fulfillment.
If a NetSuite item selection populates a custom field, that value is added after the PO reaches NetSuite. Ramp does not receive it through the native sync.
Why entering the value in Ramp may not work
Entering a value in Ramp before syncing works when the user supplies the data. It does not reproduce a value that NetSuite sources from its Item master.
A custom transaction line field can source its value from the selected Item record. NetSuite populates it when an item is selected on a PO line. The Item master remains in NetSuite.
Ramp’s procurement interface does not reproduce this sourcing from the NetSuite Item master.
Checking whether the API can update a PO line
An alternative to native sync would be a SuiteScript that reads the custom line values after a PO is saved and sends them to Ramp’s API. That requires a way to identify the corresponding PO line in Ramp.
The limiting factor is how Ramp’s API identifies PO lines.
No Unique Line Item IDs in Ramp's API
Updating a specific line requires a stable identifier. Ramp’s API provides a UUID for the PO but does not assign a unique ID or line number to each PO line.
Without a line identifier, the API request cannot target the corresponding PO line.
Why a Synthetic ID Doesn't Solve It
Storing a combined NetSuite line ID and Ramp PO ID in a NetSuite field does not solve this. Ramp does not recognize that value as a line identifier, so the API still has no supported target for the update.
What About a Body Level Field?
Ramp’s API can update a custom field at the PO body level using the PO UUID. A SuiteScript can collect the item names and custom values into a single text field:
1. Item A: Revision 4
2. Item B: (no value)
3. Item C: Revision 1
Include lines with blank values to preserve the order of the items.
Ramp limits custom PO body fields to 255 characters. The number of lines that fit depends on the item names and values:
| Scenario | Avg. chars / line | Max lines in 255 chars | Viability |
|---|---|---|---|
| Short item names (≤10 chars) | ~28 | ~9 | Marginal |
| Typical item names (15 to 20 chars) | ~38 | ~6 | Limited |
| Long item names (25+ chars) | ~50+ | ~5 | Impractical |
| POs with 10+ lines (any length) | Any | Truncated | Silently broken |
Check for truncation before using this approach. If a PO has 12 lines and the field only fits six, Ramp will receive an incomplete summary. A process that depends on all lines needs a different approach.