Folds eBay final-value fees and promoted-listing rates into the margin check before a listing or price change goes live.
For: eBay sellers running repricers or automated listing tools
Blocks a listing price whose margin, after final-value and promoted-listing fees, is under the floor.
Blocks a repricer update that would push the price below the encoded floor.
Escalates a listing that combines a markdown with a promoted-listing rate above the ceiling.
# eBay Listing Margin Gate
# Fork: set your own category fee rate and floor.
apiVersion: decionis.dev/v1
kind: PolicyPack
metadata:
name: ebay-listing-margin-gate
surface: ebay
workflow_key: listing_price_change
standards: [SOC2-CC8.1, ISO27001-A.8.34]
defaults:
mode: shadow
emit_dossier: true
margin_floor_pct: 10
rules:
- name: fee_adjusted_margin_floor
when: "action == 'listing.publish'"
decision: |
BLOCK IF (price - item.cost_basis - fees.final_value - fees.promoted) / price < margin_floor_pct / 100
ALLOW OTHERWISE
reason_code: fee_adjusted_margin_below_floor
- name: repricer_floor_breach
when: "action == 'listing.reprice' AND actor.type == 'automation'"
decision: |
BLOCK IF new_price < listing.encoded_price_floor
ALLOW OTHERWISE
reason_code: repricer_below_encoded_floor
- name: promotion_stacking_check
when: "action == 'listing.publish'"
decision: |
ESCALATE IF markdown_pct > 0 AND fees.promoted_rate_pct > 8
ALLOW OTHERWISE
reason_code: markdown_and_promoted_rate_stacked
Fork it, change the thresholds to match your environment, and deploy in shadow mode first — it defaults to listen-only so nothing in your live pipeline changes.
Follow the install path for this surface, then paste the forked YAML as your policy config.
This recipe is one step in a path. The same five steps apply to every recipe in the exchange.
Run the policy against a realistic action in the browser. Push it past what the rules allow and watch the verdict come back. No account.
See exactly what was decided and why: the rule that fired, the evidence it read, the policy version in force, and an Ed25519 signature you can verify yourself.
Measure what the policy would have caught on your own traffic without touching the live path. Every recipe defaults to shadow, so the first deployment carries no execution risk.
Point the same policy at the system where the action actually originates — a checkout, an ERP posting, a Zap, an agent's tool call.
Publish the proof: a public verification link, an embeddable badge, a PR comment, or an anonymized shadow-mode finding. This is how the next person discovers Decionis.