Skip to main content

Return Authorization API

Create return authorizations (RMAs) for customer returns using the NetSuite REST API.


Endpoints​

MethodEndpointDescription
GET/record/v1/returnAuthorizationList all return authorizations
GET/record/v1/returnAuthorization/{id}Get specific RMA
POST/record/v1/returnAuthorizationCreate new RMA
PATCH/record/v1/returnAuthorization/{id}Update RMA
DELETE/record/v1/returnAuthorization/{id}Delete RMA

Key Fields​

Header Fields​

FieldTypeDescriptionRequired
idstringInternal ID (read-only)-
tranIdstringRMA numberAuto-generated
entityobjectCustomer referenceYes
tranDatestringRMA date (ISO 8601)Yes
orderStatusobjectRMA statusRead-only
subsidiaryobjectSubsidiaryYes (OneWorld)

Financial Fields​

FieldTypeDescriptionRequired
currencyobjectTransaction currencyYes
exchangeRatenumberExchange rateAuto-calculated
subTotalnumberSubtotal (read-only)-
taxTotalnumberTotal tax (read-only)-
totalnumberTotal return amount (read-only)-

Return Information​

FieldTypeDescriptionRequired
createdFromobjectSource transaction (Sales Order/Invoice)No
otherRefNumstringExternal RMA numberNo
memostringInternal notesNo
messageobjectMessage to customerNo

Billing & Shipping​

FieldTypeDescriptionRequired
billAddr1stringBilling address line 1No
billCitystringBilling cityNo
billStatestringBilling state/provinceNo
billZipstringBilling postal codeNo
shipAddr1stringReturn shipping address line 1No
shipCitystringReturn shipping cityNo
shipStatestringReturn shipping state/provinceNo
shipZipstringReturn shipping postal codeNo

Other Fields​

FieldTypeDescriptionRequired
salesRepobjectSales representativeNo
classobjectDepartment/classNo
locationobjectLocationNo
departmentobjectDepartmentNo

Sublists​

FieldTypeDescriptionRequired
itemcollectionItems being returnedYes (at least 1)

Line Items​

The item sublist contains the products being returned.

Item Line Fields​

FieldTypeDescriptionRequired
itemobjectItem referenceYes
quantitynumberReturn quantityYes
ratenumberUnit priceYes
amountnumberLine total (qty × rate)Auto-calculated
descriptionstringLine description/reasonNo
taxCodeobjectTax codeNo
taxRate1numberTax rate %Auto-calculated
grossAmtnumberAmount including taxAuto-calculated
isClosedbooleanLine closedNo
quantityReceivednumberQuantity received back (read-only)-
quantityBillednumberQuantity credited (read-only)-

Example: Create Return Authorization​

POST /record/v1/returnAuthorization
Content-Type: application/json
{
"entity": {
"id": "456"
},
"tranDate": "2025-12-25",
"subsidiary": {
"id": "1"
},
"currency": {
"id": "1"
},
"createdFrom": {
"id": "1001"
},
"salesRep": {
"id": "123"
},
"otherRefNum": "CUST-RET-12345",
"memo": "Defective items - customer requested replacement",
"message": {
"id": "1"
},
"item": {
"items": [
{
"item": { "id": "789" },
"quantity": 2,
"rate": 99.99,
"description": "Units not functioning properly"
},
{
"item": { "id": "790" },
"quantity": 2,
"rate": -10.00,
"description": "Restocking fee"
}
]
}
}

Response:

{
"id": "9001",
"tranId": "RMA-9001",
"entity": {
"id": "456",
"refName": "Acme Corporation"
},
"tranDate": "2025-12-25",
"orderStatus": {
"id": "B",
"refName": "Pending Receipt"
},
"subTotal": 179.98,
"taxTotal": 14.40,
"total": 194.38,
"links": [
{
"rel": "self",
"href": "https://{account}.suitetalk.api.netsuite.com/services/rest/record/v1/returnAuthorization/9001"
}
]
}

Example: Create RMA from Sales Order​

POST /record/v1/returnAuthorization
Content-Type: application/json
{
"entity": {
"id": "456"
},
"tranDate": "2025-12-25",
"createdFrom": {
"id": "1001"
},
"memo": "Customer changed mind - full return",
"item": {
"items": [
{
"item": { "id": "789" },
"quantity": 5,
"rate": 99.99,
"description": "Ordered wrong model"
}
]
}
}
Auto-Fill from Sales Order

When you provide createdFrom with a sales order or invoice ID, NetSuite can auto-fill customer, items, and prices.


Example: Update Return Authorization​

PATCH /record/v1/returnAuthorization/9001
Content-Type: application/json
{
"memo": "Items received - inspection complete",
"otherRefNum": "INSPECTION-PASS-001"
}

RMA Workflow​

1. Standard Return Flow​

Return Authorization → Item Receipt (return) → Credit Memo
  1. Create RMA

    POST /record/v1/returnAuthorization
  2. Receive items back

    POST /record/v1/itemReceipt
    {
    "createdFrom": { "id": "9001" }
    }
  3. Issue credit

    POST /record/v1/creditMemo
    {
    "createdFrom": { "id": "9001" }
    }

2. Cash Sale Return​

Return Authorization → Cash Refund
POST /record/v1/cashRefund
{
"createdFrom": { "id": "9001" }
}

3. Exchange/Replacement​

Return Authorization → Item Receipt → Sales Order (replacement)
  1. Receive defective items
  2. Create new sales order for replacement
  3. Ship replacement items

Return Statuses​

StatusDescription
PENDING_APPROVALAwaiting management approval
PENDING_RECEIPTApproved, awaiting return shipment
CANCELLEDRMA cancelled
PARTIALLY_RECEIVEDSome items received back
PENDING_REFUNDItems received, credit pending
REFUNDEDCredit/refund issued
CLOSEDRMA fully processed and closed

Query Filters​

Find Pending RMAs​

GET /record/v1/returnAuthorization?q=orderStatus='PENDING_RECEIPT'

Find by Customer​

GET /record/v1/returnAuthorization?q=entity='456'

Find by Date Range​

GET /record/v1/returnAuthorization?q=tranDate BETWEEN '2025-12-01' AND '2025-12-31'

Find by Source Transaction​

GET /record/v1/returnAuthorization?q=createdFrom='1001'

Find High-Value Returns​

GET /record/v1/returnAuthorization?q=total > 1000

Find Pending Refund​

GET /record/v1/returnAuthorization?q=orderStatus='PENDING_REFUND'

Find by External Reference​

GET /record/v1/returnAuthorization?q=otherRefNum='CUST-RET-12345'

Important Notes​

No Immediate Accounting Impact​

  • RMAs are authorization documents only
  • No GL impact until items received/credited
  • Tracks return approval and status
  • May trigger inventory reservations

RMA Approval Process​

  • Can require approval via workflows
  • Set approval rules by amount or reason
  • Track approval status
  • Notify relevant parties

Receiving Returned Items​

Create Item Receipt to record physical return:

POST /record/v1/itemReceipt
{
"createdFrom": { "id": "9001" },
"entity": { "id": "456" }
}

Credit Memo Generation​

After receiving items, issue credit:

  • Can be automated via workflow
  • Links back to RMA via createdFrom
  • Amount matches received quantity
  • Customer can use credit or request refund

Return Reasons​

Track return reasons for analysis:

  • Defective/not working
  • Wrong item shipped
  • Customer changed mind
  • Duplicate order
  • Better price elsewhere
  • Quality issues

Restocking Fees​

Apply restocking fees as negative line items:

{
"item": { "id": "RESTOCK_FEE" },
"quantity": 1,
"rate": -25.00,
"description": "20% restocking fee"
}

Partial Returns​

  • Can return subset of original order
  • Track quantity received separately
  • Close individual lines when complete
  • Update quantities as needed

Return Shipping​

  • Customer or company pays shipping
  • Can add shipping as line item
  • Track return tracking numbers
  • Integration with shipping carriers

Inventory Management​

When items received:

  • Increase on-hand quantity
  • May go to different location (returns bin)
  • Quality inspection needed
  • Disposition decision (resell, scrap, repair)

Multi-Currency Returns​

  • Use same currency as original sale
  • Exchange rate from original transaction
  • Important for international returns
  • May affect refund amount

RMA Expiration​

  • Set expiration dates for RMAs
  • Auto-close expired RMAs
  • Notify customer of deadlines
  • Track return window compliance

Return Metrics​

Track important KPIs:

  • Return rate by product
  • Return rate by customer
  • Average return processing time
  • Return reasons analysis
  • Cost of returns

See Also​