> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.tabs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.tabs.com/_mcp/server.

# Standalone Selling Price (SSP)

Under ASC 606, a contract's total transaction price must be allocated across each distinct performance obligation based on relative standalone selling price. Tabs automates this end-to-end through **Standalone Selling Price (SSP)** workflows.

## SSP workflow

The SSP workflow has three stages:

1. **Define** — Create an SSP memo with an effective date, methods, and values for each product in your catalog
2. **Activate** — Approve the memo to govern contract SSP allocation per your configuration
3. **Apply** — Contracts signed on or after the effective date automatically allocate transaction price to each performance obligation using the relative SSP method

## Prerequisites

To use automated SSP, you need:

* A configured [Product Catalog](/product-catalog)
* Contracts with signature dates extracted (or earliest performance obligation start date as fallback)
* Contracts processed with performance obligations defined with products mapped

## SSP methods

Each product in an SSP memo uses one estimation method:

| Method            | When to use                                                                                                                                     |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| **FMV Fixed**     | A constant dollar value regardless of sales price                                                                                               |
| **FMV % of Deal** | SSP as a percentage of total transaction price, with optional min/max bounds                                                                    |
| **Min/Max Clamp** | SSP clamped to a floor or ceiling if sales price falls outside the range                                                                        |
| **Residual**      | SSP equals remaining transaction price after all other obligations are carved out. A fallback value is used when the residual pool is exhausted |
| **Observable**    | Use the sales price from the contract as SSP. Recommended for new products without pricing history                                              |

## Allocation

Tabs runs a two-phase process for each eligible contract:

**Phase 1 — Determine SSP** for each performance obligation using the method defined in the active memo. Non-residual methods are computed first; their total is subtracted from the transaction price to determine the residual pool.

**Phase 2 — Allocate transaction price** using the relative SSP method:

```
Allocated transaction price = (SSP ÷ Total SSP) × Total Transaction Price
```

Each contract's **Revenue tab** shows the SSP determination and allocation waterfall so you can audit exactly how revenue was allocated.

SSP is locked at contract inception per ASC 606 — existing contracts are not re-allocated when a new memo is approved. Only contracts signed on or after the new memo's effective date use updated values.

## Audit trail

Tabs retains a full audit trail for SSP:

* SSP memos and approval history
* Contracts to which each memo was applied
* Allocation calculations and waterfalls per contract
* Exceptions found for each SSP memo for review

This supports ASC 606 disclosure and audit requirements.

## Related resources

* [Revenue Recognition & Schedules](/revenue-recognition) — performance obligations and revenue schedules
* [Close Management](/close-management) — month-end journal entry generation and ERP sync
* [Search performance obligations](api:GET/v3/performance-obligations) — API reference for performance obligations with revenue