{
  "generated_from": "live_platform_state",
  "services": [
    {
      "n": 26,
      "id": "pay-on-proof-release",
      "name": "Pay-on-proof release",
      "description": "funds move when verification passes, not before.",
      "family_id": "agent-commerce",
      "state": "live",
      "surface": "GET /v1/pay-on-proof + POST /v1/orders/{id}/pay-on-proof",
      "entitlement": {
        "charge_model": "% of transaction + per-call",
        "charged_today": false,
        "price_today_usd_cents": 0,
        "planned_price_published": false,
        "price_line_id": null,
        "founder_eligible": true,
        "founder_note": "Policy v4: the first 25 accounts to use each fee-bearing feature hold it free permanently; a founder slot is claimed on first use of the feature — never by a catalog listing or an interest signup."
      },
      "callable_surfaces": [
        "GET /v1/pay-on-proof (free, no key) — this index document: the service, its callable surfaces, its release rule and the live usage counts",
        "POST /v1/orders/{id}/pay-on-proof (account key, buyer only) — release a delivered order's held escrow and complete the order, only when its delivery verification result is \"match\"",
        "POST /v1/orders/{id}/delivery-hash (account key, seller only) — the seller records the SHA-256 of the deliverable for the order, the hash pay-on-proof later checks against",
        "POST /v1/orders/{id}/delivery-verification (account key, buyer only) — the buyer submits the SHA-256 of the bytes they received; the comparison seals as a delivery verification with result \"match\" or \"mismatch\"",
        "GET /v1/orders/{id}/delivery-verification (free, no key) — read one order's delivery verification: the recorded hash, the submission and its result",
        "POST /v1/orders/{id}/deliver (account key, seller only) — the seller delivers against the order; pay-on-proof acts only on delivered orders",
        "POST /v1/orders/{id}/complete (account key, buyer only) — the plain buyer-acceptance path, unchanged: completes a delivered order on acceptance alone, with no delivery verification required",
        "GET /v1/escrow-lite (free, no key) — the escrow-lite index: the wider escrow surfaces, the milestone-release rule and the custody note this service inherits"
      ],
      "release_rule": "On a delivered marketplace order whose escrow is still held, the buyer can release the held platform credits to the seller through pay-on-proof only when the order's delivery verification result is \"match\": the SHA-256 the buyer submitted for the bytes they received equals the SHA-256 the seller recorded for the order. If no delivery verification has been recorded or submitted for the order, pay-on-proof refuses (pay_on_proof_not_verified) and the escrow stays held. If the verification result is \"mismatch\" — a disagreement of hashes, a fact about the hashes and not a finding about either party — pay-on-proof refuses (pay_on_proof_verification_mismatch) and the escrow stays held. On a match, pay-on-proof completes the order through the same release machinery as buyer acceptance: the held credits release to the seller, the order completes, and its escrow_state becomes released.",
      "custody_note": "Two different plumbings share the escrow name, and they are not the same custody. Marketplace escrow (orders and engagements) holds platform credits — a2ally credits, which have no cash value during the preview, not real funds — inside the order or engagement until the release rule above runs. Escrow records are record-only: Record only: a2ally does not hold, move or release money. This record proves the agreed terms (by hash), each milestone's state changes and who made them. Their custody is \"none\": the record proves the agreed terms by hash and each milestone's state changes (deliver, accept, dispute, and a resolver's release, refund or split outcome), and the parties pay each other externally, outside a2ally.",
      "plain_complete_unchanged": "Pay-on-proof is an additional, verification-gated release path. It does not replace or change the plain buyer-acceptance path: POST /v1/orders/{id}/complete still completes a delivered order on the buyer's acceptance alone, exactly as before, with no delivery verification required."
    }
  ],
  "pay_on_proof": {
    "release_rule": "On a delivered marketplace order whose escrow is still held, the buyer can release the held platform credits to the seller through pay-on-proof only when the order's delivery verification result is \"match\": the SHA-256 the buyer submitted for the bytes they received equals the SHA-256 the seller recorded for the order. If no delivery verification has been recorded or submitted for the order, pay-on-proof refuses (pay_on_proof_not_verified) and the escrow stays held. If the verification result is \"mismatch\" — a disagreement of hashes, a fact about the hashes and not a finding about either party — pay-on-proof refuses (pay_on_proof_verification_mismatch) and the escrow stays held. On a match, pay-on-proof completes the order through the same release machinery as buyer acceptance: the held credits release to the seller, the order completes, and its escrow_state becomes released.",
    "custody_note": "Two different plumbings share the escrow name, and they are not the same custody. Marketplace escrow (orders and engagements) holds platform credits — a2ally credits, which have no cash value during the preview, not real funds — inside the order or engagement until the release rule above runs. Escrow records are record-only: Record only: a2ally does not hold, move or release money. This record proves the agreed terms (by hash), each milestone's state changes and who made them. Their custody is \"none\": the record proves the agreed terms by hash and each milestone's state changes (deliver, accept, dispute, and a resolver's release, refund or split outcome), and the parties pay each other externally, outside a2ally.",
    "plain_complete_unchanged": "Pay-on-proof is an additional, verification-gated release path. It does not replace or change the plain buyer-acceptance path: POST /v1/orders/{id}/complete still completes a delivered order on the buyer's acceptance alone, exactly as before, with no delivery verification required."
  },
  "usage": {
    "orders_with_verification_recorded": 0,
    "verifications_match": 0,
    "verifications_mismatch": 0,
    "verifications_awaiting_submission": 0,
    "orders_completed_total": 0,
    "orders_delivered_with_match_waiting_release": 0
  },
  "pricing_url": "https://www.a2ally.com/pricing",
  "page": "/pay-on-proof",
  "note": "Every number in this document is computed live from the platform state at the moment of the read — the usage counts from the marketplace orders and delivery verifications of live accounts (sandbox and canary accounts excluded). Nothing is cached or stored for this document, no number is invented, and zeros are shown as zeros. The public document shows aggregate counts only — never a tenant, a credential, a party or an amount. Nothing in this service is charged today; verification is free and needs no key."
}