Project portfolio Browse selected work

Shopify Plus: up to US$4,800 development credit

Guide

Shopify Lazada/Shopee Multi-Site Integration: Authorization, Stock, and Order QA

Published: Editorial review: 2026-08-30

Do not describe channel integration as a universal native connection

Start with what Shopify actually provides

Shopify can manage products, variants, inventory items, locations, orders, fulfillments, refunds, Markets, and sales channels. Installing a channel does not automatically create a complete Lazada or Shopee connection for every country, seller, shop, or venture. Shopify's first-party sales-channel material covers Shopify-owned and third-party channels, while third-party behavior and support remain the responsibility of the channel developer. “Shopify natively connects every Southeast Asian Lazada and Shopee shop” is therefore not a safe statement.

Classify the real connection before designing it. It may be a traffic channel, an order-generating marketplace, or an application/custom integration that exchanges catalog, stock, orders, and reverse flows. Pricing, checkout, order creation, refunds, and buyer-data behavior differ between those classes. Do not copy a rule from Google, TikTok, Temu, or another marketplace and apply it to Lazada or Shopee without checking the relevant first-party material.

Keep merchant responsibility outside the channel

Third-party channels are maintained by their developers. A developer can change fields, permissions, support scope, and error responses. Keep the application name, version, scopes, support owner, country/shop list, and pause switch in the operating record. If a channel no longer meets requirements or becomes unsupported, pause the affected writes and publishing actions, preserve received facts, and let the accountable owner choose a reviewed replacement or manual path.

Adding a sales channel can make existing products available by default. “Installed” does not mean that the assortment has been approved. Review availability product by product, market by market, and channel by channel. Channel Markets and a parent-market catalog can combine, so a separate channel catalog does not automatically exclude products that the parent catalog already exposes.

Write only boundaries that can be verified

This guide uses the first-party facts in the supplied closed research pack. Lazada authorization, venture context, product, stock, orders, reverse-order, shipment, and push behavior remain subject to application scope and current documentation. For Shopee, use the Shopee Open Platform as the partner-document entry point. Endpoint names, quotas, token lifetimes, webhook topics, status names, country coverage, and fulfillment promises require a permitted seller-console session; they must not be copied from search results, a consumer page, or an old integration note.

Map countries, shops, and authorization topology first

Treat every venture as an independent context

“Multi-country” is not achieved by replacing a country label in one row. One Shopify store may serve several Markets, while Lazada manages seller authorization, products, warehouses, orders, and settlement in a venture context. Shopee shop and country context must likewise be taken from the current permitted console. Every operational record should carry platform, country or venture, seller/shop, warehouse, currency, and authorization version rather than one global channel key.

When the same seller SKU appears in two countries, create two listing relationships with their own venture context. When a physical warehouse serves several markets, retain each market's sellable quantity, reservation rule, and delivery constraint. Credentials, cursors, and retry queues must be venture-scoped. Reusing a Singapore credential, host assumption, or status set for a Malaysia flow can produce a superficially successful request with facts stored in the wrong shop.

Assign owners for authorization, refresh, and revocation

Lazada's current material describes an OAuth 2.0 code-for-token flow and access/refresh-token lifecycle. Store authorization time, scopes, seller/venture, refresh result, and revoked state, but never place refresh tokens in logs, spreadsheets, or browser output. If authorization fails, pause that venture's writes, then verify account, scope, application state, and the current authorization path. Do not infer a Shopee token lifetime without the permitted console evidence.

Authorization is not permanent business permission. A seller may revoke an app, change an operator, move a shop, or remove a warehouse. Record only the minimum diagnostic response needed to explain a refresh or revocation. Keep already imported orders and reconciliation evidence after a revocation, but pause new catalog publication, inventory writes, and order acknowledgements until new authorization is reviewed.

Match credentials to the data boundary

Request access only to products, stock, orders, packages, refunds, or finance fields that the workflow needs. The Lazada developer agreement emphasizes necessity, consent, security, and data protection. A response containing a buyer address or telephone number is not a reason to retain every field. Apply the same minimization principle to Shopee, while leaving its platform-specific requirements for the permitted console. The data inventory should have separate columns for “returned by the platform” and “required by the task.”

Assign field ownership to a specific system

Separate the Shopify catalog from a marketplace listing

A Shopify product and variant represent a sellable store object. A marketplace listing represents an object for a particular platform, seller, venture, country, and warehouse. Titles, descriptions, images, brands, categories, and attributes may require a language or category transformation before acceptance. A Shopify product key is not automatically a marketplace item or model key, and a title is not a durable identity across countries.

Assign an owner to every field. Shopify can own store product facts; the transformation layer and marketplace category rules can own required output attributes; an acceptance response owns a marketplace listing state; and the platform or finance record owns fulfillment and settlement facts. When two systems disagree, create a review item with both versions instead of silently choosing the last response.

Give quantity, sellable stock, and settlement different owners

Physical stock may be governed by a Shopify location, a third-party warehouse, or a marketplace warehouse. Order totals, discounts, shipping, tax, commission, and settlement may also come from different systems. For each field, document who may write it, who may read it, when it becomes effective, and how it can be withdrawn. An inventory service should not rewrite price, and an order import should not replace a Shopify financial field with a marketplace settlement amount.

Ownership also covers lifecycle actions: who may create a listing, accept a review, confirm a package, cancel an order, issue a refund, or correct a settlement difference. Use the same field table for permission review and test that an unauthorized action is rejected into a review queue rather than silently accepted.

The initial ownership contract can look like this:

Fact layerShopify-side factMarketplace-side factIntegration-ledger fieldsForbidden mix-up
Catalog identityProduct, variant, inventory itemListing, item/model, seller SKU, ventureStable mapping key, version, transform resultTreat a Shopify variant as a marketplace listing
StockLocation, available, reserved statesWarehouse, sellable, frozen, reserved quantityBatch, event time, before/after quantity, reconciliation resultOverwrite fresh stock with a delayed snapshot
OrderOrder, line, fulfillment, refundOrder, item, package, reverse-order statePlatform, venture, event key, cursor, retryTreat both status vocabularies as synonyms
MoneyDiscount, shipping, tax, refund fieldsCommission, payment fee, ads, settlement adjustmentAmount type, currency, event time, evidenceCall a gross order amount revenue
PrivacyNecessary buyer and fulfillment fieldsBuyer fields returned by the platformPurpose, access, retention, deletion evidenceRetain every returned field indefinitely

Use business time instead of arrival order

Retain occurred_at, received_at, loaded_at, and the source revision for each fact. A late older stock or order event must not erase a newer business fact, but receipt time alone is not sufficient because retries alter arrival order. When the revision cannot be determined, keep the response reference and rejection reason in a bounded review queue. Diagnostic records should explain the decision without copying unnecessary buyer data.

Keep products, SKUs, and listings distinct

Build a traceable identifier map

A Shopify variant may map to different marketplace item/model identifiers in different ventures, or may be rejected after a category change. The mapping should include Shopify product/variant, seller SKU, marketplace item/model, platform, venture, country, warehouse, language, transform version, and state. Record where each key came from, when the relationship began, and when it ended.

Do not put an item/model value into a Shopify SKU merely for convenience. Do not use a title, image URL, or sort position as identity. If a listing is deleted and recreated, create a new relationship; an earlier order keeps the listing that it referenced at the time. Substitutes and split packages need their own mappings so that one SKU relation cannot hide two different fulfillment outcomes.

Validate category and required attributes before publishing

Lazada product writes may be subject to category attributes, quality control, venture rules, and asynchronous responses. Put a request into pending, save a request summary and transformation version, and move it to live only after the relevant marketplace acceptance result. Missing required attributes, brand approval, images, or dimensions should isolate that SKU and preserve the rejection reason; one successful line must not make an entire batch sellable.

Do not assume that Shopee uses the same category fields, image rules, or review states. The control pattern—request, asynchronous result, per-SKU isolation—can be reused, but every Shopee-specific field, state name, and limit belongs to an enablement check in the permitted Open Platform console. Consumer-page scraping, unofficial SDKs, and old PDFs are not current API evidence.

Preserve localized content and catalog scope

Titles, descriptions, attributes, and image text may be transformed by country, language, and platform. Keep the original value, destination language, transformation version, manual edit, and acceptance response. Shopify channel and Markets catalogs can overlap, so recheck products that become available after a channel is added. If a country must not sell a SKU, block it before publication rather than waiting for a marketplace rejection.

Use this identifier and lifecycle table during acceptance:

RecordRequired keysLifecycleSuccess conditionFailure route
Shopify product/variantProduct, variant, inventory itemDraft, sellable, archivedCatalog fields complete and owner approvedReturn to catalog repair queue
Lazada listingSeller, venture, item/model, seller SKUPending, accepted/live, rejectedAuthorization, category, attributes, images, and result referenceIsolate SKU and retain rejection
Shopee listingPermitted shop/country context, item/model, seller SKUUse the state shown by the current authorized consolePlatform-specific fields and state were recheckedPause writes and request platform review
Transformation versionInput keys, output fields, rule versionDraft, reviewed, invalidReplayable with a named ownerReturn to mapping/rule repair
Mapping ledgerPlatform, venture, warehouse, both stable keysValid, paused, substitute, invalidA one-to-many relation has a reasonQuarantine conflict; do not guess

Synchronize quantity by location, warehouse, and ledger

Choose one write owner for each stock pool

One physical stock pool needs one clearly named write owner. If a Shopify location is authoritative, calculate the publishable quantity from location, reservation, and safety-stock rules before sending it to a marketplace. If a warehouse is authoritative, let Shopify and the marketplace consume the same versioned fact. Do not let two scheduled tasks overwrite one another or copy a delayed single-channel total into every country.

Before publishing sellable stock, deduct safety stock and outstanding reservations. Store the input quantity, deductions, published quantity, source event, and destination warehouse. The same seller SKU may share a physical pool across countries or use separate pools; the allocation rule must be explicit. If a warehouse mapping is missing, return the quantity to review instead of sending it to a default warehouse.

Use idempotent writes for concurrent orders

An inventory write key should include platform, venture, warehouse, SKU, source-event revision, and action type. Keep before/after quantity, request summary, response, and retry count. Replaying one event must not deduct twice. When two channels order concurrently, ask the stock owner to apply its atomic rule again. Negative stock, an unusually large delta, or a stale event belongs in quarantine rather than an unlimited retry loop.

Cancellation, failed delivery, return, and manual marketplace adjustment can all change sellable stock. Each restoration or freeze action needs an event and reviewer. A canceled order should not automatically add units back before the physical and marketplace condition is known. Marketplace sellable, frozen, and reserved states may not have the same meaning as Shopify available; map them explicitly.

Combine refresh, push, and full reconciliation

Lazada's order-list material describes a paginated, status-based workflow. Push can accelerate discovery, but polling and periodic full reconciliation are needed to demonstrate completeness. Shopee push and polling behavior must be checked in the permitted console; do not assume it is identical to Lazada. Save cursors by venture and resource, and use overlapping time windows for boundary updates.

Reconciliation compares more than counts. Compare SKU, warehouse, state, revision, rejected rows, and the last trusted quantity. If a marketplace quantity differs from the calculated Shopify quantity, freeze automatic writes for that SKU, record the direction and revision of the difference, and let the stock owner correct it. A successful response alone is not evidence that the ledger is complete.

Build a state machine for orders, packages, and status

Persist marketplace order identity before creating a local view

Before importing an order, save marketplace order, item, package, seller/venture, and platform-event references. Then create or update the Shopify-side order or fulfillment view. One marketplace order may split into several packages, and one Shopify order may relate to multiple marketplace items. If the stable key is not recorded, never match by buyer name or product title as a temporary shortcut.

The state machine should name who may acknowledge, reserve, pack, ship, cancel, refund, and close an order. Shopify, Lazada, and Shopee state vocabularies are not assumed to be one-to-one. Keep original state, normalized state, platform, event time, and transformation version. A state that is not supported by current platform material should remain pending review rather than be assigned a guessed label.

Handle duplicate pushes and cursor restarts

For each push or poll row, store event key, payload summary, platform time, receipt time, cursor before and after, and processing result. A duplicate message may update an explainable receipt record but must not create a second order, package, or refund. If a cursor expires, read a bounded overlapping window and deduplicate by event and line key. An unparseable payload goes to a dead-letter queue with minimum audit data.

Separate receiving from acknowledging

Receiving an order does not mean stock has been confirmed or that shipment can begin. Order import, reservation, package creation, shipment confirmation, refund, and settlement have distinct permissions and retry boundaries. If one step fails, pause the next action that would change an external fact while preserving incoming evidence. After review, continue from the versioned state transition instead of replaying the entire order set.

Use platform-neutral internal stages while retaining each platform's original state beside them:

Internal stageShopify viewLazada evidenceShopee handlingNext owner
ReceivedOrder and lines are persistedOrder and venture references are storedKeep the original state and permitted-console referenceOrder integration owner
Needs confirmationWaiting for stock and scope checksPagination, authorization, and warehouse are completeVerify the state in the current permitted sessionStock and authorization owner
Ready to fulfillCreate a fulfillment task without claiming shipmentPackage and warehouse conditions are satisfiedAdvance only after an authorized state mappingFulfillment owner
Reverse in progressRefund or return task is separateReverse-order or failed-delivery evidence is retainedKeep original state and review manuallyReturns owner
ClosedOrder snapshot and reconciliation are completeSettlement and refund references are completeClosure condition comes from authorized materialFinance and data owner

Combine push, polling, idempotency, and reconciliation

Use push for fast discovery, not as the only truth

Events can reduce discovery delay, but they may be duplicated, reordered, incomplete, or limited to one kind of change. After receiving a push, validate platform, venture, signature or authorization context, then read the complete object through the approved route. Resources without push still need paginated polling; “no event today” is not proof that no order changed.

Store the start and end of a polling window, cursor, page or stable position, and the last complete result. Use a bounded overlap so updates at a time boundary are not missed. Partition large catalog and order work by venture, warehouse, or state so one failed slice does not invalidate all other slices.

Make idempotency cover the business action

A listing publish, inventory update, cancellation, refund, or package confirmation may be submitted again after a timeout. The idempotency key should contain action type, object key, source revision, and destination venture. Save the marketplace result. If a platform does not expose a clear idempotency facility, lock the local ledger first and query the result before deciding whether another write is safe.

Use reconciliation to prove completeness

Periodic reconciliation compares source rows, destination rows, accepted and rejected counts, quantities, states, fees, and settlement times. Classify differences as delay, duplicate, missing row, mapping error, permission error, or a real business change. Each class needs an owner, pause rule, and restoration evidence. A report must not call gross order value revenue, or describe one successful request as real-time, lossless, or an overselling guarantee.

Cover cancellations, reverse flows, failed delivery, and settlement

Treat reverse logistics as its own state domain

Cancellation, return, refusal, failed delivery, replacement, and partial cancellation change product, package, stock, and settlement facts. Do not collapse “refunded” into “returned to stock.” Keep the original order line, package, reason, logistics evidence, refund action, stock inspection, and manual decision. Lazada material mentions reverse-order capabilities, but fields and availability depend on authorization and current documentation; Shopee states require the permitted console.

If a return has not reached the warehouse, do not add it to sellable stock. If a refund has occurred while the parcel has not returned, record those facts separately. A partial cancellation or split package affects its own line or package and should not close the entire order. A replacement needs a new item relationship and a clear link to the original order evidence.

Give failed delivery a human decision path

Wrong address, carrier failure, buyer refusal, or a marketplace-closed package may require reshipment, cancellation, refund, or support confirmation. The transition must state who decides, which evidence is needed, whether a fee adjustment is expected, and which system writes the next step. If a platform state cannot map to a local state, retain the original state and enter support review instead of marking it complete.

Link settlement adjustments back to the order

Settlement can occur after order, fulfillment, or refund events and can contain commission, payment fee, advertising fee, shipping, tax, and other adjustments. Give each amount a platform, venture, currency, type, event time, settlement batch, and order/package reference. Reconcile order total, customer payment, fees, refunds, and settlement separately. Do not infer gross margin or revenue without an agreed country, currency, tax, and attribution rule.

Separate Markets, catalog, price, and currency

Check channel and parent-market catalogs together

Shopify Markets can govern market availability, price, and currency, while a channel catalog may combine with a parent-market catalog. When a channel is added, review the products that become available by default. For each country, test collection, search, direct visit, price, stock, listing acceptance, and order routing. Store visibility in Shopify does not prove that the marketplace will accept or expose the product.

For a market-excluded product, retain the reason, market scope, and effective time. A product visible in one country and hidden in another may require separate listing, stock, price, and fulfillment checks. A localized URL or language switch is a presentation fact, not evidence that a marketplace listing has been approved.

Make currency conversion traceable

Keep product price currency, market display currency, order payment currency, fee currency, and settlement currency as separate values. Store the rate source, effective time, rounding rule, and amount type. Do not multiply a display price by an undocumented rate and call the result settlement. Refunds, discounts, shipping, and tax have their own timing and currency context.

State attribution limits in reports

Traffic channels, order-generating channels, marketplace discounts, and advertising costs can coexist. A report should distinguish touchpoint, order ownership, platform fee, and settlement time. If no common attribution rule exists, show source fields side by side instead of deciding which marketplace generated more revenue. Any attribution field supplied by an application or marketplace needs its source and time window.

Before enabling a country or venture, retain evidence for each row in this acceptance matrix:

Acceptance itemLazada venture (SG/MY/TH/VN/ID/PH listed in the material)Shopee permitted shop/country contextEvidence to retain
AuthorizationCentral authorization service with seller and venture bound togetherVerify seller, shop, and scope in the current Open Platform sessionAuthorization version, scope, refresh, and revocation result
CatalogCategory, required attributes, images, and asynchronous acceptanceConfirm platform-specific fields and review in the current consoleInput/output version, listing result, and rejection reason
InventoryWarehouse, sellable quantity, reservations, and safety stockDo not assume the warehouse or sellable ruleBefore/after quantity, event, and reconciliation difference
Orders and reverse flowPaginated orders, packages, reverse-order and refund referencesVerify states, packages, and returns in permitted materialOrder/item/package keys, cursor, and event summary
Fees and privacyNecessary order/finance fields under the agreementRecheck purpose, access, retention, and deletion rulesCurrency, amount type, purpose, and handling record

Build a comparable ledger for fees, attribution, and privacy

Keep GMV, payment, and revenue separate

At minimum, store merchandise total, seller discount, marketplace discount, shipping, tax, commission, payment fee, advertising fee, refund, and settlement adjustment separately. Each row needs amount type, currency, source, order or package, settlement batch, and event time. A gross merchandise amount is an order fact; it is not automatically revenue, and a settlement deposit is not automatically gross profit.

Set country, venture, currency, tax, and refund rules before aggregating cross-market results. If a country's fee field is unavailable, expose the gap instead of borrowing another country's rate. Fixed commissions, tax rates, delivery service levels, conversion lifts, and revenue lifts require dated first-party evidence for that country and should not be presented as universal platform behavior.

Retain only buyer data needed for the task

Fulfillment, support, fraud handling, or a legal obligation may require selected buyer fields. For each field, record purpose, access role, encryption, retention period, correction/deletion route, and cross-border transfer boundary. The Lazada developer agreement emphasizes necessity, consent, security, and data protection. A Shopee response should be minimized in the same way, subject to its current authorized terms. Do not copy every address, telephone number, or optional note into a long-lived analytics table merely because the response contains it.

Make correction and deletion verifiable

A buyer correction or deletion request should reference country, platform, shop/venture, object, and outcome without putting a secret in an audit log. Deletion does not mean discarding a necessary order or financial record; privacy and legal owners decide the minimum facts that remain. When authorization is revoked or an app is removed, stop optional data collection, clear data no longer needed, and retain the action time and responsible owner.

Close with failure queues, rollback, and a runbook

Isolate failures by action

Category rejection, missing required attribute, image rejection, revoked authorization, wrong venture, unmapped warehouse, negative stock, duplicate push, cursor failure, and fee difference each need an owned queue. Store object key, platform, venture, error class, response reference, retry count, and next action. One failed SKU should not force an entire batch to replay, and a permission error should not enter an unlimited retry loop.

Pause writes while preserving incoming evidence

During a connector outage, pause product publication, inventory updates, order acknowledgements, and refund writes that would change external facts. Continue to preserve minimized incoming evidence, event keys, cursor positions, and diagnostic summaries. Customers and operators should see “needs review,” not a false synchronization success. Before recovery, verify authorization, mappings, warehouses, transformation version, stock differences, and dead-letter scope, then replay bounded slices.

Roll back only the new relationship or rule

If a change adds listing mappings or synchronization rules, rollback removes only those new mappings or rules and preserves Shopify products, historical orders, existing platform mappings, settlement evidence, original slugs, titles, and dates. If an external marketplace was already changed, deleting a local row does not prove that the external fact was reversed. The accountable platform owner must use the authorized process and record its result.

Use this failure and recovery matrix as the minimum runbook:

FailureImmediate actionCustomer-facing stateRecovery evidenceForbidden action
Category, attribute, or image rejectionIsolate the listing and retain the responseNeeds repair; do not expose as sellableCategory rule, corrected version, accepted resultReplay a whole batch or fabricate success
Revoked authorization or wrong venturePause that venture and verify credentialsConnection needs reviewNew authorization, shop/venture, scopes, test recordReuse another country's credential
Duplicate or late order eventDeduplicate by platform/venture/event key and read the overlapKeep the last trusted stateCursor, window, event summary, reconciliationOverwrite by arrival time
Concurrent order, negative stock, or missing warehouseFreeze quantity writes and open a stock itemNeeds confirmation or temporarily unavailableStock owner, before/after quantity, warehouse mappingPublish a delayed total as stock
Split package, failed delivery, or returnSplit state and stock inspection; escalateShow the affected package stateLogistics, refund, receipt, and transition evidenceTreat refund as returned stock
Settlement or privacy differenceQuarantine amount/data fields and notify ownerDo not show an unchecked aggregateAmount type, currency, batch, purpose, and action recordCall GMV revenue or retain all buyer data

Make multilingual SEO and channel explanations consistent

Fix terminology, market, and connector boundaries first

The terms channel, shop, venture, listing, sellable, and settlement must keep the same meaning across languages. Create the glossary, field ownership, and market scope before translating titles, attributes, errors, and FAQ answers. The Shopify multilingual setup guide can provide related language and market context, but it does not prove that a marketplace has authorized a connection.

Keep Lazada names in their platform context: a venture, seller, and warehouse are not one generic “Southeast Asian shop.” Shopee country, shop, and scope must be read from the permitted console. An English page should call an unverified platform detail “needs verification” rather than turning a missing detail into a capability promise.

Validate URL, Markets, and visible catalog together

Markets can change language, currency, product visibility, and price, while a localized URL or canonical does not prove that a listing passed marketplace review. Use the Markets guide for the store-side market context, then test channel catalog, parent-market catalog, direct visit, search, price, stock, listing acceptance, and delivery messaging by country. A product that appears in Shopify must still pass the marketplace's own review.

Use same-language FAQ and first-party evidence

An English FAQ should answer authorization, stock, order, fee, and privacy boundaries in natural English. Operators can use the analytics guide to review field definitions, the mobile design guide to test a selector, and the checkout flow guide to review order lines and stock changes. The following first-party URLs are copied from the closed pack and marked as checked on 2026-08-30. They describe platform boundaries; they do not replace a current seller authorization.

Shopify first-party references

Lazada first-party references

  • Lazada seller authorization
  • Lazada authorization policies
  • Lazada venture API endpoints
  • LazOP 2.0 overview
  • Lazada order retrieval
  • Lazada product creation workflow
  • Lazada Open Platform developer agreement

Shopee first-party entry

  • Shopee Open Platform

Frequently asked questions

Does Shopify natively connect every Lazada and Shopee country?

No universal connection should be assumed. Shopify provides sales-channel and Markets capabilities, but its official channel material is not a promise that every country, venture, seller, or shop has one native Lazada/Shopee connector. Actual scope depends on an application or custom integration, seller authorization, country, category, permission, and current platform documentation. Check catalog, orders, stock, logistics, refunds, and support scope per shop before enabling it.

Can the same seller SKU directly reuse a listing ID in another country?

Do not assume so. A seller SKU can help identify the same sellable item, but another country or venture may create a different item/model, category attribute set, warehouse, price, currency, and review outcome. The map should include platform, venture, listing, warehouse, and transformation version. An earlier order keeps its original listing reference; a recreated listing is a new relationship.

Can push and polling be reduced to one method?

It is safer to use both where the platform supports them. Push accelerates discovery but can be duplicated, reordered, or incomplete. Paginated polling and periodic full reconciliation establish completeness. Lazada's order material explicitly involves pagination and state; Shopee push and polling details must be checked in the permitted console. Both paths need cursors, overlap windows, idempotency, dead letters, and reconciliation.

How should order amounts, platform fees, and settlement be reconciled?

Keep merchandise total, discounts, shipping, tax, commission, payment fee, advertising fee, refund, and settlement adjustment separate. For each amount retain platform, venture, currency, time, settlement batch, and order/package reference. GMV is not revenue, and a settlement deposit is not automatically gross profit. If a country lacks first-party fee evidence, show a data gap instead of borrowing another country's rate.

Can Shopee endpoints, states, or quotas be copied from online material?

No. The canonical partner entry is Shopee Open Platform, and detailed partner documentation may require an authorized session. Until the current seller console is opened and reviewed, do not state an endpoint, version, quota, token lifetime, webhook topic, state list, country scope, or fulfillment promise. Consumer-page scraping, unofficial SDKs, old PDFs, and another integrator's field names are not current evidence.