DealSleek API · Billing
PreviewClawback Success Fee
Recover a billed success fee in proportion to how much of the outcome was reversed. Refused once the clawback window has closed.
/api/v1/billing/dispatchHeaders
AuthorizationstringRequiredAccess token of the signed-in user, as a Bearer token. It identifies the user, their role and the workspace.
X-CQRS-ActionstringRequiredNames the command to run. Must be
CLAWBACK_SUCCESS_FEEfor this endpoint.Content-TypestringRequiredAlways
application/json.X-Idempotency-KeystringOptionalA key you choose that is unique to this attempt. A command repeated with the same key is not applied a second time.
X-Correlation-IdstringOptionalYour own identifier for the request. Returned in the
x-correlation-idresponse header; generated when you leave it out.
Request body
agreementobjectRequiredA success-fee arrangement on an account — the terms outcomes are judged by.
15 child fields
account_iduuidRequiredNo description yet.
clawback_recovery_factornumberRequiredNo description yet.
iduuidRequiredNo description yet.
is_activebooleanRequiredNo description yet.
minimum_qualifying_valuenumberRequiredNo description yet.
rate_percentnumberRequiredNo description yet.
tenant_iduuidRequiredNo description yet.
trigger_typeenumRequiredWhat counts as the billable outcome.
- Allowed values
- DEAL_WON
- REVENUE_RECOGNIZED
- MILESTONE_VERIFIED
- ATTRIBUTED_CONVERSION
- DEAL_WON
- A deal reached CLOSED_WON. Fast, and the most reversible.
- REVENUE_RECOGNIZED
- Revenue was recognised under ASC 606 — slower, far harder to undo.
- MILESTONE_VERIFIED
- A delivery milestone was verified (see deals VERIFY_ERP_FULFILLMENT).
- ATTRIBUTED_CONVERSION
- A conversion attributed to campaign activity.
verification_daysintegerRequiredNo description yet.
- at least 0
beneficiary_account_iduuid or nullOptionalNo description yet.
fee_capnumber or nullOptionalUncapped should be a deliberate choice: an uncapped percentage of an unusually large outcome produces an invoice nobody intends to send.
fee_floornumber or nullOptionalNo description yet.
governing_contract_iduuid or nullOptionalNo description yet.
tier_modeenumOptionalNo description yet.
- Allowed values
- GRADUATED
- VOLUME
- Default
- GRADUATED
- GRADUATED
- Bracketed — each tier prices only its own slice (income-tax style).
- VOLUME
- Landed — the tier the total reaches prices every unit.
tiersarray of objectOptionalPopulated for tiered arrangements — larger outcomes at lower marginal rates, the usual shape for placement and brokerage fees.
3 child fields
unit_pricestringRequiredNo description yet.
flat_feestringOptionalCharged once when this tier is used at all.
- Default
- 0
limitstring or nullOptionalInclusive upper bound.
Nonemarks the final, unbounded tier.
clawback_window_ends_atdate-timeRequiredNo description yet.
current_statusenumRequiredNo description yet.
- Allowed values
- DISPUTED
- BILLED
- PENDING_VERIFICATION
- QUALIFIED
- NOT_QUALIFIED
- CLAWED_BACK
- VOID
- PENDING_VERIFICATION
- Outcome recorded; inside the verification window. Nothing is billable yet — a fee invoiced the instant a deal flips to won is a credit note waiting to happen.
- QUALIFIED
- Verified and above the qualifying floor. Billable.
- NOT_QUALIFIED
- Verified but below the floor, or otherwise outside the contract. Terminal, and distinct from Void: the outcome was real, the fee simply was not earned.
- CLAWED_BACK
- Billed, then recovered in whole or part after the outcome was reversed.
- VOID
- Withdrawn before billing — duplicate record, or a dispute upheld.
fee_chargedstringRequiredNo description yet.
reasonenumRequiredWhy a success fee is being contested. Recorded because a pattern of one reason is a process defect, not a series of one-offs.
- Allowed values
- CUSTOMER_DISPUTE
- OUTCOME_REVERSED
- VALUE_RESTATED
- DUPLICATE_OUTCOME
- NOT_ATTRIBUTABLE
- OUTCOME_REVERSED
- The underlying deal was reversed or cancelled.
- VALUE_RESTATED
- The outcome stands but its value was restated downward.
- DUPLICATE_OUTCOME
- The same outcome was recorded twice.
- NOT_ATTRIBUTABLE
- The outcome did not meet the contract's qualifying conditions.
reversed_valuestringRequiredHow much of the original outcome value evaporated.
success_fee_iduuidRequiredNo description yet.
expected_versioninteger or nullOptionalCORE invariant: mutations carry the version they read. Absent preserves legacy callers.
Response
Status 202. The command was applied. The body reports the outcome and, where the command changes a record, that record's new state.
successbooleanRequiredtruewhen the command was applied.error_messagestringRequiredEmpty when the command was applied.
projected_stateobjectOptionalThe record as it stands after the command.
event_payloadobjectOptionalThe event the command recorded.
insightsarray of objectOptionalAdvisory notes about the result. Each has a
code, amessageand animpactnumber.
Errors
Every error carries an HTTP status. Where it also carries a code, branch on the code, not on the message.
- 400
X-CQRS-Actionis missing or names a command this route does not accept. SendCLAWBACK_SUCCESS_FEE. - 400
DOMAIN_ROUTINGThe body is not a valid command. Check the required fields and their types. - 401The access token is missing, expired or not valid.
- 401
L1_AUTHThe caller's role is belowfinance, the session has not completed multi-factor sign-in, or the caller has no access to this record. - 403
L1_POLICYA business rule refused the command. The message names the rule. - 409
L1_VERSIONexpected_versionis not the record's current version. Read the record again, then retry. - 409
L1_IDEMPOTENCYA command with this idempotency key was already applied. - 409
CONFLICTThe command would duplicate a record that must be unique. - 500
L3_COMMITThe command was valid but could not be saved.