CLI Guide
The Storlaunch CLI has two sides: sell for merchants (products, payments, subscriptions, webhooks) and buy for buyers (shop, orders, subscriptions, invoices, addresses). Same binary, same config.
Installation
Node.js 18+ required. Install globally via npm:
npm install -g @forjio/storlaunch-cli
Verify:
storlaunch --version # 0.14.0 storlaunch --help # Usage: storlaunch [options] [command] # # Commands: # sell Seller commands — manage your merchant account # buy Buyer commands — shop, pay, track orders
Seller commands (sell)
For merchants managing their storefront, payments, subscriptions, and webhooks.
Log in
Generate an API key from your API Keys dashboard, then:
storlaunch sell auth login --key sk_live_xxxxx # ✓ Production API key saved # For sandbox / test: storlaunch sell auth login --key sk_test_xxxxx
Create a checkout session
storlaunch sell payment checkouts create \
--amount 99000 \
--currency IDR \
--description "Pro Plan - Monthly" \
--success-url "https://myapp.com/success?sid={SESSION_ID}"
# ✓ Checkout session created
# ID: cs_01HX...
# URL: https://storlaunch.forjio.com/checkout/cs_01HX...Manage products
Three product types: digital, subscription, and physical. Physical products require --weight (grams) and benefit from dimension flags so couriers can quote accurate rates.
# List products (filter by type) storlaunch sell storefront products list --type physical # Create a digital product storlaunch sell storefront products create \ --name "UI Kit Pro" \ --price 299000 \ --currency IDR \ --type digital # Upload a file to a digital product storlaunch sell storefront products upload prod_01HX... --file ./ui-kit.zip # Create a physical product (weight is required) storlaunch sell storefront products create \ --name "Graphic T-Shirt" \ --price 150000 \ --currency IDR \ --type physical \ --weight 250 \ --length 30 --width 25 --height 3 \ --requires-insurance # Update a physical product storlaunch sell storefront products update prod_01HX... \ --price 175000 \ --weight 280
Variants (SKUs)
Physical products with sizes or colors use variants. Each variant tracks its own SKU, price delta vs the base product, cost price, and low-stock threshold. The default variant is created with the product and cannot be deleted.
# Create a variant storlaunch sell inventory variants create \ --product prod_01HX... \ --name "Red / M" \ --sku "TSH-RED-M" \ --price-delta 0 \ --cost-price 60000 \ --low-stock-threshold 5 # List variants for a product storlaunch sell inventory variants list --product prod_01HX... # Update a variant storlaunch sell inventory variants update var_01HX... \ --low-stock-threshold 10 # Archive a variant (default variant cannot be archived) storlaunch sell inventory variants delete var_01HX...
Warehouses
Every account starts with a default warehouse. Add more for multi-location stock. Setting --default on a warehouse atomically demotes the prior default.
# Create a warehouse storlaunch sell inventory warehouses create \ --name "Gudang Utama" \ --address "Jl. Sudirman 1" \ --city "Jakarta" \ --postal "12190" \ --phone "+628111111111" \ --default # List warehouses storlaunch sell inventory warehouses list # Promote a different warehouse to default storlaunch sell inventory warehouses update wh_01HX... --default # Archive (default warehouse cannot be archived) storlaunch sell inventory warehouses delete wh_01HX...
Stock adjustments
Every stock change is recorded with a reason code and audit trail. Use positive deltas to receive stock, negative to remove. Reason codes: manual_adjust, refund_restock, transfer_in, transfer_out, damaged, returned_to_supplier, initial_stock, import.
# Current stock for a variant across all warehouses storlaunch sell inventory stock get --variant var_01HX... # Receive 50 units from supplier storlaunch sell inventory stock adjust \ --variant var_01HX... \ --warehouse wh_01HX... \ --delta 50 \ --reason initial_stock \ --note "PO #2026-04-01" # Write off 3 damaged units storlaunch sell inventory stock adjust \ --variant var_01HX... \ --warehouse wh_01HX... \ --delta -3 \ --reason damaged # Movement history storlaunch sell inventory stock history --variant var_01HX... --limit 20 # Low-stock alerts across all SKUs storlaunch sell inventory stock alerts # Bulk import stock levels from CSV storlaunch sell inventory stock import --file ./stock.csv # CSV columns: sku,name,productSlug,warehouseId,quantity,lowStockThreshold,costPrice
Shipping config
Set up your pickup origin and enabled couriers before accepting physical orders. Instant couriers (GoSend, Grab, Lalamove) require origin lat/lng coordinates.
# Look up the Biteship area ID for your city storlaunch sell shipping areas search "Jakarta Selatan" # List all available couriers (public catalog from Biteship) storlaunch sell shipping couriers list # Set origin (regular couriers only) storlaunch sell shipping origin set \ --address "Jl. Sudirman 1, Jakarta Selatan" \ --city "Jakarta Selatan" \ --postal "12190" \ --area "IDNP6IDNC148IDND1175IDZ22220" \ --contact-name "Adhya Pranata Sakti" \ --contact-phone "+628111111111" \ --couriers "jne,jnt,sicepat,anteraja" # Add instant couriers (coordinates required) storlaunch sell shipping origin set \ --address "Jl. Sudirman 1, Jakarta Selatan" \ --contact-name "Adhya" \ --contact-phone "+628111111111" \ --lat -6.2088 --lng 106.8456 \ --couriers "jne,jnt,sicepat,gosend,grab" # Show current origin storlaunch sell shipping origin get
Ledger
The per-merchant money log. Entries are auto-posted by the platform (sales, fees, shipping, refunds) with deterministic idempotency keys; you can also post manual adjustments.
# Running balance (account-wide)
storlaunch sell ledger balance account
# { balance, currency, lastEntryAt }
# Per-customer AR balance
storlaunch sell ledger balance customer cust_abc123
# List entries with filters
storlaunch sell ledger entries list \
--category sale --from 2026-04-01T00:00:00Z --limit 50
# Categories: sale, refund, platform_fee, channel_fee,
# shipping_cost, shipping_refund, payout, adjustment
# Inspect a single entry
storlaunch sell ledger entries get ledg_abc123
# Manual adjustment (goodwill credit)
storlaunch sell ledger adjustments create \
--type credit --amount 10000 --currency IDR \
--description "Goodwill credit for order #2026-04-55" \
--customer cust_abc123
# Write-off (debit)
storlaunch sell ledger adjustments create \
--type debit --amount 50000 --currency IDR \
--description "Bad debt write-off — invoice INV-2026-03-99"Discount codes / vouchers
Create and manage promo codes. Types: percent, fixed, shipping_percent, shipping_fixed. Scopes: cart, products, tags.
# 20% off summer-tagged items with usage caps — public so it shows on the storefront
storlaunch sell discount-codes create \
--code SUMMER20 \
--type percent --value 20 --currency IDR \
--scope tags --tags summer,sale \
--min-purchase 100000 \
--max-uses 500 --max-per-customer 1 \
--expires 2026-08-31T23:59:59Z \
--public
# 50% off shipping — applies to the shipping fee, regardless of scope
storlaunch sell discount-codes create \
--code LEBARAN \
--type shipping_percent --value 50 --currency IDR
# List / get / update / delete
storlaunch sell discount-codes list --active
storlaunch sell discount-codes get dc_abc123
storlaunch sell discount-codes update dc_abc123 --inactive
storlaunch sell discount-codes update dc_abc123 --public # advertise on storefront
storlaunch sell discount-codes update dc_abc123 --private # hide from storefront
storlaunch sell discount-codes delete dc_abc123 # soft-archive
# Dry-run validate against a simulated cart (no commit)
storlaunch sell discount-codes validate \
--merchant acme --code SUMMER20 \
--subtotal 500000 --currency IDR --shipping 20000 \
--items '[{"productId":"prod_x","price":250000,"quantity":2,"tags":["summer"]}]'Abandoned cart recovery
Per-merchant abandoned-cart recovery automation. Mirrors the dashboard page at /dashboard/marketing/abandoned-cart.
# Read current config
storlaunch sell abandoned-cart config get
# Enable with a 6h delay and a discount attachment
storlaunch sell abandoned-cart config set \
--enable \
--delay-hours 6 \
--subject "Your cart at {merchant} is still here" \
--preview "Plus a little something for coming back" \
--discount-code WELCOME10
# Clear the discount attachment
storlaunch sell abandoned-cart config set --no-discount-code
# Recent reminders
storlaunch sell abandoned-cart list --limit 20
# Recovery stats (default 30d)
storlaunch sell abandoned-cart stats --window 7dPixels & conversion tracking
Per-merchant Meta / Google / TikTok pixel config. Matches the /dashboard/marketing/pixels page — useful when you're scripting a staging environment or rotating a CAPI token from CI.
# Read current config storlaunch sell pixels get # Set all three platforms at once storlaunch sell pixels set \ --meta 1234567890 \ --meta-capi-token EAAB... \ --google-analytics G-ABC123 \ --google-ads AW-12345 --google-ads-label abc123 \ --tiktok C123... # Partial update — only touches Meta fields storlaunch sell pixels set --meta-test-event TEST42 # Clear just one platform (leaves the others intact) storlaunch sell pixels clear --platform google # Fire a test Purchase through Meta CAPI using an existing session id # — Meta Events Manager → Test Events will show the payload. storlaunch sell pixels test --platform meta --session cs_abc123
Product feeds (Google / Meta / TikTok)
Print the three public feed URLs, inspect the XML a crawler sees (counts items, flags missing GTIN / image), and manage the merchant config. Mirrors the /dashboard/marketing/feeds page. --merchant is required for URL/inspect commands; config commands use your authed account.
# Print all three feed URLs (no API hit — computed from the CLI) storlaunch sell feeds urls --merchant my-shop # Google: https://api.storlaunch.forjio.com/api/v1/storefront/public/my-shop/feeds/google.xml # Meta: https://api.storlaunch.forjio.com/api/v1/storefront/public/my-shop/feeds/meta.xml # TikTok: https://api.storlaunch.forjio.com/api/v1/storefront/public/my-shop/feeds/tiktok.xml # Fetch + validate the Google feed (same as ad-network crawler sees) storlaunch sell feeds inspect --merchant my-shop # items: 14 # missingGtin: 3 (emit g:identifier_exists=no) # missingImage: 0 # sample titles: "Classic Tee", "Vintage Jacket", ... # Non-zero exit on 404 (feeds disabled) or upstream errors. # Switch format for Meta / TikTok feed preview storlaunch sell feeds inspect --merchant my-shop --format meta storlaunch sell feeds inspect --merchant my-shop --format tiktok # Read current account-wide feed config storlaunch sell feeds config get # Enable + set default Google product category fallback storlaunch sell feeds config set \ --enable \ --default-category "Apparel & Accessories > Clothing > Shirts & Tops" # Include draft (published=false) products in feeds — off by default storlaunch sell feeds config set --include-unpublished storlaunch sell feeds config set --no-include-unpublished # Disable feeds globally (public URLs return 404 until re-enabled) storlaunch sell feeds config set --disable
Blog CMS
Publish long-form content from the terminal — handy for CI pipelines that post release notes from a changelog/ folder. Mirrors the /dashboard/marketing/blog editor. Drafts are unlimited; tier limit only applies on publish.
# List posts (or filter by status) storlaunch sell blog list storlaunch sell blog list --status draft storlaunch sell blog list --status published --limit 20 # Fetch a single post with full body storlaunch sell blog get clr8abc... # Create a new draft from inline content storlaunch sell blog create \ --title "How we doubled conversions" \ --body "# Intro\n\nMarkdown body here." # Create + publish in one call from a markdown file on disk storlaunch sell blog create \ --title "Release 1.2.0" \ --body-file ./changelog/1.2.0.md \ --tags "release,changelog" \ --author "Bang Adi" \ --cover-image https://.../cover.jpg \ --publish # Partial update — change title + excerpt only storlaunch sell blog update clr8abc... \ --title "How we 2× conversions (update)" \ --excerpt "Refreshed numbers from Q1 2026." # Publish / unpublish (unpublish keeps publishedAt history) storlaunch sell blog publish clr8abc... storlaunch sell blog unpublish clr8abc... # Permanent delete storlaunch sell blog delete clr8abc...
Referral program
Configure the per-merchant referral program. Pro tier and up. Update merges with current state so you only pass the flags you want to change.
# Show current program config storlaunch sell referral-program get # Enable + configure rewards (referrer gets 10%, new buyer gets 20%) storlaunch sell referral-program update \ --enable \ --reward-type percent \ --referrer-value 10 \ --referee-value 20 \ --currency IDR \ --attribution-window-days 30 \ --reward-expiry-days 90 \ --terms "One-time use per code. Not combinable with other promotions." # Cap a single referrer to 5 successful conversions storlaunch sell referral-program update --max-rewards-per-referrer 5 # Remove the cap storlaunch sell referral-program update --no-max-rewards-per-referrer # Top referrers (sorted by rewards, newest tiebreak) storlaunch sell referral-program links --limit 50 # Recent attribution lifecycle rows storlaunch sell referral-program attributions storlaunch sell referral-program attributions --status rewarded storlaunch sell referral-program attributions --status voided # Aggregate stats storlaunch sell referral-program stats # Disable (existing reward codes stay redeemable) storlaunch sell referral-program update --disable
Buyer-side — your referral link + earned rewards
# Sign in as a buyer first (OTP via email) storlaunch buy auth login --merchant my-shop # Show your unique referral link + lifetime stats storlaunch buy referral get-link --merchant my-shop # Link: https://storlaunch.forjio.com/s/my-shop/r/abcd1234 # Code: abcd1234 # Stats: # Clicks: 12 # Signups: 3 # Rewards: 2 # List reward codes you've earned from referrals storlaunch buy referral rewards --merchant my-shop
SEO inspection
Unauthenticated checks against your live storefront HTML. Use after a launch to verify crawlers can see what you expect, or in CI to guard against regressions.
# Pass/fail per check: title, meta description, og tags, canonical, h1, JSON-LD storlaunch sell seo inspect --merchant my-shop # ✓ <title>: My Shop # ✓ meta description: Premium digital goods from My Shop # ✓ og:title: My Shop # ✓ og:image: https://storlaunch.forjio.com/s/my-shop/opengraph-image # ✓ twitter:card: summary_large_image # ✓ canonical: https://storlaunch.forjio.com/s/my-shop # ✓ <h1>: My Shop # ✓ JSON-LD: Organization, WebSite # All checks passed # Summarize your sitemap — verify every product is listed storlaunch sell seo sitemap --merchant my-shop # 42 URLs # Oldest: 2025-11-03 # Newest: 2026-04-14 # Extract and pretty-print the Product JSON-LD — paste into Google's Rich Results Test storlaunch sell seo product-schema --merchant my-shop --product widget # Point at staging while you're iterating storlaunch sell seo inspect --merchant my-shop --base-url https://staging.storlaunch.forjio.com
Payouts
Request withdrawals to your bank. Manual mode (platform wires + marks paid) now, Xendit disbursement upgrade path when XenPlatform is approved.
# Set default bank account (once per merchant)
storlaunch sell payouts bank-account set \
--name "Bank Central Asia" \
--number "1234567890" \
--holder "Merchant Name" \
--code "BCA"
storlaunch sell payouts bank-account get
# Available balance
storlaunch sell payouts balance
# { ledgerBalance, locked, available, currency }
# Request a payout (uses default bank)
storlaunch sell payouts create \
--amount 500000 --currency IDR \
--note "April earnings"
# Override destination for a one-off payout
storlaunch sell payouts create \
--amount 1000000 --currency IDR \
--bank-name "Mandiri" --bank-number "987654321" --bank-holder "Merchant"
# List + filter
storlaunch sell payouts list --status pending
storlaunch sell payouts list --status paid --limit 20
storlaunch sell payouts get po_abc123
# Cancel a pending payout
storlaunch sell payouts cancel po_abc123Financial reports
P&L and cash-flow reports over a date range, plus a raw ledger CSV export.
# P&L for a month (pretty-printed) storlaunch sell reports pnl \ --from 2026-04-01T00:00:00Z \ --to 2026-04-30T23:59:59Z # Cash flow (opening/closing balance + category breakdown) storlaunch sell reports cash-flow \ --from 2026-04-01T00:00:00Z \ --to 2026-04-30T23:59:59Z \ --currency IDR # Machine-readable JSON for scripting storlaunch sell reports pnl \ --from 2026-04-01T00:00:00Z --to 2026-04-30T23:59:59Z \ --json # CSV export — to stdout storlaunch sell reports export-ledger \ --from 2026-04-01T00:00:00Z --to 2026-04-30T23:59:59Z # CSV export — to file storlaunch sell reports export-ledger \ --from 2026-04-01T00:00:00Z --to 2026-04-30T23:59:59Z \ --out /tmp/april.csv
Shipments & tracking
# List shipments (filterable by status) storlaunch sell shipping shipments list --status delivered # Get a shipment with its tracking events storlaunch sell shipping shipments get shp_01HX... # Print the shipping label URL (auto-fetched from courier) storlaunch sell shipping shipments label shp_01HX... # Cancel a shipment (only before courier pickup) storlaunch sell shipping shipments cancel shp_01HX... \ --reason "Buyer changed mind" # Track any waybill (public endpoint — works for 3rd-party too) storlaunch sell shipping track JX1234567890 --courier jne
Subscriptions & plans
# Create a plan storlaunch sell payment plans create \ --name "Pro Monthly" \ --amount 99000 \ --interval monthly \ --trial-days 14 # List subscriptions storlaunch sell payment subscriptions list # Cancel a subscription storlaunch sell payment subscriptions cancel sub_01HX...
Webhooks
# Register an endpoint storlaunch sell webhook endpoints create \ --url "https://myapp.com/storlaunch/webhooks" \ --events "checkout.session.completed,subscription.updated" # List endpoints storlaunch sell webhook endpoints list # Resend a failed event storlaunch sell webhook events resend evt_01HX...
Full command reference
| Command | Description |
|---|---|
storlaunch sell auth login --key <key> | Authenticate with an API key (sk_live_* or sk_test_*) |
storlaunch sell auth logout | Clear stored seller credentials |
storlaunch sell auth whoami | Show the active API key + account |
storlaunch sell payment checkouts create|list|get | Manage checkout sessions |
storlaunch sell payment plans create|list|update|archive | Manage subscription plans |
storlaunch sell payment subscriptions list|get|cancel | Manage subscriptions |
storlaunch sell payment customers list|create|get | Manage your customer roster |
storlaunch sell payment invoices list|get | List/inspect invoices |
storlaunch sell payment refunds create | Issue a refund |
storlaunch sell storefront products list|create|update|delete|upload | Manage your product catalog (digital, subscription, physical) |
storlaunch sell storefront licenses list|get|revoke|validate | Manage license keys |
storlaunch sell storefront deliveries list|get | Inspect digital deliveries |
storlaunch sell inventory variants create|list|update|delete | Manage product variants (SKUs) |
storlaunch sell inventory warehouses create|list|update|delete | Manage warehouses / stock locations |
storlaunch sell inventory stock get|adjust|history|alerts|import | Stock levels, adjustments, history, low-stock alerts, CSV import |
storlaunch sell shipping origin get|set | Configure merchant shipping origin |
storlaunch sell shipping couriers list | List Biteship couriers (public) |
storlaunch sell shipping areas search <query> | Look up Biteship area IDs for origin config |
storlaunch sell shipping shipments list|get|cancel|label | Manage physical shipments |
storlaunch sell shipping track <waybill> --courier <code> | Track any waybill (public) |
storlaunch sell ledger entries list|get | List/inspect ledger entries with filters |
storlaunch sell ledger balance account|customer <id> | Running balance — account-wide or per customer |
storlaunch sell ledger adjustments create | Post a manual adjustment (credit/debit) |
storlaunch sell reports pnl --from --to | P&L statement for a period |
storlaunch sell reports cash-flow --from --to | Cash flow (opening + closing + breakdown) |
storlaunch sell reports export-ledger --from --to [--out] | CSV export of ledger entries |
storlaunch sell payouts bank-account get|set | Manage default payout bank account |
storlaunch sell payouts balance | Available + locked + ledger balance |
storlaunch sell payouts list|get|create|cancel | Request / track / cancel payouts |
storlaunch sell discount-codes create|list|get|update|delete | Manage promo codes (percent / fixed / shipping; --public for storefront banner) |
storlaunch sell discount-codes validate --merchant --code --subtotal | Dry-run validate a code against a cart |
storlaunch sell pixels get|set|clear|test | Meta Pixel/CAPI + Google Analytics/Ads + TikTok Pixel config |
storlaunch sell abandoned-cart config get|set | Abandoned-cart recovery config (delay, subject, preview, discount) |
storlaunch sell abandoned-cart list|stats | Recent reminders + recovery rate / revenue |
storlaunch sell feeds urls --merchant <slug> | Print the Google / Meta / TikTok product-feed URLs |
storlaunch sell feeds inspect --merchant <slug> [--format meta|tiktok] | Fetch + validate the XML feed — counts items, flags missing GTIN/image |
storlaunch sell feeds config get|set | Feed enable, default Google product category, include-drafts |
storlaunch sell blog list|get | List / inspect blog posts (filter by status) |
storlaunch sell blog create|update|publish|unpublish|delete | Manage blog posts (markdown body via --body or --body-file) |
storlaunch sell seo inspect --merchant <slug> | Check storefront for title, meta, og:image, canonical, h1, JSON-LD |
storlaunch sell seo sitemap --merchant <slug> | Summarize the per-merchant sitemap (URL count + oldest/newest) |
storlaunch sell seo product-schema --merchant --product | Extract and print a product page’s Product JSON-LD |
storlaunch sell webhook endpoints list|create|update|delete | Manage webhook endpoints |
storlaunch sell webhook events list|resend | Inspect and retry webhook events |
storlaunch sell config get|set|path | Inspect/update local CLI configuration |
Buyer commands (buy)
Shop, pay, and manage your purchases with any Storlaunch-powered merchant, straight from the terminal.
Sign in (per merchant)
Buyer sessions are scoped per merchant. You log in once per shop using email + OTP:
storlaunch buy auth login --merchant my-shop # Email: you@example.com # Code sent to you@example.com. Check your inbox. # 6-digit code: 123456 # ✓ Signed in as you@example.com for my-shop
Session token is stored in ~/.storlaunch/buyer/<slug>.json (HTTP-only equivalent — not accessible to other applications). Good for 30 days or until you sign out.
Browse and buy
# Browse a merchant's catalog storlaunch buy shop my-shop # Inspect a product storlaunch buy shop my-shop tshirt-red # Buy — opens the payment URL in your browser after you confirm storlaunch buy checkout my-shop tshirt-red # For physical products you pick: # 1. Which saved address (or add one first) # 2. Which courier (regular / same-day / instant) # 3. Confirm total → opens Xendit or PayPal checkout page
Cart (multi-item)
Build up a cart and check out everything in one session. Requires sign-in for server-side cart persistence.
# View current cart storlaunch buy cart list --merchant my-shop # Add items — attach a note for fulfillment (gift wrap, sizing, etc.) storlaunch buy cart add --merchant my-shop --product tshirt --quantity 2 --note "Size M in chest" storlaunch buy cart add --merchant my-shop --product mug --variant var_blue # Edit / clear the note on an existing line item storlaunch buy cart note --merchant my-shop --item ckl9... --text "Gift wrap please" storlaunch buy cart note --merchant my-shop --item ckl9... # Remove a line item by ID (from cart list) storlaunch buy cart remove --merchant my-shop --item ckl9... # Clear the whole cart storlaunch buy cart clear --merchant my-shop # Check out everything (digital MVP — physical items still use 'buy checkout') storlaunch buy cart checkout --merchant my-shop \ --discount-code SUMMER20
Track your orders
# List orders with a merchant storlaunch buy orders list --merchant my-shop # Show full detail — shipment events, downloads, invoice storlaunch buy orders get cs_01HX... --merchant my-shop
Subscriptions
# List your subscriptions storlaunch buy subs list --merchant my-shop # Cancel (keeps access until end of current billing period) storlaunch buy subs cancel sub_01HX... --merchant my-shop # Cancel immediately (rare — usually end-of-period is what you want) storlaunch buy subs cancel sub_01HX... --merchant my-shop --immediate
Invoices
# List invoices storlaunch buy invoices list --merchant my-shop # Download the PDF (defaults to ./invoice-<id>.pdf) storlaunch buy invoices download inv_01HX... --merchant my-shop storlaunch buy invoices download inv_01HX... --merchant my-shop --out ./my-invoice.pdf
Addresses
# List saved addresses storlaunch buy addresses list --merchant my-shop # Add one storlaunch buy addresses add --merchant my-shop \ --label "Home" \ --name "Alice Santoso" \ --phone "081234567890" \ --address "Jl. Asia Afrika No. 65" \ --postal "40111" \ --lat -6.9210 --lng 107.6090 \ --default # Set default storlaunch buy addresses default addr_01HX... --merchant my-shop # Edit or delete storlaunch buy addresses edit addr_01HX... --merchant my-shop --phone "089999" storlaunch buy addresses delete addr_01HX... --merchant my-shop
Profile
# Show profile (email, counts, member since) storlaunch buy profile show --merchant my-shop # Update display name storlaunch buy profile update --merchant my-shop --name "Alice Santoso" # To change email, go to the merchant's web portal — email change requires # OTP on the NEW address and is easier to do via the web UI.
Full buyer command reference
| Command | Description |
|---|---|
storlaunch buy auth login --merchant <slug> | Interactive email+OTP login for one merchant |
storlaunch buy auth logout --merchant <slug> | Clear session for one merchant |
storlaunch buy auth whoami [--merchant <slug>] | Show active buyer session(s) |
storlaunch buy shop <merchant> [product] | Browse a merchant's catalog, view a product |
storlaunch buy checkout <merchant> <product> | Interactive purchase (addr+courier if physical), opens payment URL |
storlaunch buy cart list|add|note|remove|clear|checkout | Manage cart + per-item notes + multi-item checkout |
storlaunch buy orders list|get --merchant <slug> | Your order history + details |
storlaunch buy subs list|get|cancel [--immediate] | View and cancel subscriptions |
storlaunch buy invoices list|download --merchant <slug> | View and download invoice PDFs |
storlaunch buy addresses list|add|edit|delete|default | Manage shipping addresses |
storlaunch buy profile show|update | View and edit your profile with a merchant |
Automation examples
The CLI is script-friendly — every subcommand accepts --json for machine-readable output. Pipe through jq:
# Download the latest invoice PDF LATEST=$(storlaunch buy invoices list --merchant my-shop --json | jq -r '.[0].id') storlaunch buy invoices download "$LATEST" --merchant my-shop # Find orders that haven't shipped yet storlaunch buy orders list --merchant my-shop --json | \ jq '.[] | select(.shipment.status == "pending") | .id'
Configuration
Both seller credentials and per-merchant buyer sessions live under ~/.storlaunch/.
~/.storlaunch/
├── config.json # Seller API key + API URL
└── buyer/
├── my-shop.json # Buyer session for my-shop
└── another-merchant.jsonEnvironment variables
| Variable | Purpose |
|---|---|
STORLAUNCH_API_KEY | Override seller API key — wins over stored config. CI-friendly. |
STORLAUNCH_API_URL | API base URL. Defaults to https://storlaunch.forjio.com/api/v1. |
Exit codes
| Code | Meaning |
|---|---|
0 | Success |
1 | General error (validation, network, missing input) |
2 | Authentication failed (401/403) |
3 | Rate limited (429) — retry after a short delay |
Troubleshooting
“Not signed in” when running buy commands
Buyer sessions are per merchant. Run storlaunch buy auth login --merchant <slug> first. Sessions last 30 days.
OTP never arrives
Check the email spam folder. The sender is noreply@storlaunch.forjio.com. Rate limit is 3 codes per minute per email — wait a minute and retry if you hit it.
Payment URL doesn’t open automatically
The CLI tries open (macOS), xdg-open (Linux), or start (Windows). Copy the URL printed after Pay here: and paste into a browser. Or pass --no-open to skip the launch.
Upgrading
0.13.x → 0.14.0: adds sell blog (list, get, create, update, publish, unpublish, delete) for the blog CMS. --body-file loads markdown from disk, --publish creates + publishes in one call. Backing endpoints at /api/v1/account/blog/posts. No breaking changes.
0.12.x → 0.13.0: adds sell feeds (urls, inspect, config get/set) for Google Shopping / Meta Catalog / TikTok Catalog product feeds. Backing endpoints at /api/v1/storefront/public/:merchantSlug/feeds/{google,meta,tiktok}.xml (public) and /api/v1/account/feeds (authed). No breaking changes.
0.11.x → 0.12.0: adds sell abandoned-cart (config get/set, list, stats) for the abandoned-cart recovery automation. Backing endpoints at /api/v1/account/abandoned-cart/* and the new cron sweep at POST /api/v1/cron/abandoned-cart-sweep. No breaking changes.
0.10.x → 0.11.0: adds sell pixels get/set/clear/test for per-merchant Meta / Google / TikTok conversion tracking config. Backing endpoints at /api/v1/account/pixels and /api/v1/storefront/public/:merchantSlug/pixels. No breaking changes.
0.9.x → 0.10.0: adds sell seo inspect, sell seo sitemap, and sell seo product-schema — unauthenticated inspections for your live storefront SEO. No breaking changes.
0.8.x → 0.9.0: sell discount-codes create and update now accept --public / --private to toggle the storefront promo banner. buy cart add takes an optional --note; new buy cart note command edits or clears the note on an existing line item. No breaking changes.
0.7.x → 0.8.0: adds buy cart (list / add / remove / clear / checkout) — multi-item buyer flow that mirrors the storefront cart. Backed by /api/v1/checkout/cart/* and the new POST /api/v1/storefront/public/:merchantSlug/cart-checkout endpoint. No breaking changes.
0.6.x → 0.7.0: adds sell discount-codes (CRUD + public validate dry-run). Backing endpoints at /api/v1/discount-codes and POST /api/v1/storefront/public/validate-discount. Also adds discountCode to the checkout-session create body.
0.5.x → 0.6.0: adds sell payouts (bank-account, balance, list/get/create/cancel). Backing endpoints at /api/v1/payouts/*. No breaking changes.
0.4.x → 0.5.0: adds sell reports (pnl, cash-flow, export-ledger). Backing endpoints at /api/v1/reports/*. No breaking changes.
0.3.x → 0.4.0: adds sell ledger (entries, balance, adjustments). Backing endpoints live at /api/v1/ledger/*. No breaking changes.
0.2.x → 0.3.0: adds sell inventory (variants, warehouses, stock) and sell shipping (origin, couriers, shipments, track), plus --type physical and dimension flags on product create/update. No breaking changes — existing scripts keep working unchanged.
0.1.x → 0.2.0: commands moved under the sell namespace. Old storlaunch checkout create became storlaunch sell payment checkouts create.
Building with Storlaunch?
See the REST API reference for the underlying endpoints the CLI wraps.