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:
- Product listing page load β query
GET /stock/:skuto show "In Stock" or "Currently Unavailable" - 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
