Use the GetAccept API to Manage Pricing Tables
The GetAccept REST API lets you create, read, and update pricing tables programmatically. This is useful for integrating GetAccept with your CPQ (Configure, Price, Quote) systems, automating document creation workflows, and syncing pricing data between platforms.
This article covers the API endpoints and request structure for pricing tables. You'll learn how to create pricing tables when building documents, fetch pricing table structure from templates, read values from sent documents, and update pricing tables after sending.
Pro-tip: If you're looking for UI-based pricing table setup instead, see Add a Pricing Table and Pricing Table Settings.
API Access Requirements
To use pricing table endpoints, you need:
Professional plan or above , API access requires a paid subscription tier
API key or bearer token , authenticate all requests with your GetAccept API credentials
Document ID or Template ID , the ID of the template or sent document containing the pricing table
Find your API credentials in your GetAccept account settings under Integrations β API. Store your API key securely and never share it publicly.
Set Up a Pricing Table Template First
Before using the API, create a template with a pricing table placeholder in GetAccept. The template defines the table structure, columns, sections, and currency settings that the API will reference.
To create a template with a pricing table:
Navigate to Content β Create content β Template
Add a new Editor block and select Pricing Table
Configure the table structure: add sections, define columns (name, description, SKU, price, units, tax, discount, totals)
Set currency and locale for the table
Save the template
Once saved, the template ID appears in the top section of the template editor. You'll use this ID to fetch pricing table metadata via the API.
Fetch Pricing Table Structure from a Template
Before creating a document with a pricing table, fetch the table structure from your template. This gives you the table ID, section IDs, and column IDs you'll need when populating values.
Endpoint:
GET https://api.getaccept.com/v1/templates/{template_id}/pricing-tables
Required parameters:
template_id, the ID of your template (found in the template editor)
Authentication:
Include your API key in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Example response:
{ "pricing_tables": [ { "table_id": "fOlpofN7-OSCAArlnSYfo", "display_name": "Pricing Package", "currency_settings": { "currency": "USD", "locale": "en-US" }, "sections": [ { "section_id": "1z-wzICAmx1GPQWgfn5AY", "display_name": "Best Offer for You", "columns": [ { "column_id": "H_Cc3-ffDGDT0alng-5qD", "name": "name", "display_name": "Name" }, { "column_id": "fMvGzeKINFfTXWlf-nwgs", "name": "price", "display_name": "Price" }, { "column_id": "ADBdSln0iEw17fpG44FfP", "name": "units", "display_name": "Units" } ] } ] } ]}
Save the table_id, section_id, and all column_id values , you'll reference these when creating documents with populated pricing tables.
Create a Document with Pricing Table Values
Once you have the template structure, create a document and populate the pricing table with actual values. You must provide a value for every column in every row.
Endpoint:
POST https://api.getaccept.com/v1/documents
Required body fields:
name, document name (e.g., "Proposal for Acme Corp")template_id, ID of the template with the pricing tablerecipients, array of recipient objects (email, name, role)custom_pricing_tables, array containing the pricing table data
Pricing table structure:
Inside custom_pricing_tables, provide:
id, the table ID from the templatedisplay_name, optional display name for the table (usenullto keep template default)currency_settings, currency and locale (usenullto keep template default)pre_calculated, set totrueif you pre-calculate totals;falseif GetAccept should auto-calculatesummary_values, object withprice,discount,tax(each withvalue,flat_fee,enabled)sections, array of section objects containing rows
Row and value mapping:
Each row represents a line item. Inside each row, the values array must have one entry per column, in the same order as the columns returned from the template.
Example POST request body:
{ "is_automatic_sending": false, "name": "Custom Proposal - Acme Corp", "template_id": "REPLACE_WITH_YOUR_TEMPLATE_ID", "recipients": [ { "first_name": "Jane", "last_name": "Smith", "email": "jane.smith@acmecorp.com", "role": "signer" } ], "custom_pricing_tables": [ { "id": "fOlpofN7-OSCAArlnSYfo", "display_name": null, "currency_settings": null, "pre_calculated": true, "sections": [ { "id": "1z-wzICAmx1GPQWgfn5AY", "display_name": "Best Offer for You", "rows": [ { "values": [ { "column_id": "H_Cc3-ffDGDT0alng-5qD", "value": "Professional Plan" }, { "column_id": "-gXSWsKKK47qoTy2M0KP3", "value": "Full access with priority support" }, { "column_id": "fMvGzeKINFfTXWlf-nwgs", "value": "500" }, { "column_id": "ADBdSln0iEw17fpG44FfP", "value": "2" }, { "column_id": "5fNyEf7DFAZXbzFCTF_4o", "value": "1000" } ] } ] } ], "summary_values": { "price": { "value": "1000.00", "flat_fee": true, "enabled": true, "display_name": "Total" }, "discount": { "value": "", "flat_fee": true, "enabled": false }, "tax": { "value": "", "flat_fee": true, "enabled": false } } } ]}
Response:
On success, GetAccept returns a 201 Created response with the new document object, including its document_id. Use this ID to track the document, fetch its current pricing table values, or update it later.
Pricing Table Field Reference
Summary Values
Summary values appear at the bottom of the pricing table and show totals, discounts, and taxes. Each summary field has three properties:
value, the numeric or percentage value as a string (e.g., "100.50" or "15" for 15%)flat_fee,trueif the value is a currency amount;falseif it's a percentageenabled,trueto show this field in the summary;falseto hide itdisplay_name, optional label (e.g., "Total Price" or "Loyalty Discount")
Example summary configuration:
"summary_values": { "price": { "value": "1500.00", "flat_fee": true, "enabled": true, "display_name": "Total Price" }, "discount": { "value": "10", "flat_fee": false, "enabled": true, "display_name": "Early Bird Discount" }, "tax": { "value": "150.00", "flat_fee": true, "enabled": true, "display_name": "Sales Tax" }}
Currency Settings
Define the currency and formatting locale for the pricing table. All sections in a single table share one currency.
currency, ISO-4217 currency code (e.g., "USD", "EUR", "GBP", "SEK")locale, IETF BCP 47 language tag plus ISO 3166-1 country code (e.g., "en-US", "sv-SE", "de-DE")
Pass null for currency_settings to use the template's default currency. Otherwise, provide both fields:
"currency_settings": { "currency": "USD", "locale": "en-US"}
Row Values
Each row value maps to a single column. Always provide values as strings, even for numbers. The order of values must match the order of columns in the template section.
column_id, the column ID from the templatevalue, the cell content as a string (empty string "" for empty cells)is_markdown, set totrueif the value contains Markdown formatting (optional)
Example row:
"values": [ { "column_id": "H_Cc3-ffDGDT0alng-5qD", "value": "Standard Package" }, { "column_id": "-gXSWsKKK47qoTy2M0KP3", "value": "Includes 5 users" }, { "column_id": "fMvGzeKINFfTXWlf-nwgs", "value": "250" }, { "column_id": "ADBdSln0iEw17fpG44FfP", "value": "1" }, { "column_id": "5fNyEf7DFAZXbzFCTF_4o", "value": "250" }]
Read Pricing Table Values from a Sent Document
After sending a document, fetch its current pricing table values. This is useful for importing data back into your CPQ system or preparing updates via the Edit After Send workflow.
Endpoint:
GET https://api.getaccept.com/v1/documents/{document_id}/pricing-tables
Required parameters:
document_id, the ID of the sent document
Response structure:
Returns the same structure as the template endpoint, but includes all current values in the rows. Use the column IDs from this response when updating the pricing table later.
Update Pricing Tables After Sending
Modify pricing table values after a document is sent without creating a new version. This is called "Edit After Send." You can add rows, change prices, adjust discounts, or update any field , as long as no recipient has signed yet.
Step 1: Fetch the current pricing table structure
Call the GET endpoint above to retrieve the current table structure and column IDs.
Step 2: Update the pricing table values
Endpoint:
PUT https://api.getaccept.com/v1/documents/{document_id}/pricing-tables
Request body:
Use the same structure as when creating a document. Replace the values and rows with your updates, keeping the same table ID and section ID:
{ "custom_pricing_tables": [ { "id": "fOlpofN7-OSCAArlnSYfo",