BillingCashoutDeniedPayload billing.cashout.denied@1

Generated at from openvibe-contracts v0.33.0 and openvibe-sdk v0.5.0.

Version
1.0.0
Owner
billing
Visibility
first-party
Status
active
Compatibility
backward
Decision
ADR-012
Schema
https://openvibe.network/contracts/events/payloads/billing.cashout.denied.v1.json

billing.cashout.denied v1 (OpenVibe.Billing server/ops/cashouts.js deny). Staff denied a cash-out; the escrowed bits went back (a billing.transaction.reversed follows in the same transaction). Envelope: subject { type: cashout, id: co_… }, visibility internal, priority important, actor service:billing.

Fields

FieldTypeRequiredDescriptionConstraints
cashoutobjectyes
  • no other fields
cashout.idstringyes
  • pattern ^co_[0-9A-HJKMNP-TV-Z]{26}$
cashout.subjectidentity.subject-refyes
cashout.amount_bitsintegeryes
  • minimum 1
cashout.value_centsintegeryes
cashout.statusconstyes
  • = "denied"
cashout.payout_methodobjectyesThe payout method's kind only; the address (e.g. a PayPal email) stays in Billing and never travels on the event stream.
  • no other fields
cashout.payout_method.typestring | nullyes
cashout.escrow_untilstringyes
cashout.request_txnstringyes
  • pattern ^txn_[0-9A-HJKMNP-TV-Z]{26}$
cashout.settle_txnstring | nullyes
  • pattern ^txn_[0-9A-HJKMNP-TV-Z]{26}$
cashout.payout_providerstring | nullyes
cashout.payout_referencestring | nullyes
cashout.reasonstring | nullyes
cashout.created_atstringyes
cashout.updated_atstringyes
transaction_idstringyesThe cashout_denied transaction.
  • pattern ^txn_[0-9A-HJKMNP-TV-Z]{26}$

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: denied
{
  "cashout": {
    "id": "co_01JAB3C4D5E6F7G8H9J0K1MNQ5",
    "subject": {
      "type": "user",
      "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
    },
    "amount_bits": 5000,
    "value_cents": 5000,
    "status": "denied",
    "payout_method": {
      "type": "paypal"
    },
    "escrow_until": "2026-09-30T10:00:00.000Z",
    "request_txn": "txn_01JAB3C4D5E6F7G8H9J0K1MNQ6",
    "settle_txn": "txn_01JAB3C4D5E6F7G8H9J0K1MNQ8",
    "payout_provider": null,
    "payout_reference": null,
    "reason": "payout details do not match",
    "created_at": "2026-09-23T10:00:00.000Z",
    "updated_at": "2026-09-23T10:00:00.000Z"
  },
  "transaction_id": "txn_01JAB3C4D5E6F7G8H9J0K1MNQ8"
}
Rejected: no-transaction
{
  "cashout": {
    "id": "co_01JAB3C4D5E6F7G8H9J0K1MNQ5",
    "subject": {
      "type": "user",
      "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
    },
    "amount_bits": 5000,
    "value_cents": 5000,
    "status": "denied",
    "payout_method": {
      "type": "paypal"
    },
    "escrow_until": "2026-09-30T10:00:00.000Z",
    "request_txn": "txn_01JAB3C4D5E6F7G8H9J0K1MNQ6",
    "settle_txn": null,
    "payout_provider": null,
    "payout_reference": null,
    "reason": null,
    "created_at": "2026-09-23T10:00:00.000Z",
    "updated_at": "2026-09-23T10:00:00.000Z"
  }
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('billing.cashout.denied@1', value);   // { valid, errors: [{ path, message }] }