LCLensChicago.comPhotography Marketplace
← LensChicago.comLensChicago.com Photography Marketplace · v2.17.0

Platform documentation

Ownership, selling, payouts, and operations.

This page explains how the LensChicago marketplace is intended to work. Final customer terms, photographer agreements, privacy language, tax handling, and refund rules should be reviewed by qualified legal and accounting professionals before accepting live payments.

Current payment work

Follow the Stripe test-mode checklist.

The marketplace now uses a multi-photographer architecture that supersedes older single-photographer destination-charge notes on this page.

Open detailed Stripe next steps

00 · Brand and domains

LensChicago.com is the primary destination.

LensChicago.com

The canonical brand and customer-facing domain. It communicates photography and Chicago immediately, supports both photographer hiring and event-photo discovery, and uses the familiar .com extension.

BestPhoto.store

The secondary marketing domain. Use it for short campaigns, QR codes, and purchase-focused promotions, then direct visitors to the equivalent LensChicago.com page to preserve one brand and one search identity.

Positioning: Hire a photographer. Find your photos. LensChicago serves clients planning future coverage, event attendees looking for images, and approved photographers selling their work.

01 · Bluehost DNS runbook

Point all four hostnames to the marketplace.

The domains are already registered with this Site and are waiting for DNS validation. Add the records below in Bluehost. LensChicago.com is canonical; the application permanently redirects www.lenschicago.com, bestphoto.store, and www.bestphoto.store to the matching LensChicago.com URL.

Before editing: export or screenshot the current DNS zone. Preserve all MX, SPF, DKIM, DMARC, Microsoft 365, verification, and other email records. Change only conflicting website records at @ and www. Do not change the nameservers.

Download LensChicago DNS zone file

The download is a BIND-format DNS fragment containing only the seven required LensChicago.com website and validation records. Export your current Bluehost zone first. If Bluehost warns that importing will replace the entire zone, cancel and use Add record → Multiple instead so existing email records are preserved.

LensChicago.com — exact records

TypeBluehost Host/NamePoints to / ValueTTL
A@162.159.143.30300 during cutover
A@172.66.3.26300 during cutover
TXT_openai-site-verificationopenai-site-verification=Gpwdz6mzLY0FCNPyn03eEPzJ2p26grCWWhfzU9VGRi8300
TXT_cf-custom-hostname6a39e461-46ae-4c12-980d-7f896d115aee300
CNAMEwwwcustom-domains.chatgpt.site300
TXT_openai-site-verification.wwwopenai-site-verification=5y8TcS2nnNIWLbpBaeV9vrssZDSFlZr8nXOO-8DdH0M300
TXT_cf-custom-hostname.www0185e9e5-f397-4730-b6b8-fe2d1102d348300

BestPhoto.store — exact records

TypeBluehost Host/NamePoints to / ValueTTL
A@162.159.143.30300 during cutover
A@172.66.3.26300 during cutover
TXT_openai-site-verificationopenai-site-verification=biboqbtxXFn37wn9GFgko2OMHVq6lFw2VkpzgE0xvyU300
TXT_cf-custom-hostname5f0f3605-e040-491c-8363-732637fc9533300
CNAMEwwwcustom-domains.chatgpt.site300
TXT_openai-site-verification.wwwopenai-site-verification=vTLVofrKOM6zGb8KgwYH6DkC_lqPcMt_qivT4blVDyo300
TXT_cf-custom-hostname.www013c309f-31f2-48ed-ba8a-0f44e9014c3b300

Bluehost procedure

  1. Sign in to Bluehost, open Domains, select the domain, and open DNS. If the newer DNS screen is unavailable, open Advanced → Zone Editor → Manage.
  2. For each domain, remove or edit only conflicting A/AAAA/CNAME records whose host is @ or www. A hostname cannot have both a CNAME and another A/AAAA record.
  3. Add the two apex A records, the www CNAME, and all four TXT validation records shown for that domain. Bluehost may append the domain automatically; enter the shorter Host/Name shown above unless its form explicitly requests the full hostname.
  4. Save the records. DNS can begin updating within minutes but cached results can take longer. Return to the Site domain settings and refresh status until both domain and SSL show active.
  5. Test all four HTTPS addresses in a normal browser. Confirm the three secondary hostnames redirect to https://lenschicago.com, paths are preserved, and there is no certificate warning.
  6. After the cutover is stable for 24–48 hours, raise website-record TTLs to 3600 seconds. Keep the old hosted address available as the rollback target.

Do not use URL forwarding as the primary LensChicago.com connection. DNS must first validate each hostname and issue SSL. The application then performs the permanent canonical redirects.

01 · Ownership

Two distinct copyrights.

Website and platform

Copyright © 2026 Best Networks, Inc. The website design, platform software, database structure, written platform content, marketplace branding, and administrative workflows are protected, except for properly licensed third-party components.

Individual photography

Each photographer retains copyright in photographs they created unless a separate written assignment says otherwise. Uploading does not transfer the photographer’s copyright to Best Networks, Inc.

The photographer grants Best Networks, Inc. a limited, non-exclusive license to store, resize, watermark, display, market, deliver, and process authorized sales of uploaded work while it is listed on the platform.

02 · Photographer responsibilities

Upload, price, publish, and sell.

  1. Create a photographer profile and complete identity and payout verification.
  2. Create projects such as events, headshots, weddings, corporate assignments, sports, or portfolio collections.
  3. Upload only work the photographer owns or is authorized to license.
  4. Set separate web/social, high-resolution, and commercial-license prices.
  5. Confirm all necessary model, participant, property, venue, and client permissions.
  6. Publish or return a gallery to draft at any time, subject to fulfilled orders and record-retention requirements.

Best Networks may review, suspend, remove, or reject content that creates legal, privacy, quality, security, or reputational risk.

03 · Marketplace economics

Photographer 75% · Best Networks 25%.

Example saleCustomer pricePhotographer shareBest Networks fee
Web/social license$20.00$15.00$5.00
High-resolution license$40.00$30.00$10.00
Commercial license$100.00$75.00$25.00

Working accounting rule: the 75/25 split is calculated on the photograph or license sale price. Payment-processing fees, sales taxes, refunds, disputes, chargebacks, and currency-conversion costs are tracked separately. Best Networks and its accountant must approve the final treatment before launch.

05 · Billing and payout setup

Recommended: Stripe Connect + hosted Checkout.

Use a Best Networks Stripe platform account, Express connected accounts for photographers, Stripe-hosted onboarding, and destination charges. For each single-photographer order, the server calculates a 25% application fee and directs the remaining 75% to that photographer’s connected account.

Critical accounting rule: calculate the split on the eligible photo/license subtotal after discounts and excluding sales tax. Tax is not marketplace revenue. Decide in the photographer agreement whether Stripe processing fees, refunds, disputes, and chargebacks are paid by Best Networks, deducted from the photographer, or allocated proportionally.

Business setup before code

  1. Confirm with legal and accounting advisers whether Best Networks or the photographer is the seller/merchant of record, where sales-tax responsibility sits, and how Forms 1099 and payout reporting will be handled.
  2. Publish customer terms, privacy policy, refund policy, photo-license terms, prohibited-content rules, and a photographer marketplace agreement.
  3. Keep each checkout limited to one photographer until a tested multi-party cart and ledger are implemented.

Stripe configuration

  1. Create or use the verified Best Networks Stripe business account; activate live payments only after business and bank verification is complete.
  2. Enable Connect and create an Express connected account for every approved photographer. Send photographers through Stripe-hosted onboarding so Best Networks does not store bank-account or government-ID data.
  3. Store only the connected-account ID and onboarding status in the photographer record. Recheck account requirements before allowing a gallery to sell.
  4. Create prices and orders on the server in integer cents. For each eligible subtotal, calculate platformFee = round(subtotal × 0.25) and photographerShare = subtotal − platformFee.
  5. Create a Stripe Checkout Session with the photographer account as the transfer destination and the calculated amount as the application fee. Do not accept price, fee, or destination values supplied only by the browser.
  6. Create an HTTPS webhook endpoint and verify Stripe’s signature. Process payment completion, refunds, disputes, connected-account updates, transfers, and payout status idempotently.
  7. Release an expiring, order-specific download only after the verified webhook marks the order paid—not from the browser success page.
  8. Reconcile order total, tax, processor fee, application fee, transfer, refund, dispute, and payout IDs in a permanent ledger.

Required hosted secrets

SettingPurposeHandling
STRIPE_SECRET_KEYServer-side Stripe APIHosted secret; never public or committed
STRIPE_WEBHOOK_SECRETVerify signed webhook eventsSeparate test and live values
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEYBrowser-safe Stripe initialization, if neededPublishable key only
APP_BASE_URLApproved return URLshttps://lenschicago.com in production

Safe launch sequence

  1. Build and test everything in Stripe test mode with at least two photographer accounts.
  2. Test a successful payment, failed payment, refund, partial refund, dispute simulation, repeated webhook, expired download, and disabled photographer.
  3. Reconcile test orders to the cent, then have legal/accounting approve the production rules.
  4. Add live keys as hosted secrets, register the live webhook URL, run one low-value controlled purchase, confirm the 75/25 ledger and payout, and only then open checkout publicly.

PayPal alternative

PayPal Multiparty Checkout can support seller onboarding and platform fees, but Best Networks must qualify for PayPal’s marketplace/partner capabilities. A normal PayPal business button cannot safely automate this multi-seller split. Do not build both processors for the first release; launch one reconciled flow first.

Required transaction records

Every order must record the customer, photographer, items, license type, eligible subtotal, discount, 25% platform fee, 75% photographer share, processor fee, tax, refund status, dispute status, payment identifier, transfer identifier, and payout identifier.

05 · Operating procedure

From upload to payout.

  1. Photographer signs in and completes marketplace/payout onboarding.
  2. Photographer creates a project, uploads files, confirms rights, and sets prices.
  3. Best Networks approves the photographer; content may be moderated before publication.
  4. Customer selects a photo and license, agrees to the license terms, and pays.
  5. The payment provider confirms the transaction by signed webhook.
  6. The platform records the 75/25 allocation and issues time-limited download access.
  7. The photographer’s available balance is paid out according to the payout schedule.
  8. Refunds and disputes update both platform and photographer ledgers.

Security and privacy

  • Originals remain private; public pages use watermarked or resized previews.
  • Paid files use expiring, order-specific download authorization.
  • Administrators and photographers may access only records permitted by their role.
  • Passwords and payment-card data are never stored by this website.
  • Audit logs record publishing, pricing, payout, refund, and rights-management changes.

06 · Hosting

Moving to Bluehost requires a platform migration.

Important: uploading this project to public_html will not produce a working marketplace. The current application uses Cloudflare Worker execution, a D1 database, private R2 image storage, and hosting-provided identity headers. Those services must be replaced or deliberately retained.

Static Bluehost upload

Suitable only for a public portfolio or marketing site. Exported HTML, CSS, JavaScript, and public images can be uploaded to Bluehost File Manager, but photographer sign-in, project creation, uploads, private originals, pricing records, checkout, and paid downloads will not work.

Full marketplace on Bluehost

Use a self-managed Bluehost VPS or VDS with Node.js—not ordinary shared hosting—and port the application to a conventional Node.js deployment. Replace D1 with MySQL or PostgreSQL, R2 with protected object storage, and ChatGPT-hosted identity with an independent authentication provider.

Recommended staged plan

  1. Keep the current production site online and take a source, database, and object-storage inventory.
  2. Create a separate Bluehost VPS environment with Node.js 22 or newer, HTTPS, backups, monitoring, and a non-production hostname.
  3. Port and test the server runtime, database adapter and migrations, private photo storage, authentication, administrator authorization, and payment webhooks.
  4. Migrate records first, then copy original images while preserving object keys, checksums, ownership, and privacy.
  5. Test sign-in, event creation, bulk upload, publication, customer purchase, webhook confirmation, download authorization, refund handling, and the 75/25 ledger.
  6. Lower DNS TTL, take a final data delta, switch DNS only after acceptance testing, and retain the current site as a rollback target until the new host is proven.

80/20 recommendation: do not move the live marketplace yet. Keep it on its current host while the payment flow is completed, and use a Bluehost-managed domain or redirect for branding. Migrate hosting only when there is a business or cost reason that justifies rebuilding the platform services.

08 · Version history

Current release: v2.17.0

VersionDateChanges
2.2.02026-08-21Exact Bluehost DNS records for all four hostnames, validation and rollback procedure, and production Stripe Connect billing and payout runbook.
2.0.02026-08-20Complete LensChicago.com rebrand, marketplace positioning for hiring photographers and buying event photos, updated metadata, and new social-sharing identity.
1.2.02026-08-20Bluehost migration readiness, hosting-path comparison, staged cutover, and rollback guidance.
1.1.02026-08-17Multi-photographer ownership, individual pricing, 75/25 marketplace model, rights terms, payout architecture, and detailed documentation.
1.0.02026-08-17Initial portfolios, event calendar, cart, corporate referrals, protected administration, event creation, batch upload, pricing, and publishing.

Releases use semantic versioning: major versions for breaking platform or contract changes, minor versions for backward-compatible features, and patch versions for fixes and documentation corrections.