Return Authorization API
Create return authorizations (RMAs) for customer returns using the NetSuite REST API.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /record/v1/returnAuthorization | List all return authorizations |
GET | /record/v1/returnAuthorization/{id} | Get specific RMA |
POST | /record/v1/returnAuthorization | Create new RMA |
PATCH | /record/v1/returnAuthorization/{id} | Update RMA |
DELETE | /record/v1/returnAuthorization/{id} | Delete RMA |
Key Fields
Header Fields
| Field | Type | Description | Required |
|---|---|---|---|
id | string | Internal ID (read-only) | - |
tranId | string | RMA number | Auto-generated |
entity | object | Customer reference | Yes |
tranDate | string | RMA date (ISO 8601) | Yes |
orderStatus | object | RMA status | Read-only |
subsidiary | object | Subsidiary | Yes (OneWorld) |
Financial Fields
| Field | Type | Description | Required |
|---|---|---|---|
currency | object | Transaction currency | Yes |
exchangeRate | number | Exchange rate | Auto-calculated |
subTotal | number | Subtotal (read-only) | - |
taxTotal | number | Total tax (read-only) | - |
total | number | Total return amount (read-only) | - |
Return Information
| Field | Type | Description | Required |
|---|---|---|---|
createdFrom | object | Source transaction (Sales Order/Invoice) | No |
otherRefNum | string | External RMA number | No |
memo | string | Internal notes | No |
message | object | Message to customer | No |
Billing & Shipping
| Field | Type | Description | Required |
|---|---|---|---|
billAddr1 | string | Billing address line 1 | No |
billCity | string | Billing city | No |
billState | string | Billing state/province | No |
billZip | string | Billing postal code | No |
shipAddr1 | string | Return shipping address line 1 | No |
shipCity | string | Return shipping city | No |
shipState | string | Return shipping state/province | No |
shipZip | string | Return shipping postal code | No |
Other Fields
| Field | Type | Description | Required |
|---|---|---|---|
salesRep | object | Sales representative | No |
class | object | Department/class | No |
location | object | Location | No |
department | object | Department | No |
Sublists
| Field | Type | Description | Required |
|---|---|---|---|
item | collection | Items being returned | Yes (at least 1) |
Line Items
The item sublist contains the products being returned.
Item Line Fields
| Field | Type | Description | Required |
|---|---|---|---|
item | object | Item reference | Yes |
quantity | number | Return quantity | Yes |
rate | number | Unit price | Yes |
amount | number | Line total (qty × rate) | Auto-calculated |
description | string | Line description/reason | No |
taxCode | object | Tax code | No |
taxRate1 | number | Tax rate % | Auto-calculated |
grossAmt | number | Amount including tax | Auto-calculated |
isClosed | boolean | Line closed | No |
quantityReceived | number | Quantity received back (read-only) | - |
quantityBilled | number | Quantity 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
-
Create RMA
POST /record/v1/returnAuthorization -
Receive items back
POST /record/v1/itemReceipt
{
"createdFrom": { "id": "9001" }
} -
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)
- Receive defective items
- Create new sales order for replacement
- Ship replacement items
Return Statuses
| Status | Description |
|---|---|
PENDING_APPROVAL | Awaiting management approval |
PENDING_RECEIPT | Approved, awaiting return shipment |
CANCELLED | RMA cancelled |
PARTIALLY_RECEIVED | Some items received back |
PENDING_REFUND | Items received, credit pending |
REFUNDED | Credit/refund issued |
CLOSED | RMA 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
- Sales Order - Original sales orders
- Invoice - Original invoices
- Credit Memo - Issue credits for returns
- Cash Refund - Refund cash sales
- Item Receipt - Receive returned items