Plixstar
API Reference

Admin settlements

GET
/api/v1/admin/shipping/settlements

Newest first, default 100, bounded 1..1000.

Authorization

better-auth.session_token
better-auth.session_token<token>

In: cookie

Query Parameters

limit?number
Range1 <= value <= 1000

Response Body

application/json

curl -X GET "https://example.com/api/v1/admin/shipping/settlements"
[  {    "id": "string",    "carrier": "string",    "tracking_id": "string",    "actual_cost": "string",    "billed_on": "string",    "imported_at": "string",    "imported_by": "string",    "adjustment_order_id": "string",    "notes": "string"  }]
POST
/api/v1/admin/shipping/settlements/import

Parses CSV header verbatim against POS_LAJU_REQUIRED or NINJAVAN_REQUIRED. Matches tracking IDs to orders.tracking_id in a single round-trip. Per-row insert with UNIQUE(carrier, tracking_id, billed_on) conflict handled via Prisma P2002 → counts as duplicate instead of aborting the batch. Unmatched tracking IDs returned so admin can investigate.

Authorization

better-auth.session_token
better-auth.session_token<token>

In: cookie

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/admin/shipping/settlements/import" \  -H "Content-Type: application/json" \  -d '{    "carrier": "pos_laju",    "csvText": "string"  }'
{  "total": 0,  "inserted": 0,  "duplicate": 0,  "unmatched": 0,  "parseErrors": [    "string"  ],  "unmatchedTrackingIds": [    "string"  ]}