Skip to content

Event types

Every event Ownrecord emits when something changes, as delivered to your webhook endpoints.

When something changes, Ownrecord records an event in the same transaction as the change and delivers it to your webhook endpoints. Every delivery has this envelope:

JSON
{
  "id": "evt_01jz3k2m4n5p6q7r8s9t0v1w2x",
  "type": "customer.created",
  "created": 1791892800,
  "livemode": false,
  "data": {
    "object": {}
  },
  "previous_attributes": {}
}

created is when the event happened, in Unix seconds (the event feed, GET /api/v1/events, returns the same envelope). data.object is the object as it is after the change. previous_attributes holds the changed fields' old values, on update events only. Events can arrive out of order: use created, and fetch the object again when you need its latest state.

API key

api_key.created

An API key was created. The secret is never part of the event.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idkey_… ID
object"api_key"
kindone of org, entity, brand
livemodeboolean
namestring
prefixstring
scopesarray of one of 98 values, e.g. org:read, org:write, org:admin (all in the OpenAPI document)
statusone of active, expired, revoked
orgIdorg_… ID
entityIdent_… ID or null
brandIdbrd_… ID or null
createdBystring
createdAtdate-time
updatedAtdate-time
expiresAtdate-time or null
lastUsedAtdate-time or null
revokedAtdate-time or null

api_key.revoked

An API key was revoked. It stops working immediately.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idkey_… ID
object"api_key"
kindone of org, entity, brand
livemodeboolean
namestring
prefixstring
scopesarray of one of 98 values, e.g. org:read, org:write, org:admin (all in the OpenAPI document)
statusone of active, expired, revoked
orgIdorg_… ID
entityIdent_… ID or null
brandIdbrd_… ID or null
createdBystring
createdAtdate-time
updatedAtdate-time
expiresAtdate-time or null
lastUsedAtdate-time or null
revokedAtdate-time or null

api_key.updated

An API key was renamed. previous_attributes has the old name.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idkey_… ID
object"api_key"
kindone of org, entity, brand
livemodeboolean
namestring
prefixstring
scopesarray of one of 98 values, e.g. org:read, org:write, org:admin (all in the OpenAPI document)
statusone of active, expired, revoked
orgIdorg_… ID
entityIdent_… ID or null
brandIdbrd_… ID or null
createdBystring
createdAtdate-time
updatedAtdate-time
expiresAtdate-time or null
lastUsedAtdate-time or null
revokedAtdate-time or null

App

app.listing_approved

Ownrecord approved an app's listing: it is listed for every organization, with a verified publisher, for the scopes approved.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"app_listing"
ownerOrgIdstring
namestring
statusone of not_submitted, pending, changes_requested, approved, rejected
listedboolean
reasonstring or null

app.listing_changes_requested

Ownrecord asked for changes to an app's listing application. reason says what to change; edit and submit it again.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"app_listing"
ownerOrgIdstring
namestring
statusone of not_submitted, pending, changes_requested, approved, rejected
listedboolean
reasonstring or null

app.listing_rejected

Ownrecord rejected an app's listing: other organizations can no longer install it. reason says why.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"app_listing"
ownerOrgIdstring
namestring
statusone of not_submitted, pending, changes_requested, approved, rejected
listedboolean
reasonstring or null

app.reinstated

Ownrecord lifted an app's suspension. Its installations stay paused until each organization resumes its own.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
object"app_suspension"
appobject
app.idstring
app.namestring
app.publisherstring
ownerOrgIdstring
ownsAppboolean
installationIdstring or null
statusone of suspended, reinstated
reasonstring
suspendedAtstring
reinstatedAtstring or null
reinstateReasonstring or null

app.suspended

Ownrecord suspended an app everywhere: its tokens are revoked, its installations paused and the agents it owns stopped. reason says why.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
object"app_suspension"
appobject
app.idstring
app.namestring
app.publisherstring
ownerOrgIdstring
ownsAppboolean
installationIdstring or null
statusone of suspended, reinstated
reasonstring
suspendedAtstring
reinstatedAtstring or null
reinstateReasonstring or null

Approval

approval.requested

A call needed a person's approval, so an approval request was created instead of running it. Nothing ran yet.

Scope: Organization · Webhooks: delivered

data.object:

FieldTypeDescription
idapr_… ID
object"approval_request"
statusone of pending, approved, rejected, expired, executed, stale
operationIdstring
summarystring
orgIdorg_… ID
entityIdent_… ID or null
brandIdbrd_… ID or null
livemodeboolean
requestedByobject
requestedBy.typeone of user, api_key, agent, app, system, public, customer
requestedBy.idstring
requestedBy.viaone of console, api, mcp, assistant, portal, job or null
requestedBy.clientIdstring or null
requestedBy.onBehalfOfUserIdstring or null
requestedBy.appInstallationIdstring or null
amountmoney or null
inputany
dryRunobject
dryRun.outputany
dryRun.eventsarray of string
diffobject or null
requiredApprovalsinteger (1 to 2)
approvalsarray of object
approvals[].userIdusr_… ID
approvals[].atdate-time
approvals[].commentstring or null
rejectionobject or null
failureobject or null
resultRefstring or null
approveUrlstring
expiresAtdate-time
executedAtdate-time or null
createdAtdate-time
updatedAtdate-time

approval.resolved

An approval request reached its outcome: executed (approved and run as requested), rejected, stale (approved, but it could no longer run as requested) or expired (nobody decided within 72 hours). status says which.

Scope: Organization · Webhooks: delivered

data.object:

FieldTypeDescription
idapr_… ID
object"approval_request"
statusone of pending, approved, rejected, expired, executed, stale
operationIdstring
summarystring
orgIdorg_… ID
entityIdent_… ID or null
brandIdbrd_… ID or null
livemodeboolean
requestedByobject
requestedBy.typeone of user, api_key, agent, app, system, public, customer
requestedBy.idstring
requestedBy.viaone of console, api, mcp, assistant, portal, job or null
requestedBy.clientIdstring or null
requestedBy.onBehalfOfUserIdstring or null
requestedBy.appInstallationIdstring or null
amountmoney or null
inputany
dryRunobject
dryRun.outputany
dryRun.eventsarray of string
diffobject or null
requiredApprovalsinteger (1 to 2)
approvalsarray of object
approvals[].userIdusr_… ID
approvals[].atdate-time
approvals[].commentstring or null
rejectionobject or null
failureobject or null
resultRefstring or null
approveUrlstring
expiresAtdate-time
executedAtdate-time or null
createdAtdate-time
updatedAtdate-time

Brand

brand.created

A brand was created under a legal entity. New brands start in test mode only (test_only).

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"brand"
orgIdstring
entityIdstring
slugstring
namestring
statusstring

brand.updated

A brand's settings changed. previous_attributes has the old values.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"brand"
orgIdstring
entityIdstring
slugstring
namestring
statusstring

Checkout

checkout.session.blocked

The customer's details gave a tax quote Ownrecord can't charge with confidence (for example, the seller isn't registered where a zero threshold applies), so the sale is paused and the hosted page offers the waitlist. data.blockedReason is the reason code.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"checkout.session"
livemodeboolean
brandIdstring
entityIdstring
modestring
statusone of open, processing, complete, expired, blocked
currencystring
customerIdstring or null
metadataobject

checkout.session.completed

A checkout was paid and fulfilled: the payment is recorded, the sale posted, the invoice issued and credit packs granted, all in one transaction triggered by the processor's webhook. data is the session with paymentId and invoiceId.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"checkout.session"
livemodeboolean
brandIdstring
entityIdstring
modestring
statusone of open, processing, complete, expired, blocked
currencystring
customerIdstring or null
metadataobject

checkout.session.expired

A checkout session expired without a payment: its time ran out (24 hours by default) or it was expired through the API.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"checkout.session"
livemodeboolean
brandIdstring
entityIdstring
modestring
statusone of open, processing, complete, expired, blocked
currencystring
customerIdstring or null
metadataobject

Coupon

coupon.created

A coupon (percent or amount off, with a duration) was created in the brand's catalog.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"coupon"
brandIdstring
livemodeboolean
namestring
durationone of once, repeating, forever
activeboolean

coupon.updated

A coupon changed: its name, metadata or active (archived or reactivated), or, while unused, its terms. previous_attributes has the old values.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"coupon"
brandIdstring
livemodeboolean
namestring
durationone of once, repeating, forever
activeboolean

Credit note

credit_note.issued

A credit note was issued for a refund: numbered without gaps in the brand's credit note series, it reverses the original invoice's lines at their original tax rates and jurisdictions. data is the credit note (credit_notes.get); its PDF is rendered and emailed to the customer right after (pdf.status turns ready).

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"credit_note"
numberstring
livemodeboolean
brandIdstring
entityIdstring
originalInvoiceIdstring
originalInvoiceNumberstring
refundIdstring
currencystring
issueDatestring
totalsobject
totals.netobject
totals.net.amountstring
totals.net.currencystring
totals.taxobject
totals.tax.amountstring
totals.tax.currencystring
totals.grossobject
totals.gross.amountstring
totals.gross.currencystring

Customer

customer.created

A customer was created: through the API or the console, or by checkout for a new buyer. Tax IDs given at creation are already checked (taxIds[].verification).

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"customer"
livemodeboolean
emailstring
typeone of individual, business, unknown
taxIdsarray of object
taxIds[].idstring
taxIds[].typestring
taxIds[].countrystring
deletedAtstring or null

customer.credit_balance.updated

A customer's credit balance changed in one currency: an operator adjusted it (with a reason), an invoice used it at finalization, a voided invoice gave it back, a subscription change credited unused time (proration), or a refund gave back the part of an invoice the balance paid (refund, M8). data.balance is the new balance and data.change the signed change, both in integer micros; data.reason says why (adjustment, invoice_applied, invoice_voided, proration, refund).

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
object"credit_balance_change"
customerIdstring
currencystring
balanceobject
balance.amountstring
balance.currencystring
changeobject
change.amountstring
change.currencystring
reasonone of adjustment, invoice_applied, invoice_voided, proration, refund
invoiceIdstring or null
ledgerTransactionIdstring

customer.entitlements.updated

A customer's entitlements changed: a subscription, lifetime purchase or override changed, the brand changed a feature or a product's entitlements, or an override expired or a past-due grace period ended. changes lists each feature whose value changed; previous_attributes.values has the previous set.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
object"customer_entitlements"
customerIdstring
brandIdstring
livemodeboolean
valuesobject
sourcesarray of object
sources[].typeone of override, subscription, purchase, default
sources[].refstring
sources[].featureKeystring
sources[].valueboolean or number or string
computedAtstring
changesarray of object
changes[].featureKeystring
changes[].beforeboolean or number or string or null
changes[].afterboolean or number or string or null

customer.updated

A customer changed: profile fields, tax IDs added or removed, the locked tax country set at the first payment or moved by a top-up, or the customer was deleted (deletedAt). previous_attributes has the old values of the fields that changed.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"customer"
livemodeboolean
emailstring
typeone of individual, business, unknown
taxIdsarray of object
taxIds[].idstring
taxIds[].typestring
taxIds[].countrystring
deletedAtstring or null

Data export

data_export.failed

An accounting export couldn't be built; failure says why. Request it again.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"data_export"
entityIdstring
livemodeboolean
kind"accounting"
statusone of queued, running, ready, expired, failed
fromstring
tostring

data_export.ready

An accounting export's files (journal, invoice register, credit-note register) are ready to download for 30 days.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"data_export"
entityIdstring
livemodeboolean
kind"accounting"
statusone of queued, running, ready, expired, failed
fromstring
tostring

data_export.requested

An accounting export was requested (internal); the data_export job builds its files.

Scope: Legal entity · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"data_export"
entityIdstring
livemodeboolean
kind"accounting"
statusone of queued, running, ready, expired, failed
fromstring
tostring

Discount

discount.created

A coupon was applied to a customer or a subscription (directly or through a promotion code), with the dates it covers.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"discount"
brandIdstring
livemodeboolean
couponIdstring
customerIdstring
subscriptionIdstring or null
startstring
endstring or null

discount.deleted

A discount was ended before its time: it no longer applies to invoices from end on. previous_attributes.end has the old end (null for forever).

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"discount"
brandIdstring
livemodeboolean
couponIdstring
customerIdstring
subscriptionIdstring or null
startstring
endstring or null

Dispute

dispute.closed

The processor closed a dispute. status is won (the withdrawn amount came back, the fee stays; an inquiry closes as won with nothing booked) or lost (the money stays withdrawn and the customer's risk becomes elevated).

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
iddp_… ID
object"dispute"
livemodeboolean
entityIdent_… ID
brandIdbrd_… ID
paymentIdpay_… ID
customerIdcus_… ID
processorone of stripe, mollie, fake
processorConnectionIdpcon_… ID
processorRefstring
reasonstring or null
processorStatusstring or null
statusone of needs_response, under_review, won, lost
inquiryboolean
fundsWithdrawnAtdate-time or null
amountmoney
feemoney or null
evidenceDueBydate-time or null
openedAtdate-time
closedAtdate-time or null
ledgerTxnIdsarray of txn_… ID
walletFreezeobject or null
walletReversalobject or null
evidenceobject or null
notesstring or null
assigneeobject or null
historyarray of object
history[].atdate-time
history[].eventone of 10 values, e.g. opened, wallet_frozen, funds_withdrawn (all in the OpenAPI document)
history[].bystring
history[].notestring or null
createdAtdate-time
updatedAtdate-time
versioninteger (at least 1)

dispute.created

A customer disputed a payment with their bank. For a chargeback the disputed amount and the dispute fee are booked as withdrawn; an inquiry (inquiry: true) takes no money and books nothing until the bank escalates it. The customer's wallets are frozen unless the brand turned that off.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
iddp_… ID
object"dispute"
livemodeboolean
entityIdent_… ID
brandIdbrd_… ID
paymentIdpay_… ID
customerIdcus_… ID
processorone of stripe, mollie, fake
processorConnectionIdpcon_… ID
processorRefstring
reasonstring or null
processorStatusstring or null
statusone of needs_response, under_review, won, lost
inquiryboolean
fundsWithdrawnAtdate-time or null
amountmoney
feemoney or null
evidenceDueBydate-time or null
openedAtdate-time
closedAtdate-time or null
ledgerTxnIdsarray of txn_… ID
walletFreezeobject or null
walletReversalobject or null
evidenceobject or null
notesstring or null
assigneeobject or null
historyarray of object
history[].atdate-time
history[].eventone of 10 values, e.g. opened, wallet_frozen, funds_withdrawn (all in the OpenAPI document)
history[].bystring
history[].notestring or null
createdAtdate-time
updatedAtdate-time
versioninteger (at least 1)

dispute.updated

The processor withdrew the funds of an inquiry (it became a chargeback: inquiry: false, fundsWithdrawnAt, the chargeback posted), or the evidence pack was built or submitted, or the notes or assignee changed. previous_attributes has the old values.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
iddp_… ID
object"dispute"
livemodeboolean
entityIdent_… ID
brandIdbrd_… ID
paymentIdpay_… ID
customerIdcus_… ID
processorone of stripe, mollie, fake
processorConnectionIdpcon_… ID
processorRefstring
reasonstring or null
processorStatusstring or null
statusone of needs_response, under_review, won, lost
inquiryboolean
fundsWithdrawnAtdate-time or null
amountmoney
feemoney or null
evidenceDueBydate-time or null
openedAtdate-time
closedAtdate-time or null
ledgerTxnIdsarray of txn_… ID
walletFreezeobject or null
walletReversalobject or null
evidenceobject or null
notesstring or null
assigneeobject or null
historyarray of object
history[].atdate-time
history[].eventone of 10 values, e.g. opened, wallet_frozen, funds_withdrawn (all in the OpenAPI document)
history[].bystring
history[].notestring or null
createdAtdate-time
updatedAtdate-time
versioninteger (at least 1)

Einvoice

einvoice.accepted

The receiver accepted the e-invoice.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"einvoice"
livemodeboolean
brandIdstring
entityIdstring
documentKindone of invoice, credit_note
documentIdstring
documentNumberstring
providerstring
formatstring
statusstring
externalIdstring or null

einvoice.delivered

The e-invoicing provider delivered the e-invoice to the buyer's access point or platform.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"einvoice"
livemodeboolean
brandIdstring
entityIdstring
documentKindone of invoice, credit_note
documentIdstring
documentNumberstring
providerstring
formatstring
statusstring
externalIdstring or null

einvoice.failed

The e-invoice couldn't be generated or sent, for a reason retrying alone won't fix (error.code, error.message): for example a buyer without an electronic address. Retry it with einvoices.retry once the cause is fixed.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"einvoice"
livemodeboolean
brandIdstring
entityIdstring
documentKindone of invoice, credit_note
documentIdstring
documentNumberstring
providerstring
formatstring
statusstring
externalIdstring or null

einvoice.rejected

The receiver rejected the e-invoice; error.message gives its reason. The invoice itself stands: correct it with a credit note or fix the buyer's details and retry the e-invoice.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"einvoice"
livemodeboolean
brandIdstring
entityIdstring
documentKindone of invoice, credit_note
documentIdstring
documentNumberstring
providerstring
formatstring
statusstring
externalIdstring or null

einvoice.sent

An issued invoice's or credit note's e-invoice was generated (EN 16931 UBL, Peppol BIS Billing 3.0) and the entity's e-invoicing provider took it for delivery. status is queued and externalId is the provider's ID.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"einvoice"
livemodeboolean
brandIdstring
entityIdstring
documentKindone of invoice, credit_note
documentIdstring
documentNumberstring
providerstring
formatstring
statusstring
externalIdstring or null

Feature

feature.created

A feature (an entitlement definition such as seats.max) was created for the brand.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"feature"
brandIdstring
livemodeboolean
keystring
typeone of boolean, limit, enum

feature.updated

A feature's name, combine rule, default value or enum values changed. previous_attributes has the old values.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"feature"
brandIdstring
livemodeboolean
keystring
typeone of boolean, limit, enum

Filing period

filing_period.created

A filing period was created for a regime the entity is registered in (or in a grace period for), from the regime's filing rules: its dates and due date.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"filing_period"
entityIdstring
livemodeboolean
regimeIdstring
periodKeystring
periodStartstring
periodEndstring
dueDatestring
dueAtstring
statusone of open, locked, prepared, submitted, paid
reportKindone of eu_oss, eu_domestic, uk_vat, ch_mwst, generic, us_state

filing_period.due_soon

A return is due in 14, 7 or 2 days and isn't filed yet (reminder is the alert code, daysBefore the days left).

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"filing_period"
entityIdstring
livemodeboolean
regimeIdstring
periodKeystring
periodStartstring
periodEndstring
dueDatestring
dueAtstring
statusone of open, locked, prepared, submitted, paid
reportKindone of eu_oss, eu_domestic, uk_vat, ch_mwst, generic, us_state
reminderone of FILING_DUE_14, FILING_DUE_7, FILING_DUE_2
daysBeforeinteger

filing_period.locked

A filing period that is over was locked, ready for its report.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"filing_period"
entityIdstring
livemodeboolean
regimeIdstring
periodKeystring
periodStartstring
periodEndstring
dueDatestring
dueAtstring
statusone of open, locked, prepared, submitted, paid
reportKindone of eu_oss, eu_domestic, uk_vat, ch_mwst, generic, us_state

filing_period.paid

The tax of the period was paid: the payment reference is recorded and the ledger moved the tax payable to the bank.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"filing_period"
entityIdstring
livemodeboolean
regimeIdstring
periodKeystring
periodStartstring
periodEndstring
dueDatestring
dueAtstring
statusone of open, locked, prepared, submitted, paid
reportKindone of eu_oss, eu_domestic, uk_vat, ch_mwst, generic, us_state

filing_period.prepared

The period's report was generated (again) and it reconciles with the ledger: the report files and totals are on the period.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"filing_period"
entityIdstring
livemodeboolean
regimeIdstring
periodKeystring
periodStartstring
periodEndstring
dueDatestring
dueAtstring
statusone of open, locked, prepared, submitted, paid
reportKindone of eu_oss, eu_domestic, uk_vat, ch_mwst, generic, us_state

filing_period.ready

A filing period is over and its return isn't filed yet: it can now be locked and its report prepared. Once per period, when its lock date (lockableAt) has passed.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"filing_period"
entityIdstring
livemodeboolean
regimeIdstring
periodKeystring
periodStartstring
periodEndstring
dueDatestring
dueAtstring
statusone of open, locked, prepared, submitted, paid
reportKindone of eu_oss, eu_domestic, uk_vat, ch_mwst, generic, us_state

filing_period.submitted

The return was filed with the tax authority; the period has its reference.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"filing_period"
entityIdstring
livemodeboolean
regimeIdstring
periodKeystring
periodStartstring
periodEndstring
dueDatestring
dueAtstring
statusone of open, locked, prepared, submitted, paid
reportKindone of eu_oss, eu_domestic, uk_vat, ch_mwst, generic, us_state

Invitation

invitation.created

Someone was invited to the organization. The invitation email is a separate effect; the event never contains the invitation token.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"invitation"
orgIdstring
emailstring
roleone of org_owner, org_admin, billing_admin, finance, tax_manager, support, developer, viewer
scopeobject
expiresAtstring
invitedBystring

invitation.revoked

A pending invitation was revoked. Its link stops working immediately.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"invitation"
orgIdstring
emailstring
roleone of org_owner, org_admin, billing_admin, finance, tax_manager, support, developer, viewer
scopeobject
expiresAtstring
invitedBystring

Invoice

invoice.finalized

A draft invoice was finalized: it got its number and a fresh tax quote, and the customer's credit balance was applied. status is open (amount due in amountDue), or paid when the credit balance covered it. invoice.issued is emitted with it.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"invoice"
numberstring
kindone of invoice, receipt
statusstring
livemodeboolean
brandIdstring
entityIdstring
quoteIdstring
currencystring
issueDatestring
totalsobject
totals.netobject
totals.net.amountstring
totals.net.currencystring
totals.taxobject
totals.tax.amountstring
totals.tax.currencystring
totals.grossobject
totals.gross.amountstring
totals.gross.currencystring

invoice.issued

An invoice or receipt was issued: numbered without gaps in the brand's series and its content fixed (a paid checkout, or a finalized draft). data is the invoice (invoices.get); its PDF is rendered right after (pdf.status turns ready). A pending_registration invoice was charged before a registration number existed: the receipt goes out now, the formal invoice once the number exists.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"invoice"
numberstring
kindone of invoice, receipt
statusstring
livemodeboolean
brandIdstring
entityIdstring
quoteIdstring
currencystring
issueDatestring
totalsobject
totals.netobject
totals.net.amountstring
totals.net.currencystring
totals.taxobject
totals.tax.amountstring
totals.tax.currencystring
totals.grossobject
totals.gross.amountstring
totals.gross.currencystring

invoice.overdue

An open send_invoice invoice is overdue: its due date plus the brand's grace days have passed. A subscription invoice also puts the subscription in past_due.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"invoice"
numberstring
statusstring
livemodeboolean
brandIdstring
entityIdstring
currencystring
collectionMethodstring
totalsobject
totals.grossobject
totals.gross.amountstring
totals.gross.currencystring

invoice.paid

An invoice was paid in full: marked paid with the bank transfer's date and reference, paid by card, or covered by the customer's credit balance at finalization. payment says how.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"invoice"
numberstring
kindone of invoice, receipt
statusstring
livemodeboolean
brandIdstring
entityIdstring
quoteIdstring
currencystring
issueDatestring
totalsobject
totals.netobject
totals.net.amountstring
totals.net.currencystring
totals.taxobject
totals.tax.amountstring
totals.tax.currencystring
totals.grossobject
totals.gross.amountstring
totals.gross.currencystring

invoice.payment_failed

A charge of an open invoice was declined: the first charge, a dunning retry, or the retry after a payment-method update. The invoice stays open; payment.failed has the declined payment.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"invoice"
numberstring
statusstring
livemodeboolean
brandIdstring
entityIdstring
currencystring
collectionMethodstring
totalsobject
totals.grossobject
totals.gross.amountstring
totals.gross.currencystring

invoice.upcoming

A subscription renews in 7 days: data is the invoice the renewal will issue as known now (licensed items in advance, metered usage so far, pending items, discounts, tax at today's rates), without a number. Add invoice items or warn the customer now.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"invoice"
numbernull
statusstring
livemodeboolean
brandIdstring
subscriptionIdstring or null
currencystring
totalsobject or null

invoice.voided

A draft or an open invoice was voided. A voided open invoice keeps its number (numbers are never reused) and its ledger posting is reversed, including credit balance it used; a voided draft never had a number.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"invoice"
numberstring or null
status"void"
livemodeboolean
brandIdstring
entityIdstring
currencystring

Lease

lease.expired

A lease reached its TTL without a closing settle and its expiry policy was applied: release returned the remaining funds to the wallet, capture charged them, and hold_for_late_settle keeps them reserved until data.lateSettleUntil (status expired_pending). Sent once per lease.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"lease"
walletIdstring
statusone of expired, expired_pending
expiryPolicyone of release, capture, hold_for_late_settle
amountobject
amount.amountstring
amount.currencystring
capturedobject
captured.amountstring
captured.currencystring
expiresAtstring
lateSettleUntilstring or null

A legal entity (seller of record) was added to the organization. It starts unverified and onboarding.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"legal_entity"
orgIdstring
slugstring
legalNamestring

A legal entity's details changed. previous_attributes has the old values.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"legal_entity"
orgIdstring
slugstring
legalNamestring

Membership

membership.removed

A member was removed from the organization (or from one entity or brand).

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"membership"
orgIdstring
userIdstring
roleone of org_owner, org_admin, billing_admin, finance, tax_manager, support, developer, viewer
scopeobject
livemodeAccessboolean

membership.updated

A member's role, scope or live-mode access changed. previous_attributes has the old values.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"membership"
orgIdstring
userIdstring
roleone of org_owner, org_admin, billing_admin, finance, tax_manager, support, developer, viewer
scopeobject
livemodeAccessboolean

Organization

organization.closed

The organization is closed: read-only and still exportable. Personal data not needed for financial records was pseudonymised.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
object"organization_closure"
orgIdstring
statusone of closing, closed
subscriptionsone of period_end, immediate

organization.closing

An owner started closing the organization: live checkouts stop and its subscriptions are being cancelled. It closes once open invoices, refunds and the final filing periods are done.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
object"organization_closure"
orgIdstring
statusone of closing, closed
subscriptionsone of period_end, immediate

organization.created

An organization was created. Ownrecord then creates its billing account on the platform brand, starts it on the free sandbox plan, and emails the person who created it the welcome with the next steps.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"organization"
slugstring
statusone of active, restricted, suspended, closing, closed
platformCustomerIdstring or null
planobject
plan.statusone of trialing, active, past_due, unpaid, canceled, none
plan.subscriptionIdstring or null
plan.productIdstring or null
plan.entitlementsobject

organization.export_failed

The organization export couldn't be built; failure says why. Request it again.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"organization_export"
statusstring

organization.export_ready

The organization export (a ZIP of JSON files and PDFs) is ready to download for 7 days.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"organization_export"
statusstring

organization.export_requested

An export of the whole organization was requested (internal); the organization_export job builds it.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"organization_export"
statusstring

organization.onboarding_updated

Someone skipped, resumed or confirmed an onboarding step. data is the checklist with every step's state.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
object"onboarding_checklist"
orgIdstring
completeboolean

organization.ownership_offer_cancelled

An open offer of ownership was cancelled before it was accepted.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
object"ownership_transfer"
orgIdstring
fromUserIdstring
toUserIdstring
expiresAtstring

organization.ownership_offered

An owner offered ownership of the organization to another member, who has 7 days to accept. They were emailed.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
object"ownership_transfer"
orgIdstring
fromUserIdstring
toUserIdstring
expiresAtstring

organization.plan_updated

The organization's Ownrecord plan changed: its subscription, status, period end or entitlements (spec §37.4). previous_attributes.plan has the old values.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"organization"
slugstring
statusone of active, restricted, suspended, closing, closed
platformCustomerIdstring or null
planobject
plan.statusone of trialing, active, past_due, unpaid, canceled, none
plan.subscriptionIdstring or null
plan.productIdstring or null
plan.entitlementsobject

organization.reactivated

A restricted or suspended organization is active again: its open Ownrecord invoices were paid, a platform admin held the escalation, or a platform admin lifted a suspension for abuse of an organization that is paid up.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"organization"
slugstring
statusone of active, restricted, suspended, closing, closed
platformCustomerIdstring or null
planobject
plan.statusone of trialing, active, past_due, unpaid, canceled, none
plan.subscriptionIdstring or null
plan.productIdstring or null
plan.entitlementsobject

organization.reinstated

A platform admin lifted the organization's suspension for abuse. Its status is what its Ownrecord subscription says: active when paid, otherwise the stage that is due for how long it has been unpaid. previous_attributes.status is suspended.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"organization"
slugstring
statusone of active, restricted, suspended, closing, closed
platformCustomerIdstring or null
planobject
plan.statusone of trialing, active, past_due, unpaid, canceled, none
plan.subscriptionIdstring or null
plan.productIdstring or null
plan.entitlementsobject

organization.restricted

The organization's Ownrecord subscription has been unpaid for 14 days (by default): nothing new can be created in live mode until it is paid. Existing checkouts, renewals and webhooks keep running.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"organization"
slugstring
statusone of active, restricted, suspended, closing, closed
platformCustomerIdstring or null
planobject
plan.statusone of trialing, active, past_due, unpaid, canceled, none
plan.subscriptionIdstring or null
plan.productIdstring or null
plan.entitlementsobject

organization.suspended

The organization's Ownrecord subscription has been unpaid for 30 days (by default): new live checkouts are refused. Renewals, refunds, the customer portal and filings continue.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"organization"
slugstring
statusone of active, restricted, suspended, closing, closed
platformCustomerIdstring or null
planobject
plan.statusone of trialing, active, past_due, unpaid, canceled, none
plan.subscriptionIdstring or null
plan.productIdstring or null
plan.entitlementsobject

organization.updated

The organization's name or slug changed. previous_attributes has the old values. A slug change moves the console URLs.

Scope: Organization · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"organization"
slugstring
namestring

Payment

payment.failed

A payment attempt failed at the processor (for example, the card was declined). The checkout stays open, so the customer can try another payment method. data is the failed attempt.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"payment"
livemodeboolean
brandIdstring
statusstring
amountobject
amount.amountstring
amount.currencystring
checkoutSessionIdstring or null

payment.succeeded

A payment succeeded and was recorded with its checkout session, ledger transactions and invoice. data is the payment.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"payment"
livemodeboolean
brandIdstring
statusstring
amountobject
amount.amountstring
amount.currencystring
checkoutSessionIdstring or null

Payment method

payment_method.attached

A payment method was saved for a customer (a subscription checkout or a setup checkout), for off-session charges.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"payment_method"
brandIdstring
livemodeboolean
customerIdstring
typestring
isDefaultboolean

payment_method.detached

A payment method was removed from a customer; it is no longer charged.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"payment_method"
brandIdstring
livemodeboolean
customerIdstring
typestring
isDefaultboolean

payment_method.updated

A payment method became (or stopped being) the customer's default. previous_attributes.isDefault has the old value.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"payment_method"
brandIdstring
livemodeboolean
customerIdstring
typestring
isDefaultboolean

Payout

payout.failed

A processor payout came back to the processor balance: the payout posting was reversed.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
object"payout"
itemIdstring
processorConnectionIdstring
payoutRefstring
statusone of in_transit, paid, failed
amountobject
amount.amountstring
amount.currencystring

payout.paid

A processor payout reached the legal entity's bank: Dr bank / Cr processor clearing is in the ledger.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
object"payout"
itemIdstring
processorConnectionIdstring
payoutRefstring
statusone of in_transit, paid, failed
amountobject
amount.amountstring
amount.currencystring

Price

price.created

A price was created for one of the brand's products.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"price"
brandIdstring
livemodeboolean
productIdstring
typeone of one_time, recurring, credit_pack
currencystring
lookupKeystring or null
activeboolean

price.updated

A price changed: its nickname, lookup key (set, removed or moved to another price), metadata, active, or, while unused, its amounts. previous_attributes has the old values.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"price"
brandIdstring
livemodeboolean
productIdstring
typeone of one_time, recurring, credit_pack
currencystring
lookupKeystring or null
activeboolean

Processor connection

processor_connection.created

A processor was connected to a legal entity: the key was tested and stored encrypted, and the webhook endpoint was set up.

Scope: Legal entity · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"processor_connection"
entityIdstring
livemodeboolean
processorone of stripe, mollie, fake
labelstring
statusone of active, degraded, disconnected
keyHintstring

processor_connection.disconnected

A processor connection was disconnected: its API key was destroyed and it can't be used for payments any more.

Scope: Legal entity · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"processor_connection"
entityIdstring
livemodeboolean
processorone of stripe, mollie, fake
labelstring
statusone of active, degraded, disconnected
keyHintstring

processor_connection.updated

A processor connection changed: its key was rotated, its label changed, or it was marked degraded or active. previous_attributes has the old status, label or key hint.

Scope: Legal entity · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"processor_connection"
entityIdstring
livemodeboolean
processorone of stripe, mollie, fake
labelstring
statusone of active, degraded, disconnected
keyHintstring

Product

product.created

A product was created in the brand's catalog.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"product"
brandIdstring
livemodeboolean
namestring
kindone of standard, plan
taxCategoryIdstring
activeboolean

product.updated

A product changed: its name, description, tax category, kind, entitlements, images, metadata or active (archived or reactivated). previous_attributes has the old values.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"product"
brandIdstring
livemodeboolean
namestring
kindone of standard, plan
taxCategoryIdstring
activeboolean

Promotion code

promotion_code.created

A customer-facing promotion code was created for one of the brand's coupons.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"promotion_code"
brandIdstring
livemodeboolean
couponIdstring
codestring
activeboolean

promotion_code.updated

A promotion code's metadata or active changed (archived or reactivated). previous_attributes has the old values.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"promotion_code"
brandIdstring
livemodeboolean
couponIdstring
codestring
activeboolean

Rate

rate.changed

A tax rate the entity charges changed: a knowledge base update added, changed or retired a rate this mode uses, in a jurisdiction where one of the entity's registrations is registered or in grace. changes lists them with the regimes concerned; a future validFrom takes effect on that date.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
object"rate_change"
entityIdstring
livemodeboolean
knowledgeCommitstringThe tax knowledge version that made the change.
previousCommitstring or nullThe version loaded before.
changesarray of objectThe changed rates, at most 100.
changes[].changeone of added, changed, retired
changes[].jurisdictionIdstringThe jurisdiction, e.g. FI or US-TX.
changes[].taxCategoryIdstringThe tax category, or * for the jurisdiction's default rate.
changes[].kindstringThe rate kind, e.g. standard or reduced.
changes[].subdivisionstring or null
changes[].rateobject or nullThe rate as this mode uses it now (null when retired).
changes[].previousobject or nullThe rate this mode used before (null when added).
changes[].regimeIdsarray of stringThe entity's registrations (regimes) that charge this jurisdiction's tax.
changeCountinteger (at least 1)How many rates changed.
truncatedbooleanTrue when changes doesn't list them all.

Reconciliation

reconciliation.item.ignored

A person took an open reconciliation item out of the queue, with a note; nothing was posted.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"reconciliation_item"
entityIdstring
livemodeboolean
sourceone of processor, bank
kindstring
statusone of open, matched, ignored
amountobject
amount.amountstring
amount.currencystring

reconciliation.item.resolved

A person resolved an open reconciliation item, with a note (and for a bank line, the payout it confirms).

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"reconciliation_item"
entityIdstring
livemodeboolean
sourceone of processor, bank
kindstring
statusone of open, matched, ignored
amountobject
amount.amountstring
amount.currencystring

reconciliation.run.completed

A reconciliation run of a processor connection finished: the balance transactions it read, matched and queued, and the fees and payouts it posted.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
object"reconciliation_run"
processorConnectionIdstring
entityIdstring
livemodeboolean
triggerone of schedule, manual

reconciliation.run.requested

A person or agent asked for a reconciliation run of one processor connection now (internal).

Scope: Legal entity · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
object"reconciliation_run"
processorConnectionIdstring
entityIdstring
livemodeboolean
triggerone of schedule, manual

Refund

refund.failed

The processor refused or failed a refund. The credit note stands and the amount stays owed to the customer (refunds_payable) until an operator resolves it; the REFUND_FAILED alert says so. data.failure has the processor's code.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"refund"
typestring
statusone of pending, succeeded, failed
livemodeboolean
brandIdstring
entityIdstring
paymentIdstring
invoiceIdstring
creditNoteIdstring
amountobject
amount.amountstring
amount.currencystring

refund.succeeded

The processor confirmed a refund: the money is on its way back to the customer. data is the refund (refunds.get) with processorRefundRef.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"refund"
typestring
statusone of pending, succeeded, failed
livemodeboolean
brandIdstring
entityIdstring
paymentIdstring
invoiceIdstring
creditNoteIdstring
amountobject
amount.amountstring
amount.currencystring

Registration

registration.deadline_escalated

The grace deadline came closer and an escalation alert was raised: half or 80% of the time to register has passed, or a daily reminder in the last three days before new consumer sales stop automatically. previous_attributes.escalationLevel is the level before.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"registration"
entityIdstring
livemodeboolean
regimeIdstring
jurisdictionIdsarray of string
stateone of not_applicable, monitored, pre_registration, grace, registered, blocked_b2c, deregistered
stateReasonstring
armedboolean
deadlineAtstring or null
escalationLevelinteger (0 to 3)
prerequisitesDoneboolean

registration.state_changed

A registration's state, its reason or armed changed: an operator armed it, marked the application submitted, marked it registered or deregistered it; a sale crossed a threshold (grace or blocked); the deadline passed (automatic block); or the counters reached the pre-registration level. previous_attributes has the old state, stateReason and armed.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"registration"
entityIdstring
livemodeboolean
regimeIdstring
jurisdictionIdsarray of string
stateone of not_applicable, monitored, pre_registration, grace, registered, blocked_b2c, deregistered
stateReasonstring
armedboolean
deadlineAtstring or null
escalationLevelinteger (0 to 3)
prerequisitesDoneboolean

registration.updated

A registration changed without a state change, e.g. a prerequisite's status, notes, owner or attachments.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"registration"
entityIdstring
livemodeboolean
regimeIdstring
jurisdictionIdsarray of string
stateone of not_applicable, monitored, pre_registration, grace, registered, blocked_b2c, deregistered
stateReasonstring
armedboolean
deadlineAtstring or null
escalationLevelinteger (0 to 3)
prerequisitesDoneboolean

Reservation

reservation.expired

A single reservation reached its expiresAt without being captured or released: the reservation_expiry job released its funds back to the wallet. data is the reservation as reservations.get returns it.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"reservation"
walletIdstring
status"expired"
amountobject
amount.amountstring
amount.currencystring
capturedobject
captured.amountstring
captured.currencystring

Risk

risk.review.approved

Someone approved a held payment: the wallets the hold froze are unfrozen (unless another review or a dispute holds them) and the customer's risk goes back to what it was.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idrsk_… ID
object"risk_evaluation"
livemodeboolean
brandIdbrd_… ID
subjectobject
subject.typeone of checkout_session, auto_reload
subject.checkoutSessionIdcs_… ID or null
subject.walletIdwal_… ID or null
customerIdcus_… ID or null
paymentIdpay_… ID or null
stageone of intent, payment_method, confirm, off_session
decisionone of allow, require_3ds, review, block
scoreinteger
reasonsarray of object
reasons[].codeone of 21 values, e.g. customer_blocked, customer_elevated, blocklist_email (all in the OpenAPI document)
reasons[].actionone of block, review, require_3ds, score
reasons[].pointsinteger or null
reasons[].detailstring
signalsobject
signals.emailDomainstring or null
signals.ipNetworkstring or null
signals.ipCountrystring or null
signals.billingCountrystring or null
signals.cardCountrystring or null
signals.cardFingerprintstring or null
signals.amountmoney or null
signals.topupboolean
signals.newCustomerboolean
signals.firstPaymentboolean
signals.disposableEmailboolean
historyarray of object
history[].atdate-time
history[].stageone of intent, payment_method, confirm, off_session
history[].decisionone of allow, require_3ds, review, block
history[].scoreinteger
reviewobject or null
createdAtdate-time
updatedAtdate-time

risk.review.opened

A payment the brand's risk rules held went through: it is recorded and invoiced as usual, and waits in the review queue. The customer's wallet that took its credits is frozen until the review is decided. Hold the delivery of your own goods until risk.review.approved.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idrsk_… ID
object"risk_evaluation"
livemodeboolean
brandIdbrd_… ID
subjectobject
subject.typeone of checkout_session, auto_reload
subject.checkoutSessionIdcs_… ID or null
subject.walletIdwal_… ID or null
customerIdcus_… ID or null
paymentIdpay_… ID or null
stageone of intent, payment_method, confirm, off_session
decisionone of allow, require_3ds, review, block
scoreinteger
reasonsarray of object
reasons[].codeone of 21 values, e.g. customer_blocked, customer_elevated, blocklist_email (all in the OpenAPI document)
reasons[].actionone of block, review, require_3ds, score
reasons[].pointsinteger or null
reasons[].detailstring
signalsobject
signals.emailDomainstring or null
signals.ipNetworkstring or null
signals.ipCountrystring or null
signals.billingCountrystring or null
signals.cardCountrystring or null
signals.cardFingerprintstring or null
signals.amountmoney or null
signals.topupboolean
signals.newCustomerboolean
signals.firstPaymentboolean
signals.disposableEmailboolean
historyarray of object
history[].atdate-time
history[].stageone of intent, payment_method, confirm, off_session
history[].decisionone of allow, require_3ds, review, block
history[].scoreinteger
reviewobject or null
createdAtdate-time
updatedAtdate-time

risk.review.rejected

Someone rejected a held payment: it is refunded (a credit note is issued and refund.succeeded follows when the processor confirms), the customer's email and card are on the brand's blocklist and the customer's risk is blocked. Wallets stay frozen.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idrsk_… ID
object"risk_evaluation"
livemodeboolean
brandIdbrd_… ID
subjectobject
subject.typeone of checkout_session, auto_reload
subject.checkoutSessionIdcs_… ID or null
subject.walletIdwal_… ID or null
customerIdcus_… ID or null
paymentIdpay_… ID or null
stageone of intent, payment_method, confirm, off_session
decisionone of allow, require_3ds, review, block
scoreinteger
reasonsarray of object
reasons[].codeone of 21 values, e.g. customer_blocked, customer_elevated, blocklist_email (all in the OpenAPI document)
reasons[].actionone of block, review, require_3ds, score
reasons[].pointsinteger or null
reasons[].detailstring
signalsobject
signals.emailDomainstring or null
signals.ipNetworkstring or null
signals.ipCountrystring or null
signals.billingCountrystring or null
signals.cardCountrystring or null
signals.cardFingerprintstring or null
signals.amountmoney or null
signals.topupboolean
signals.newCustomerboolean
signals.firstPaymentboolean
signals.disposableEmailboolean
historyarray of object
history[].atdate-time
history[].stageone of intent, payment_method, confirm, off_session
history[].decisionone of allow, require_3ds, review, block
history[].scoreinteger
reviewobject or null
createdAtdate-time
updatedAtdate-time

Subscription

subscription.cancel_scheduled

A subscription will end at the end of its current period (cancelAtPeriodEnd); it can be reactivated until then.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"subscription"
brandIdstring
livemodeboolean
customerIdstring
statusone of incomplete, incomplete_expired, trialing, active, past_due, unpaid, paused, canceled
itemsarray of object
items[].idstring
items[].priceIdstring
items[].quantitynumber

subscription.canceled

A subscription ended: canceled now, at the end of its period, after its trial, or after unsuccessful dunning.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"subscription"
brandIdstring
livemodeboolean
customerIdstring
statusone of incomplete, incomplete_expired, trialing, active, past_due, unpaid, paused, canceled
itemsarray of object
items[].idstring
items[].priceIdstring
items[].quantitynumber

subscription.created

A subscription was created (API, console or checkout), trialing, active or incomplete until its first payment.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"subscription"
brandIdstring
livemodeboolean
customerIdstring
statusone of incomplete, incomplete_expired, trialing, active, past_due, unpaid, paused, canceled
itemsarray of object
items[].idstring
items[].priceIdstring
items[].quantitynumber

subscription.past_due

A renewal payment failed (or a send_invoice invoice is overdue): the subscription is past due and dunning runs.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"subscription"
brandIdstring
livemodeboolean
customerIdstring
statusone of incomplete, incomplete_expired, trialing, active, past_due, unpaid, paused, canceled
itemsarray of object
items[].idstring
items[].priceIdstring
items[].quantitynumber

subscription.paused

A subscription was paused: collection stops (pause.behavior) until it resumes, at pause.resumesAt or on request.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"subscription"
brandIdstring
livemodeboolean
customerIdstring
statusone of incomplete, incomplete_expired, trialing, active, past_due, unpaid, paused, canceled
itemsarray of object
items[].idstring
items[].priceIdstring
items[].quantitynumber

subscription.recovered

A past-due or unpaid subscription's open invoice was paid: it is active again.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"subscription"
brandIdstring
livemodeboolean
customerIdstring
statusone of incomplete, incomplete_expired, trialing, active, past_due, unpaid, paused, canceled
itemsarray of object
items[].idstring
items[].priceIdstring
items[].quantitynumber

subscription.renewed

A subscription moved into its next billing period and its renewal invoice was issued.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"subscription"
brandIdstring
livemodeboolean
customerIdstring
statusone of incomplete, incomplete_expired, trialing, active, past_due, unpaid, paused, canceled
itemsarray of object
items[].idstring
items[].priceIdstring
items[].quantitynumber

subscription.resumed

A paused subscription is active again.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"subscription"
brandIdstring
livemodeboolean
customerIdstring
statusone of incomplete, incomplete_expired, trialing, active, past_due, unpaid, paused, canceled
itemsarray of object
items[].idstring
items[].priceIdstring
items[].quantitynumber

subscription.trial_will_end

A subscription's trial ends in 3 days (or sooner, for a shorter trial): remind the customer before the first charge.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"subscription"
brandIdstring
livemodeboolean
customerIdstring
statusone of incomplete, incomplete_expired, trialing, active, past_due, unpaid, paused, canceled
itemsarray of object
items[].idstring
items[].priceIdstring
items[].quantitynumber

subscription.updated

A subscription changed: items or quantities, a scheduled change, a discount, the payment method, metadata, or its status (activated after the first payment, expired unpaid, a cancellation withdrawn). previous_attributes has the old values.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"subscription"
brandIdstring
livemodeboolean
customerIdstring
statusone of incomplete, incomplete_expired, trialing, active, past_due, unpaid, paused, canceled
itemsarray of object
items[].idstring
items[].priceIdstring
items[].quantitynumber

Task

task.claimed

A person, an agent or an app claimed a task with a lease (assignee, claimedUntil): nobody else can change it until the lease ends.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idtask_… ID
object"task"
typeone of 12 values, e.g. registration.prerequisites, registration.prepare, registration.submit (all in the OpenAPI document)
entityIdent_… ID
livemodeboolean
regimeIdstring or null
registrationIdregn_… ID or null
filingPeriodIdfp_… ID or null
prerequisiteCodestring or null
titlestring
descriptionstring or null
priorityone of low, normal, high, urgent
statusone of open, claimed, in_progress, awaiting_approval, done, failed, cancelled
reasonone of 11 values, e.g. auto_blocked, existing_customer_sale, prerequisite_open (all in the OpenAPI document) or null
dueAtdate-time or null
overdueboolean
assigneeobject or null
claimedUntildate-time or null
leaseActiveboolean
completeWithone of tasks.complete, tasks.submit
needsAuthorizationboolean
inputsarray of object
inputs[].kindstring
inputs[].fileIdfile_… ID or null
inputs[].dataobject or null
outputsobject or null
authorizationIdatz_… ID or null
approvalRequestIdapr_… ID or null
failureobject or null
checklistarray of object
checklist[].textstring
checklist[].doneboolean
createdAtdate-time
updatedAtdate-time
completedAtdate-time or null
completedBystring or null
versioninteger (at least 1)

task.completed

A task was completed or submitted, with its outputs (reference numbers, submission time, receipt files, notes), or finished by the registration or filing period it belongs to.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idtask_… ID
object"task"
typeone of 12 values, e.g. registration.prerequisites, registration.prepare, registration.submit (all in the OpenAPI document)
entityIdent_… ID
livemodeboolean
regimeIdstring or null
registrationIdregn_… ID or null
filingPeriodIdfp_… ID or null
prerequisiteCodestring or null
titlestring
descriptionstring or null
priorityone of low, normal, high, urgent
statusone of open, claimed, in_progress, awaiting_approval, done, failed, cancelled
reasonone of 11 values, e.g. auto_blocked, existing_customer_sale, prerequisite_open (all in the OpenAPI document) or null
dueAtdate-time or null
overdueboolean
assigneeobject or null
claimedUntildate-time or null
leaseActiveboolean
completeWithone of tasks.complete, tasks.submit
needsAuthorizationboolean
inputsarray of object
inputs[].kindstring
inputs[].fileIdfile_… ID or null
inputs[].dataobject or null
outputsobject or null
authorizationIdatz_… ID or null
approvalRequestIdapr_… ID or null
failureobject or null
checklistarray of object
checklist[].textstring
checklist[].doneboolean
createdAtdate-time
updatedAtdate-time
completedAtdate-time or null
completedBystring or null
versioninteger (at least 1)

task.created

Ownrecord raised a compliance task for a legal entity, e.g. submitting a registration, a registration prerequisite, or preparing, filing and paying a return.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idtask_… ID
object"task"
typeone of 12 values, e.g. registration.prerequisites, registration.prepare, registration.submit (all in the OpenAPI document)
entityIdent_… ID
livemodeboolean
regimeIdstring or null
registrationIdregn_… ID or null
filingPeriodIdfp_… ID or null
prerequisiteCodestring or null
titlestring
descriptionstring or null
priorityone of low, normal, high, urgent
statusone of open, claimed, in_progress, awaiting_approval, done, failed, cancelled
reasonone of 11 values, e.g. auto_blocked, existing_customer_sale, prerequisite_open (all in the OpenAPI document) or null
dueAtdate-time or null
overdueboolean
assigneeobject or null
claimedUntildate-time or null
leaseActiveboolean
completeWithone of tasks.complete, tasks.submit
needsAuthorizationboolean
inputsarray of object
inputs[].kindstring
inputs[].fileIdfile_… ID or null
inputs[].dataobject or null
outputsobject or null
authorizationIdatz_… ID or null
approvalRequestIdapr_… ID or null
failureobject or null
checklistarray of object
checklist[].textstring
checklist[].doneboolean
createdAtdate-time
updatedAtdate-time
completedAtdate-time or null
completedBystring or null
versioninteger (at least 1)

task.due_soon

An unfinished task is due within 72 hours.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idtask_… ID
object"task"
typeone of 12 values, e.g. registration.prerequisites, registration.prepare, registration.submit (all in the OpenAPI document)
entityIdent_… ID
livemodeboolean
regimeIdstring or null
registrationIdregn_… ID or null
filingPeriodIdfp_… ID or null
prerequisiteCodestring or null
titlestring
descriptionstring or null
priorityone of low, normal, high, urgent
statusone of open, claimed, in_progress, awaiting_approval, done, failed, cancelled
reasonone of 11 values, e.g. auto_blocked, existing_customer_sale, prerequisite_open (all in the OpenAPI document) or null
dueAtdate-time or null
overdueboolean
assigneeobject or null
claimedUntildate-time or null
leaseActiveboolean
completeWithone of tasks.complete, tasks.submit
needsAuthorizationboolean
inputsarray of object
inputs[].kindstring
inputs[].fileIdfile_… ID or null
inputs[].dataobject or null
outputsobject or null
authorizationIdatz_… ID or null
approvalRequestIdapr_… ID or null
failureobject or null
checklistarray of object
checklist[].textstring
checklist[].doneboolean
createdAtdate-time
updatedAtdate-time
completedAtdate-time or null
completedBystring or null
versioninteger (at least 1)

task.failed

Whoever worked on a task couldn't do it: failure.reason says why, and failure.retryAt when it opens again (if set).

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idtask_… ID
object"task"
typeone of 12 values, e.g. registration.prerequisites, registration.prepare, registration.submit (all in the OpenAPI document)
entityIdent_… ID
livemodeboolean
regimeIdstring or null
registrationIdregn_… ID or null
filingPeriodIdfp_… ID or null
prerequisiteCodestring or null
titlestring
descriptionstring or null
priorityone of low, normal, high, urgent
statusone of open, claimed, in_progress, awaiting_approval, done, failed, cancelled
reasonone of 11 values, e.g. auto_blocked, existing_customer_sale, prerequisite_open (all in the OpenAPI document) or null
dueAtdate-time or null
overdueboolean
assigneeobject or null
claimedUntildate-time or null
leaseActiveboolean
completeWithone of tasks.complete, tasks.submit
needsAuthorizationboolean
inputsarray of object
inputs[].kindstring
inputs[].fileIdfile_… ID or null
inputs[].dataobject or null
outputsobject or null
authorizationIdatz_… ID or null
approvalRequestIdapr_… ID or null
failureobject or null
checklistarray of object
checklist[].textstring
checklist[].doneboolean
createdAtdate-time
updatedAtdate-time
completedAtdate-time or null
completedBystring or null
versioninteger (at least 1)

task.overdue

An unfinished task passed its due date.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idtask_… ID
object"task"
typeone of 12 values, e.g. registration.prerequisites, registration.prepare, registration.submit (all in the OpenAPI document)
entityIdent_… ID
livemodeboolean
regimeIdstring or null
registrationIdregn_… ID or null
filingPeriodIdfp_… ID or null
prerequisiteCodestring or null
titlestring
descriptionstring or null
priorityone of low, normal, high, urgent
statusone of open, claimed, in_progress, awaiting_approval, done, failed, cancelled
reasonone of 11 values, e.g. auto_blocked, existing_customer_sale, prerequisite_open (all in the OpenAPI document) or null
dueAtdate-time or null
overdueboolean
assigneeobject or null
claimedUntildate-time or null
leaseActiveboolean
completeWithone of tasks.complete, tasks.submit
needsAuthorizationboolean
inputsarray of object
inputs[].kindstring
inputs[].fileIdfile_… ID or null
inputs[].dataobject or null
outputsobject or null
authorizationIdatz_… ID or null
approvalRequestIdapr_… ID or null
failureobject or null
checklistarray of object
checklist[].textstring
checklist[].doneboolean
createdAtdate-time
updatedAtdate-time
completedAtdate-time or null
completedBystring or null
versioninteger (at least 1)

task.updated

A task's assignee, due date, priority, checklist or status changed (released, lease expired, waiting for approval, reopened, cancelled). previous_attributes has the old values.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
idtask_… ID
object"task"
typeone of 12 values, e.g. registration.prerequisites, registration.prepare, registration.submit (all in the OpenAPI document)
entityIdent_… ID
livemodeboolean
regimeIdstring or null
registrationIdregn_… ID or null
filingPeriodIdfp_… ID or null
prerequisiteCodestring or null
titlestring
descriptionstring or null
priorityone of low, normal, high, urgent
statusone of open, claimed, in_progress, awaiting_approval, done, failed, cancelled
reasonone of 11 values, e.g. auto_blocked, existing_customer_sale, prerequisite_open (all in the OpenAPI document) or null
dueAtdate-time or null
overdueboolean
assigneeobject or null
claimedUntildate-time or null
leaseActiveboolean
completeWithone of tasks.complete, tasks.submit
needsAuthorizationboolean
inputsarray of object
inputs[].kindstring
inputs[].fileIdfile_… ID or null
inputs[].dataobject or null
outputsobject or null
authorizationIdatz_… ID or null
approvalRequestIdapr_… ID or null
failureobject or null
checklistarray of object
checklist[].textstring
checklist[].doneboolean
createdAtdate-time
updatedAtdate-time
completedAtdate-time or null
completedBystring or null
versioninteger (at least 1)

Test clock

test_clock.advancing

A test clock started advancing: its subscriptions' due steps (trial ends, renewals, cancellations, notices) run in time order at their own times.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"test_clock"
livemodefalse
brandIdstring
namestring
frozenTimestring
statusone of ready, advancing, internal_failure

test_clock.created

A test clock was created (test mode).

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"test_clock"
livemodefalse
brandIdstring
namestring
frozenTimestring
statusone of ready, advancing, internal_failure

test_clock.deleted

A test clock was deleted, with its customers (deleted) and their subscriptions (canceled).

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"test_clock"
livemodefalse
brandIdstring
namestring
frozenTimestring
statusone of ready, advancing, internal_failure

test_clock.internal_failure

A test clock's advance stopped on an error (advance.error): the clock stayed at the time of the last step that ran. Fix the cause and advance again.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"test_clock"
livemodefalse
brandIdstring
namestring
frozenTimestring
statusone of ready, advancing, internal_failure

test_clock.ready

A test clock finished advancing: frozenTime is the new time and its subscriptions are up to date.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"test_clock"
livemodefalse
brandIdstring
namestring
frozenTimestring
statusone of ready, advancing, internal_failure

Threshold

threshold.crossed

A sale took the entity's sales over a regime's registration threshold (all brands of the entity count together). The registration moved to grace or was blocked: see the registration.state_changed event of the same sale.

Scope: Legal entity · Webhooks: delivered

data.object:

FieldTypeDescription
object"threshold"
entityIdstring
livemodeboolean
regimeIdstring
registrationIdstring
windowstring
thresholdobject or null
transactionThresholdinteger or null
countedobject or null
transactionCountinteger or null
crossedAtstring
refstring or null

Wallet

wallet.auto_reload_due

Internal: a wallet with auto-reload enabled fell below its reload threshold (autoReload.below). The auto_reload job charges the saved payment method off-session and credits the wallet. One at a time per wallet (autoReload.pendingSince).

Scope: Brand · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idstring
object"wallet"
customerIdstring
currencystring
statusone of active, frozen, closed
availableobject
available.amountstring
available.currencystring
promoobject
promo.amountstring
promo.currencystring
reservedobject
reserved.amountstring
reserved.currencystring
balanceobject
balance.amountstring
balance.currencystring
lowBalanceThresholdobject or null

wallet.credited

Credits were added to a wallet: a top-up or credit pack (with its bonus credits), a subscription's included credits, or an operator's promo or adjustment grant. data.credit lists the new grants (grants[].id, source, amount, expiresAt) and their total; the balances are the new ones.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"wallet"
customerIdstring
currencystring
statusone of active, frozen, closed
availableobject
available.amountstring
available.currencystring
promoobject
promo.amountstring
promo.currencystring
reservedobject
reserved.amountstring
reserved.currencystring
balanceobject
balance.amountstring
balance.currencystring
lowBalanceThresholdobject or null
creditobject
credit.amountobject
credit.amount.amountstring
credit.amount.currencystring
credit.grantsarray of object
credit.grants[].idstring
credit.grants[].sourcestring
credit.grants[].amountobject
credit.grants[].amount.amountstring
credit.grants[].amount.currencystring

wallet.depleted

A wallet's last credits were spent or expired: its balance is zero. Sent once until credits arrive again.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"wallet"
customerIdstring
currencystring
statusone of active, frozen, closed
availableobject
available.amountstring
available.currencystring
promoobject
promo.amountstring
promo.currencystring
reservedobject
reserved.amountstring
reserved.currencystring
balanceobject
balance.amountstring
balance.currencystring
lowBalanceThresholdobject or null

wallet.frozen

A wallet was frozen (wallets.update with status: frozen): it takes no new reservations or leases until it is unfrozen. data.statusReason says why.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"wallet"
customerIdstring
currencystring
statusone of active, frozen, closed
availableobject
available.amountstring
available.currencystring
promoobject
promo.amountstring
promo.currencystring
reservedobject
reserved.amountstring
reserved.currencystring
balanceobject
balance.amountstring
balance.currencystring
lowBalanceThresholdobject or null

wallet.low_balance

A wallet's balance fell below its lowBalanceThreshold. Sent once per dip: not again until the balance has risen back to the threshold (a credit, or a lower threshold) and falls below it again.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idstring
object"wallet"
customerIdstring
currencystring
statusone of active, frozen, closed
availableobject
available.amountstring
available.currencystring
promoobject
promo.amountstring
promo.currencystring
reservedobject
reserved.amountstring
reserved.currencystring
balanceobject
balance.amountstring
balance.currencystring
lowBalanceThresholdobject or null

Webhook endpoint

webhook_endpoint.created

A webhook endpoint was created. The signing secret is never part of the event.

Scope: Brand · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idwe_… ID
object"webhook_endpoint"
brandIdbrd_… ID
livemodeboolean
urlstring
descriptionstring or null
eventsarray of string
enabledboolean
disabledReasonone of manual, failing or null
disabledAtdate-time or null
failingSincedate-time or null
secretRotatedAtdate-time or null
previousSecretExpiresAtdate-time or null
metadataobject
createdAtdate-time
updatedAtdate-time

webhook_endpoint.deleted

A webhook endpoint was deleted, together with its signing secret.

Scope: Brand · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idwe_… ID
object"webhook_endpoint"
brandIdbrd_… ID
livemodeboolean
urlstring
descriptionstring or null
eventsarray of string
enabledboolean
disabledReasonone of manual, failing or null
disabledAtdate-time or null
failingSincedate-time or null
secretRotatedAtdate-time or null
previousSecretExpiresAtdate-time or null
metadataobject
createdAtdate-time
updatedAtdate-time

webhook_endpoint.test

A test delivery sent with POST /webhook_endpoints/{id}/test, to that endpoint only. Signed like every delivery; not in the event feed, and endpoints can't subscribe to it.

Scope: Brand · Webhooks: delivered

data.object:

FieldTypeDescription
idwe_… ID
object"webhook_endpoint"
urlstring
messagestring

webhook_endpoint.updated

A webhook endpoint's URL, event types, description, metadata or enabled state changed, or its signing secret was rotated. previous_attributes has the old values.

Scope: Brand · Webhooks: not delivered (internal)

data.object:

FieldTypeDescription
idwe_… ID
object"webhook_endpoint"
brandIdbrd_… ID
livemodeboolean
urlstring
descriptionstring or null
eventsarray of string
enabledboolean
disabledReasonone of manual, failing or null
disabledAtdate-time or null
failingSincedate-time or null
secretRotatedAtdate-time or null
previousSecretExpiresAtdate-time or null
metadataobject
createdAtdate-time
updatedAtdate-time