B2B platform for digital goods

How to Connect a Digital Goods Catalog to a Marketplace

Connecting digital goods to a marketplace means integrating a supplier API into your existing marketplace infrastructure to add gift cards, game top-ups, and similar products as a new category. The integration has three phases: catalog import (pull products from supplier and create listings), order flow (trigger supplier API on purchase), and stock management (keep listings in sync with supplier availability).

How to Connect a Digital Goods Catalog to a Marketplace


Short Answer

Connecting digital goods to a marketplace means integrating a supplier API into your existing marketplace infrastructure to add gift cards, game top-ups, and similar products as a new category. The integration has three phases: catalog import (pull products from supplier and create listings), order flow (trigger supplier API on purchase), and stock management (keep listings in sync with supplier availability). The technical work is a one-time build; ongoing operations are automated.


Definition: Connecting a digital goods catalog to a marketplace means using a wholesale supplier's API to populate a new product category, automatically fulfill orders, and maintain accurate stock and pricing β€” without the marketplace operator handling any physical inventory.


Key takeaway: Digital goods are the most backend-integration-friendly product category for marketplace expansion. No warehouse, no logistics, no returns process. The entire fulfillment chain is: API call in β†’ code out. The complexity is in catalog management (region accuracy, naming, pricing) and order flow reliability β€” not in physical operations.


Who This Guide Is For

  • Marketplace operators adding digital goods as a new product category
  • Developers integrating a digital goods supplier API into an existing platform
  • Product managers defining the integration requirements for digital goods

Integration Architecture Overview

Marketplace                    Supplier API
    β”‚                               β”‚
    β”œβ”€ Phase 1: Catalog Import ─────▢ GET /catalog
    β”‚  Pull all products             Returns SKUs, names, prices, regions
    β”‚  Create marketplace listings   (run daily or on change)
    β”‚                               β”‚
    β”œβ”€ Phase 2: Stock Sync ─────────▢ GET /stock/:sku
    β”‚  Check before showing product  Returns available/unavailable
    β”‚  (real-time on product page)   β”‚
    β”‚                               β”‚
    β”œβ”€ Phase 3: Order Flow ─────────▢ POST /orders
    β”‚  Buyer completes checkout       { sku, quantity }
    β”‚  Marketplace deducts payment    β”‚
    β”‚                          ◀────── { order_id, code }
    β”‚  Deliver code to buyer          β”‚
    β”‚                               β”‚
    └─ Phase 4: Reconciliation ─────▢ GET /orders?from=&to=
       Daily finance export          Returns all orders for period

Phase 1: Catalog Import

What the API Returns

A typical supplier catalog endpoint returns:

{
  "products": [
    {
      "sku": "steam-20-usd",
      "name": "Steam Gift Card $20",
      "region": "US",
      "currency": "USD",
      "face_value": 20.00,
      "wholesale_price": 18.40,
      "category": "gaming",
      "in_stock": true
    }
  ]
}

How to Map to Marketplace Listings

Supplier Field Marketplace Listing Field
name + region Product title ("Steam Gift Card $20 β€” US")
sku Internal reference (map supplier SKU to your listing ID)
face_value Display price
wholesale_price Your cost (internal; set your retail price above this)
category Marketplace category ("Gift Cards" β†’ "Gaming")
region Product attribute; used for filtering

Rules:

  • One marketplace listing per supplier SKU β€” no merging
  • Include region in the product title always
  • Store the supplier SKU in your database to map back for order placement

Catalog Update Schedule

Trigger Action
Daily scheduled job Pull full catalog; update prices; deactivate removed SKUs
Stock change (webhook) Update availability in real-time if supplier provides webhooks
Pre-order check Query stock for the specific SKU before displaying "Add to Cart"

Phase 2: Stock Management

Show only in-stock products to buyers. Check availability at two points:

  1. Product listing page load β€” query GET /stock/:sku to show "In Stock" or "Currently Unavailable"
  2. Checkout initiation β€” check stock again; block checkout if out of stock since page load
GET /stock/steam-20-usd
β†’ { "sku": "steam-20-usd", "available": true, "quantity": 500 }

Cache stock responses for 5–15 minutes (not longer) to reduce API load while staying current.


Phase 3: Order Flow

When a buyer completes checkout:

1. Marketplace confirms payment (buyer charged)
2. Call POST /orders with sku and quantity
3. Receive code(s) in response (synchronous) or via webhook (async)
4. Store order_id and code in your database
5. Deliver code to buyer (in-app notification, email, or order history page)
6. Mark order as completed

Error handling:

Scenario Response
Supplier API timeout Retry once after 5 seconds; if failed, queue for manual review
Out of stock at order time Refund buyer; notify out of stock; remove listing temporarily
Code delivery failed Do not mark order complete; trigger alert; process manually
Order returned invalid code Submit supplier claim; issue replacement or refund to buyer

Phase 4: Reconciliation

Pull order history from supplier API daily for finance reconciliation:

GET /orders?from=2026-05-01&to=2026-05-31
β†’ [ { order_id, sku, quantity, wholesale_cost, timestamp }, ... ]

Match against your marketplace transaction records. Discrepancies require investigation.


Pricing Strategy for Marketplace Digital Goods

Set retail price above wholesale cost + marketplace commission + payment fee + target margin:

Retail price = Wholesale Γ· (1 βˆ’ marketplace_commission% βˆ’ payment_fee% βˆ’ target_margin%)

Example (marketplace 10% commission, card payment 2.5%, target margin 5%):

Retail = $18.40 Γ· (1 βˆ’ 0.10 βˆ’ 0.025 βˆ’ 0.05)
Retail = $18.40 Γ· 0.825
Retail = $22.30

Verify that this retail price is competitive. If it is not, either negotiate better wholesale pricing or evaluate whether this channel is viable for this product.


Catalog Size Recommendations

Start focused; expand after validating the integration:

Phase Products to List
Launch 20–30 high-demand SKUs (top Steam, PSN, Google Play denominations in your primary region)
Month 2–3 Expand to full regional variants for top platforms
Month 4+ Add mobile top-ups, streaming, Amazon, Nintendo

Starting with 200 SKUs before validating the fulfillment flow creates debugging complexity. Start narrow; scale after the pipeline is proven.


Technical Checklist

Catalog:

  • Supplier API credentials configured in production environment
  • Catalog import job scheduled (daily minimum)
  • Each supplier SKU mapped 1:1 to marketplace listing
  • Region included in product title for all regional products
  • Retail price calculated with margin formula applied per product

Stock:

  • Stock check implemented on product page load
  • Stock check implemented at checkout initiation
  • Cache TTL set to 5–15 minutes
  • Out-of-stock products hidden or marked unavailable

Orders:

  • Order creation call triggered on payment confirmation (not on payment initiation)
  • Supplier order ID stored in your order database
  • Code delivered to buyer on order completion
  • Error states handled: timeout, failure, out-of-stock
  • Alert configured for order failures exceeding threshold

Finance:

  • Daily reconciliation job against supplier order API
  • Discrepancy alerting configured
  • Wholesale cost recorded per order for margin reporting

Frequently asked questions

Can I import the entire supplier catalog without reviewing individual products?
You can import all products, but you should apply automatic rules: hide products with no regional label, hide products where your calculated retail price would be uncompetitive, hide products from categories you haven't yet decided to support.
How do I handle a product that goes out of stock after the buyer has paid?
Refund the buyer immediately. Do not attempt to source from another channel to fulfill. Investigate why the stock check did not catch this before checkout.
What should I do if the supplier API is down at order time?
Do not fail the order silently. Implement a queue: save the pending order, retry fulfillment every 60 seconds for up to 10 minutes. If still failed, mark for manual review and alert your ops team. Do not leave buyers waiting without communication.
How long does catalog import take for a 500-SKU catalog?
Typically a few seconds to a few minutes, depending on your database write speed. Run catalog imports as a background job, not in real-time during user requests.
Should I display wholesale prices to buyers?
No. Wholesale prices are your cost data; they should never appear in buyer-facing UI. Only retail prices are shown to customers.
Get FoxReload API access

Related articles