BillingCashout billing.cashout@1

Generated at from openvibe-contracts v0.53.0 and openvibe-sdk v0.11.0.

Version
1.0.0
Owner
billing
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/billing/cashout.v1.json

billing.cashout@1: one cashout as OpenVibe.Billing presents it (server/ops/cashouts.js present). Requested cashouts wait out an escrow; staff approve (with the provider's payout reference) or deny them.

Fields

FieldTypeRequiredDescriptionConstraints
idstringyes
subjectidentity.subject-refyes
amount_bitsintegeryes
  • minimum 1
value_centsintegeryes
  • minimum 0
statusenumyes
  • one of "requested", "paid", "denied"
payout_methodobject | nullyes
escrow_untilstringyes
request_txnstringyes
settle_txnstring | null
payout_providerstring | null
payout_referencestring | null
reasonstring | null
created_atstringyes
updated_atstring | null

Examples

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

Valid: requested
{
  "id": "co_01JAB2C3D4E5F6G7H8J9K0MNPT",
  "subject": {
    "type": "user",
    "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPR"
  },
  "amount_bits": 5000,
  "value_cents": 5000,
  "status": "requested",
  "payout_method": {
    "type": "paypal",
    "address": "[email protected]"
  },
  "escrow_until": "2026-10-02T18:00:00.000Z",
  "request_txn": "txn_01JAB2C3D4E5F6G7H8J9K0MNPV",
  "settle_txn": null,
  "payout_provider": null,
  "payout_reference": null,
  "reason": null,
  "created_at": "2026-09-25T18:00:00.000Z",
  "updated_at": "2026-09-25T18:00:00.000Z"
}
Rejected: zero-amount
{
  "id": "co_1",
  "subject": {
    "type": "user",
    "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPR"
  },
  "amount_bits": 0,
  "value_cents": 0,
  "status": "requested",
  "payout_method": null,
  "escrow_until": "x",
  "request_txn": "t",
  "created_at": "x"
}

Validate

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