Hoppa till innehållet

Returns

Customer-initiated returns: check what an order is eligible to return, register the return, print the label and follow it. Registering moves no stock — receiving at the warehouse does.

6 calls GET POST Base URL https://api.erp.fluit.cloud/ecom

Authentication, error codes, rate limits, idempotency and pagination apply to every call and are documented once under Getting started.

GET /portal/orders/{orderId}/return-eligibility

Check return eligibility

Checks whether an order is eligible for return and returns returnable line details.

Path parameters

Field Type
orderId Required string(uuid)

Responses

200 PortalReturnEligibilityResponse
Field Type
allowPartialReturn boolean
currencyCode string · nullable
eligible boolean
ineligibleReason string · nullable
lines PortalReturnEligibleLine[] · nullable
orderId string(uuid)
orderNumber string · nullable
requireReason boolean
returnInstructions string · nullable
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standard errors: 401 404 Errors

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/portal/orders/{orderId}/return-eligibility" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Response 200
{
  "allowPartialReturn": true,
  "currencyCode": "SEK",
  "eligible": true,
  "ineligibleReason": "string",
  "lines": [
    {
      "alreadyReturnedQuantity": 42,
      "deliveredQuantity": 42,
      "itemName": "Widget A",
      "itemNumber": "WIDGET-A",
      "maxReturnableQuantity": 42,
      "orderLineId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "taxPercent": "12.50",
      "unitPrice": "299.00"
    }
  ],
  "orderId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "orderNumber": "SO-2026-1041",
  "requireReason": true,
  "returnInstructions": "string"
}

Base URL https://api.erp.fluit.cloud/ecom. The response example is generated from the schema: the shape is right, the values are made up.

GET /portal/returns

List returns

Returns a paginated list of returns for the authenticated customer.

Query parameters

Field Type
page integer
pageSize integer
status string

Responses

200 PortalReturnListResponse
Field Type
items PortalReturnSummary[] · nullable
page integer
pageSize integer
totalCount integer
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standard errors: 401 403 Errors

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/portal/returns" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Response 200
{
  "items": [
    {
      "currencyCode": "SEK",
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "lineCount": 42,
      "orderNumber": "SO-2026-1041",
      "returnDate": "string",
      "returnNumber": "RMA-2026-0037",
      "rmaNumber": "ABC-001",
      "status": "string",
      "totalAmount": "299.00"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137
}

Base URL https://api.erp.fluit.cloud/ecom. The response example is generated from the schema: the shape is right, the values are made up.

POST /portal/returns

Submit return

Creates a new return request from the customer portal.

Body required

Field Type
lines SubmitPortalReturnRequestLine[] · nullable
notes string · nullable
orderId string(uuid)
reason integer

Responses

201 SubmitPortalReturnResponse
Field Type
returnId string(uuid)
returnNumber string · nullable
rmaNumber string · nullable
status string · nullable
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standard errors: 400 401 403 Errors

Examples

curl
curl -X POST "https://api.erp.fluit.cloud/ecom/portal/returns" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web" \
  -H "Content-Type: application/json" \
  -d @body.json
Response 201
{
  "returnId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "returnNumber": "RMA-2026-0037",
  "rmaNumber": "ABC-001",
  "status": "string"
}

Base URL https://api.erp.fluit.cloud/ecom. The response example is generated from the schema: the shape is right, the values are made up.

GET /portal/returns/{id}

Get return detail

Returns the full detail of a specific return for the authenticated customer.

Path parameters

Field Type
id Required string(uuid)

Responses

200 PortalReturnDetailResponse
Field Type
canCancel boolean
currencyCode string · nullable
externalNotes string · nullable
id string(uuid)
lines PortalReturnLineDetail[] · nullable
orderId string(uuid)
orderNumber string · nullable
reason string · nullable
receivedDate string · nullable
returnDate string · nullable
returnLabelUrl string · nullable
returnNumber string · nullable
returnTrackingUrl string · nullable
rmaNumber string · nullable
status string · nullable
totalAmount decimal
totalVat decimal
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standard errors: 401 404 Errors

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/portal/returns/{id}" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"
Response 200
{
  "canCancel": true,
  "currencyCode": "SEK",
  "externalNotes": "string",
  "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "lines": [
    {
      "id": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
      "itemName": "Widget A",
      "itemNumber": "WIDGET-A",
      "lineTotal": "299.00",
      "quantity": 42,
      "reason": "string",
      "unitPrice": "299.00"
    }
  ],
  "orderId": "0f8b2c1e-4d3a-4b7e-9f10-2a6c5d8e1b44",
  "orderNumber": "SO-2026-1041",
  "reason": "string",
  "receivedDate": "string",
  "returnDate": "string",
  "returnLabelUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "returnNumber": "RMA-2026-0037",
  "returnTrackingUrl": "https://cdn.fluit.cloud/assets/widget-a-front.jpg",
  "rmaNumber": "ABC-001",
  "status": "string",
  "totalAmount": "299.00",
  "totalVat": "299.00"
}

Base URL https://api.erp.fluit.cloud/ecom. The response example is generated from the schema: the shape is right, the values are made up.

POST /portal/returns/{id}/cancel

Cancel return

Cancels a return request that has not yet been received.

Path parameters

Field Type
id Required string(uuid)

Responses

204 Empty body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standard errors: 400 401 404 Errors

Examples

curl
curl -X POST "https://api.erp.fluit.cloud/ecom/portal/returns/{id}/cancel" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"

Base URL https://api.erp.fluit.cloud/ecom.

GET /portal/returns/{id}/label

Get return label

Downloads or redirects to the return shipping label for a return.

Path parameters

Field Type
id Required string(uuid)

Responses

302 Empty body.
429 Rate limit exceeded. Wait the number of seconds given in Retry-After. The body is problem-shaped application/json, not application/problem+json. This API sends no X-RateLimit-* headers — the quota is discovered here.
  • Retry-After — Seconds to wait before retrying.

Standard errors: 401 404 Errors

Examples

curl
curl "https://api.erp.fluit.cloud/ecom/portal/returns/{id}/label" \
  -H "Authorization: Bearer $SESSION_TOKEN" \
  -H "X-Tenant-Id: $FLUIT_TENANT_ID" \
  -H "X-Channel: web"

Base URL https://api.erp.fluit.cloud/ecom.

Schemas

The objects this group's calls refer to. The field tables above go one level deep and link here rather than repeating the same schema on every endpoint.

PortalReturnEligibleLine

PortalReturnEligibleLine
Field Type
alreadyReturnedQuantity integer
deliveredQuantity integer
itemName string · nullable
itemNumber string · nullable
maxReturnableQuantity integer
orderLineId string(uuid)
taxPercent decimal
unitPrice decimal

PortalReturnLineDetail

PortalReturnLineDetail
Field Type
id string(uuid)
itemName string · nullable
itemNumber string · nullable
lineTotal decimal
quantity integer
reason string · nullable
unitPrice decimal

PortalReturnSummary

PortalReturnSummary
Field Type
currencyCode string · nullable
id string(uuid)
lineCount integer
orderNumber string · nullable
returnDate string · nullable
returnNumber string · nullable
rmaNumber string · nullable
status string · nullable
totalAmount decimal

SubmitPortalReturnRequestLine

SubmitPortalReturnRequestLine
Field Type
notes string · nullable
orderLineId string(uuid)
quantity integer