Marketplaces & Compliance

Payability advances against marketplace receivables, so a supplier’s connected sales channels are core domain data — not a settings detail.

Supported marketplaces

Identities are fixed UUIDs, shared with the backend.

// src/app/core/pyb/enums/marketplaces.enum.ts
export enum MarketplaceEnum {
    Amazon            = '37036286-6ab8-427e-8a5f-ce53cac22f3e',
    Walmart           = 'c7d2ca4e-d44b-4713-b804-abc58d38f186',
    TopHatter         = 'cae8ea7b-971b-4595-b920-50d8975f849e',
    Payoneer          = '3fd6bd61-6d83-4103-84e8-deb3c02b51cb',
    Volusion          = '5609080f-f80c-421a-ab60-e1cc32e32a20',
    Stripe            = '57387ee6-087c-4d04-b8bc-247d58355ca2',
    Paypal            = 'f5cd98e5-ee28-456e-97b9-c32b9f01d509',
    Ebay              = '44ce7193-05ed-4ff4-b806-1b4315dbe944',
    Authorize         = 'cc5da097-0366-483d-96f5-f58764c3f89d',
    Shopify           = '60e9092e-66d5-4e53-b784-df0a4d552582',
    Newegg            = '39ec5fa0-e6a4-473a-b185-fbfb83c29901',
    NeweggVendors     = 'df3ba48c-8dcd-4739-8dd2-91bb480d2826',
    Etsy              = 'd3297290-0447-4d6c-8679-24dedb5c4e36',
    PayabilityPayment = '1333cf23-daad-462b-a931-6632b5e63c7b',
}

These UUIDs are contract values. Changing one silently disconnects every supplier on that channel.

Newegg is gated behind the NEW_EGG_PROVIDER permission, which is only granted outside production — see Permissions System.

Compliance keys

A compliance is one requirement a supplier must satisfy, identified by a UUID. They serve two purposes: onboarding progress, and per-marketplace connection requirements.

Onboarding compliances

PayabilityComplianceEnum:

LinkMarketplace

Connect at least one channel.

PersonalInformation / PersonalDetails

Contact and personal detail collection.

BusinessInformation

Legal entity details.

KycIdentity

Identity verification.

BankStatement

Bank statement upload.

TransferInformation

Payout configuration.

TwoStepVerification

2FA enrolment.

OfferSummary

Review the product offer.

SignAnAgreement

Sign the supplier agreement.

SalesCallSummary

Sales call completed.

Other

Catch-all.

DoctypeComplianceEnum.Documentation covers generic document uploads.

Per-marketplace compliances

Each integration has its own key set, which is how the UI knows which step of a connection is outstanding.

Enum Keys

AmazonComplianceKeys

API, Invite, Permissions

WalmartComplianceKeys

GatewayAccess, ComplianceApi, QuickOnboarding, Access, AutoconnectAgreement

ShopifyComplianceKeys

Invite

EbayComplianceKeys

Access

EtsyComplianceKeys

Rate, Manual

NeweggComplianceKeys

Invite

NeweggVendorsComplianceKeys

Invite

NeweggComplianceActionKeys

ManualInvite

PayoneerComplianceKeys

Access

AuthorizeComplianceKeys

Invite

PaymentGatewaysKeys

Stripe, PayPal, AuthorizeNet

WalmartComplianceTypes is a reverse map — UUID to human label (compliance_api, quick-onboarding, gateway-access, access, autoconnect_agreement) — used to render Walmart’s step names.

PayoneerComplianceKeys.Access and PaymentGatewaysKeys.PayPal are the same UUID (1b23b149-8ea1-4937-a56c-628c296f5c2b), as are AuthorizeComplianceKeys.Invite and PaymentGatewaysKeys.AuthorizeNet. The duplication is intentional — the same compliance record is reached from the marketplace flow and from the payment-gateway flow.

Permission states

A supplier’s authorization on a channel is tracked with MpPermissionEnum:

approved / perm-approved

Access granted.

verified

Access verified end-to-end.

pending / perm-pending

Awaiting the marketplace.

rejected / perm-rejected

Refused.

incomplete

Started but not finished.

disabled

Turned off.

sales resolution / perm-sales resolution

Escalated to the sales team.

AccessStatusEnum (pending, incomplete, rejected, completed, verified) and ApiStatus (needed, required, rejected, confirmed, incomplete, in-review, pending) express the same idea at different granularities — the compliance record and the API connection respectively.

State

marketplaces entity

The catalog of supported marketplaces. Persisted to localStorage under marketplaces_storage.

supplierMarketplaces entity

This supplier’s connections. Refetched on init and after an Advance Line withdrawal.

Both are keyed by marketplaceKey. See Entity Slices.

Connection health

ApiConnectorsService monitors Amazon and Shopify connections and drives reconnect banners and modals. See Marketplace API Connectors.

status.ascApiStatus carries the Amazon Seller Central API status, and user.amazonApiSwitching indicates the supplier is mid-migration between Amazon connection methods.

Amazon-specific flows

Dispatched through the marketplaces entity slice:

openAmazonInviteWrapper

Open the invite-Payability wizard.

openAmazonPermissionWrapper

Open the grant-permissions wizard.

amazonSuspendedProcessBreak

The supplier abandoned the Amazon-suspended flow.

amazonSuspendedProcessCompleted

The Amazon-suspended flow finished.

modals/amazon-suspended/ handles the case where the supplier’s Amazon account itself is suspended — distinct from a Payability suspension.

UI surface

/my-marketplaces (MyMarketplacesPageModule):

my-marketplaces-page/

The page shell.

marketplace-widget/

One connected channel with status and actions.

marketplace-content/

Connection detail panel.

add-marketplaces/

Add-a-channel flow.

unsuported-marketplaces/

Report a channel Payability does not integrate with.

marketplace-placeholder/, marketplace-single-placeholder/

Loading skeletons.

Analytics

Two event families cover the marketplace journey — MarketplaceEventType for lifecycle changes, and LinkMarketplaceEventType / InviteMarketplaceEventType for the onboarding wizards. MarketplaceEventsService and AmazonEventTrackerService emit them. Full list: Event Catalog.