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