Validate Vendor Credit Import
POST/api/vendor-credits/import/validate
Validate and preview mapped import rows BEFORE importing. No database writes occur — safe to call repeatedly.
accounting:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Authentication: Requires Bearer token.
Resolves supplier / purchase order / store / currency / warehouse / SKU / nominal code / tax rate names to IDs, groups flat rows into credits (by id, then vendor_credit_number, then purchase_order_number), and computes an upsert action per credit:
- create: no existing credit matched
- update: matched an existing DRAFT credit
- blocked: matched a credit that cannot be updated (archived, voided, closed, refunded, allocated, or already authorized/open). The block_reason is returned for display.
Each row accepts all template columns: id, vendor_credit_number, credit_date, purchase_order_number, supplier_name, supplier_email, supplier_id, warehouse_name, currency_code, store_name, supplier_reference, vendor_credit_note, sku, purchase_order_line_id, description, quantity, amount, unit_cost, nominal_code, tax_rate, is_product, restock_inventory.
Max 50000 rows per call.
Request
Responses
- 200
- 401
- 403
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.