Marketplace Documentation
Understanding the two-sided pharmacy marketplace: how buyers, sellers, and the platform interact.
Platform Overview
This is a two-sided marketplace connecting verified Australian pharmacy sellers with pharmacy professionals and consumers. The platform acts as the merchant of record: buyers purchase from the platform (not directly from sellers), sellers receive transparent payouts, and disputes are managed by our admin team.
Key Features
- ✓ Verified sellers only — AHPRA registration & ABN documentation required
- ✓ Anonymous to buyers — sellers hidden, all invoices show platform name
- ✓ 5% platform take-rate — deducted at escrow release
- ✓ 72-hour escrow hold — auto-release after buyer confirmation or 72h elapsed
- ✓ TGA-compliant — S2/S3/S4 schedules enforced, S8 blocked
- ✓ Cold-chain ready — special carrier workflow for temperature-controlled items
Buyer Experience
Login-Gated Portal
Buyers must create an account and verify their email to access pricing and product listings. This protects the marketplace and ensures only legitimate customers can purchase.
Anonymous Seller Identity
Product pages show "Sold by: Verified Pharmacy Seller" — no business names, ABNs, or contact details. All invoices are issued by the platform trading name, not the seller. This maintains buyer privacy and ensures the platform controls all customer relationships.
TGA Schedule Restrictions
- S2 (OTC) — No restrictions. Standard checkout.
- S3 (Pharmacist-Only) — Buyers must flag "pharmacy professional" at registration.
- S4 (Prescription) — Requires verified prescription upload per order.
- S8 (Controlled) — Completely blocked from marketplace.
Order Confirmation & Escrow Release
After payment, an escrow account holds funds for 72 hours. Buyer receives a "Confirm Receipt" button once order is delivered. Clicking it immediately releases funds to the seller. If buyer doesn't confirm, funds auto-release after 72 hours.
Invoice & Proof of Purchase
Buyers can download a tax invoice showing the platform's trading name (not seller details). Useful for GST claims and accounting.
Seller Onboarding & Verification
Registration Flow
- Create account: Email, password, first/last name
- Business details: Legal business name, ABN (11-digit), AHPRA number, pharmacy name & address
- Upload documents: AHPRA certificate, pharmacy license, ABN documentation (PDF/JPG, max 5MB each)
- Pending review: Application queued for admin approval
Admin Verification Queue
Admins review documents in Filament dashboard under Marketplace → Sellers. They can:
- • View uploaded documents inline (PDF/image preview)
- • Approve seller (instant email notification, access to seller portal)
- • Reject with notes (seller receives rejection reason, can re-apply)
- • Suspend seller (all listings withdrawn, account locked)
Note: AHPRA verification is manual — no public API exists. Admin cross-references documents against ahpra.gov.au register.
Payout Setup (Stripe Connect)
After approval, seller sees "Set Up Payouts" link in portal. This redirects to Stripe's hosted onboarding where the seller:
- • Verifies bank account details
- • Provides GST/tax ID
- • Confirms identity
Once complete, seller is ready to receive payouts.
Listing Management & TGA Compliance
Creating a Listing
Seller navigates to Seller Portal → Listings → Create and fills in:
- • Product (search existing catalog or create new)
- • Seller price & stock quantity
- • TGA schedule (S2/S3/S4)
- • Expiry date & batch number (for medicines)
- • Cold-chain required? (checkbox for temperature-controlled items)
- • Photos (mobile-optimised upload with AI enhancement option)
Listing Status Workflow
Draft → Seller creates listing (hidden from buyers)
Pending Review → Seller submits for moderation
Approved → Admin approves, listing visible to buyers
Rejected → Admin rejects with notes, seller can edit and resubmit
Near Expiry → Auto-flagged at 90 days before expiry date
Withdrawn → Seller manually delists
Listing Moderation Queue (Admin)
Admins review listings under Marketplace → Listing Moderation:
- • View product details, TGA schedule, expiry date, seller name
- • Approve listing (goes live)
- • Reject with notes (sent to seller)
- • Flag near-expiry (manual)
- • Bulk approve for trusted sellers
Cron jobs run daily:
- • 6:00 AM: Flag listings expiring within 90 days
- • 6:30 AM: Auto-delist expired listings
TGA Schedule Enforcement
S8 (Controlled Drugs): Hard-blocked — sellers cannot create listings.
S4 (Prescription): Requires buyer to upload valid prescription at checkout. Seller confirms prescription legitimacy before dispatch.
S3 (Pharmacist-Only): Buyer must self-attest as pharmacy professional at registration.
S2 (OTC): No restrictions.
Orders & Fulfillment
Seller Portal Orders
Seller navigates to Seller Portal → Orders to see all orders containing their listings. Each order shows:
- • Order ID, buyer location (state only, no full address)
- • Items, quantities, seller price
- • Payment status (paid = escrow held)
- • Shipping status
Shipping Label Generation
Once payment is confirmed, seller sees "Print Label" button. Clicking it generates a pre-paid shipping label (platform covers postage). Label shows:
- • Platform name & return address (NOT seller address)
- • Buyer delivery address (state-level, no seller details)
- • Barcode for tracking
Seller prints label, packs item, and drops off at courier. Platform tracks delivery.
Cold-Chain Workflow
For cold-chain products (e.g., insulin, vaccines):
- Order placed: Platform team alerted
- Seller receives email: "Cold-chain order — use insulated packaging + dry ice" with PDF guidelines
- Admin books carrier: Manually books TNT Pharmaceutical or Lach's Couriers (enterprise carriers)
- Tracking uploaded: Admin enters tracking number in admin panel
- Seller ships: Within 24-hour window using special packaging
Future: API integration with cold-chain carriers to automate label generation.
Escrow & Payments
How Escrow Works
Platform uses a three-party escrow:
- Buyer pays: Stripe charges buyer's card, funds go to platform Stripe account
- Escrow account created: Order total held in escrow (status: "held")
- Funds released: Buyer clicks "Confirm Receipt" after delivery OR 72 hours pass (auto-release)
- Payout to seller: 5% platform fee deducted, remainder transferred to seller's Stripe Connect account
Platform Take-Rate (5%)
Example: Buyer purchases antibiotics for $100 AUD
- • Order total: $100.00
- • Platform fee (5%): $5.00
- • Seller payout: $95.00
Fee is deducted at escrow release. Per-seller override available in admin panel.
Auto-Release vs Manual
Auto-release (default): 72 hours after payment, escrow releases if no dispute is open. Hourly cron runs the release job.
Manual release: Buyer clicks "Confirm Receipt" button — immediate release.
Admin override: Admins can manually release or hold escrow from Filament (e.g., to chase non-confirmations).
Seller Payout History
Seller views all payouts in Seller Portal → Payouts. Each payout shows:
- • Order reference
- • Gross sale amount
- • Platform fee deduction
- • Net payout amount
- • Payout status (pending, processing, paid)
- • Remittance PDF (tax-compliant breakdown)
Admin Tools & Reporting
Marketplace Dashboard
Admins access /manager → Marketplace Dashboard for real-time metrics:
- • GMV (Gross Merchandise Value): Total orders processed
- • Platform Revenue: Total 5% take-rate collected
- • Orders: Count by status (pending, paid, shipped, delivered)
- • Active Sellers: Approved seller count
- • Active Listings: Approved product listings
- • Escrow Status: Funds held vs. released vs. disputed
- • Verification Funnel: Applications → Documents → Approved conversion rate
- • Pending Moderation: Listings awaiting review count
- • Top Categories: GMV by product category
- • Dispute Rate: Disputes as % of total orders
Dispute Resolution Console
Buyers can raise disputes from Account → Orders → [Order] → Raise Dispute. Admins view disputes under Marketplace → Disputes:
- • Full email/message thread (buyer ↔ seller ↔ admin)
- • Add messages (sent to both parties)
- • Resolution options: Refund buyer, release to seller, split
Escrow held until dispute resolved. Admin decision auto-triggers refund or payout.
Compliance & Legal
PDF Invoices
Buyer invoice: Tax invoice from platform trading name + ABN, itemised products, GST, total. Downloadable from order history.
Seller remittance: Income statement showing order ref, gross sale, platform fee deduction (-5%), GST on fee, net payout. Attached to payout email.
Transactional Emails (8 Flows)
Platform sends automated emails at key milestones:
- Seller registration: Confirmation + pending review notice
- Seller approval/rejection: Status update with next steps
- Purchase confirmation: Buyer gets order receipt + seller gets order notification + cold-chain instructions (if applicable)
- Listing status change: Seller notified when listing approved/rejected/near-expiry
- Dispute opened: Both parties notified
- Dispute resolved: Resolution outcome with refund/payout details
- Escrow released: Seller gets payout notification with remittance PDF
T&Cs & Privacy
Marketplace-specific pages at /terms, /privacy, /tga-guidelines, /cold-chain-guidelines.
Buyers accept T&Cs at checkout. Sellers accept at registration.
Payment Security & Fraud
All payments processed via Stripe. Stripe Radar detects fraudulent cards. Platform holds escrow for 72h to allow for dispute investigation.
What's Implemented
✓ Two-sided marketplace architecture (sellers + buyers)
✓ Seller verification with AHPRA & ABN documentation
✓ Listing management & TGA schedule enforcement (S2/S3/S4; S8 blocked)
✓ Login-gated buyer portal (pricing hidden until verified)
✓ Anonymous seller identity (platform controls all customer relationships)
✓ Order management with escrow payment system
✓ 5% platform take-rate auto-deducted at release
✓ PDF invoices (buyer tax invoice + seller remittance)
✓ Shipping label generation (platform name + return address)
✓ Cold-chain workflow with packaging guidelines
✓ 8 transactional email flows (verification, purchase, disputes, etc.)
✓ Admin dashboard with GMV, revenue, seller funnel analytics
✓ Dispute resolution console (admin-mediated)
✓ Filament resources for seller verification, listing moderation, disputes
✓ Full-text search (Meilisearch integration)
✓ Mobile-optimised UI (responsive design, accessible)
Future Enhancements
→ AI-powered listing photo enhancement (background removal, lighting)
→ Automated cold-chain carrier API integration (eliminate manual booking)
→ Klaviyo email campaign flows (segmentation, analytics)
→ Xero accounting sync (real-time payout reconciliation)
→ AI chatbot for pharmacist FAQs (OpenAI Assistants)
→ GA4 + GTM with marketplace-specific event tracking
→ Microsoft Clarity heatmaps for UX optimization
Need Help?
For support inquiries, visit the Support Center or email us at support@stoar.com.au.