Meridian handbook
ReferenceConfiguration

paidlistings.yaml

Every key of config/paidlistings.yaml (engine-dmo), the paid listings payment provider (Stripe or none) with its secrets, and each site's tier prices and how promotions are paid.

engine-dmo

This feature is part of the DMO bundle (engine-dmo).

config/paidlistings.yaml sets how members pay: the payment provider, and per site the price of each membership tier on sale and whether promotion bookings are paid at checkout or invoiced. Without the file, there is no provider and orders are invoiced by staff.

provider: stripe
stripe:
  secret_key: ${STRIPE_SECRET_KEY}
  webhook_secret: ${STRIPE_WEBHOOK_SECRET}
sites:
  main:
    promotions: checkout
    tiers:
      gold: { amount: "240.00", currency: GBP, months: 12 }
KeyTypeDefaultMeaning
providerstringnonestripe (payment through Stripe Checkout) or none (orders are kept for staff to invoice)
stripe.secret_keysecretRequired with stripeThe Stripe secret key, as ${VAR}. The variable is read at boot, so engine-dmo check needs no secret
stripe.webhook_secretsecretRequired with stripeThe signing secret of the Stripe webhook endpoint, as ${VAR}
stripe.api_basestringStripe’s APIAnother base URL, https (or http on a loopback address, for a test double)
sites.<site>.promotionsstringinvoicecheckout (a priced promotion request is paid in the portal; needs a provider) or invoice
sites.<site>.tiers.<tier>.amountstringRequiredThe price as a quoted decimal, such as "240.00"
sites.<site>.tiers.<tier>.currencystringThe site’s default_currencyISO 4217 code
sites.<site>.tiers.<tier>.monthsinteger12The period the price buys, 1 to 36

A tier on sale must be declared in memberships.yaml and sold by the site (its site.yaml memberships.tiers). An unset Stripe variable stops the boot with a message naming it. See Paid listings.