Producers
Manage insurance producers (agents/brokers) and their commission structures.
Producers represent the agents or brokers who sell policies on behalf of your agency. In Advance, producers are linked to plans for commission tracking, and can be configured for automatic commission payouts on a recurring schedule.
Setting Up a Producer
POST /v1/producers
At minimum, provide producer_name. All other fields are optional but recommended for complete records:
- Contact details (
contact_name,contact_email,contact_phone) are used for communication and appear on invoices. customer_external_idlets you reference this producer by your own system's ID (e.g., your AMS producer code). Once set, you can look up the producer by this ID usingGET /v1/producers/customer_external_id/{id}— useful for syncing without storing Advance IDs.- Billing contact fields (
billing_contact_name,billing_contact_email,billing_contact_phone) are stored for payout processing but are not returned in API responses.
Commission Rate Versioning
Commission rates are versioned with effective dates, which means you can:
- See the complete history of rate changes for a producer
- Schedule future rate increases in advance
- Be confident that policies always use the rate that was active when they were created
Viewing commission item history
GET /v1/producers/{producer_id}/commission-items/history
Returns all commission items grouped by (carrier_id, name). Each group represents the full rate history for one commission item scoped to a specific market. Groups have three buckets:
current_rate— the version active todayscheduled_rate— a future version not yet in effect (null if none scheduled)historical_rates— past versions that have expired
Because a producer can have the same commission item name for multiple markets (e.g., "Auto Insurance" for Market A and "Auto Insurance" for Market B), each group includes a carrier_id field to distinguish them.
[
{
"name": "Auto Commission",
"carrier_id": "car_abc123",
"current_rate": {
"commission_item_id": "ci_001",
"commission_percentage": 7.0,
"effective_from": "2024-01-01",
"effective_to": "2024-12-31"
},
"scheduled_rate": {
"commission_item_id": "ci_002",
"commission_percentage": 8.0,
"effective_from": "2025-01-01",
"effective_to": null
},
"historical_rates": []
}
]Setting or changing a rate
POST /v1/producers/{producer_id}/commission-items
To set or change a rate, create a new version. Once created, rates are immutable — you can't edit them, only add a new version. If an open-ended rate already exists for the same (carrier_id, name), it is automatically closed (its effective_to is set to the day before the new rate starts).
Example: schedule a rate increase for January 1
curl -X POST "https://api.advancehq.com/v1/producers/prod_xyz789/commission-items" \
-H "Authorization: Bearer your_api_key" \
-H "Content-Type: application/json" \
-d '[{
"carrier_id": "car_abc123",
"name": "Auto Commission",
"commission_percentage": 7.0,
"effective_from": "2025-01-01"
}]'This creates a new rate for Auto Commission starting January 1. Any existing open-ended Auto Commission rate for this market is automatically closed on December 31.
Deleting a commission item
DELETE /v1/producers/{producer_id}/commission-items/{commission_item_id}
Removes a specific rate version. Returns 400 if any policies reference this commission item. Returns 204 on success.
If you delete a future-dated rate, the predecessor rate that was automatically closed when it was created is reopened — its effective_to is reset to null.
How rates apply to policies
When a plan is created with a producer, the commission rate used for each policy is determined by the policy's effective date — the system looks up whichever rate was active on that date and locks it in. Subsequent rate changes don't affect existing policies. This means you can safely add new rate versions without worrying about retroactive changes.
When you set producer_commission_percentage directly on a policy in the plan creation request, that value overrides the rate lookup entirely.
Payout Configuration
Producers can receive automatic commission payouts on a recurring schedule. Configure this at producer creation or update:
recurrence_payout_enabled: trueenables automatic payoutspayout_cadencesets when payouts run — a specific-dates or weekday-pattern monthly schedule, a weekly schedule, or an every-N-weeks scheduleminimal_monthly_thresholdsets a minimum accumulated balance that must be reached before a payout is triggered — useful for avoiding small, frequent transferstransfer_speedcontrols how funds are sent (default:ach)external_account_idpoints to the bank account (fromGET /v1/external-accounts) where payouts are depositednotify_recipient_on_payout_sentcontrols whether the producer receives a confirmation email when their payout is sent (default:true)notify_tenant_on_payout_sentcontrols whether your account's admins receive a summary email when a payout is sent to this producer (default:false)notify_tenant_on_payout_failurecontrols whether your account's admins are alerted if a scheduled payout to this producer fails (default:true)
See Payouts for the full list of cadence options, the next_payout_date field, and examples. (The older recurrence_payout_day single-day field is still accepted but superseded by payout_cadence.)
Payout-related fields (billing_contact_*, transfer_speed, external_account_id, notifications_*, notify_recipient_on_payout_sent, notify_tenant_on_payout_sent, notify_tenant_on_payout_failure) are stored and used for processing but are not included in API responses. The payout notification preferences can be set on create/update but must currently be reviewed in the Advance dashboard rather than read back through the API.
Producer Statements
If you bill your wholesale brokers for the premium on policies they've placed with you, you can generate
that bill from the producer's page in Advance, review it, and send it.
Choose a scope — all of the producer's currently open plans, or a date range filtered by invoice date or
policy effective date — and Advance computes one line per policy: policy number, invoice number, insured,
dates, gross premium, the producer's own commission, agency and surplus-lines fees, total invoiced, amount
paid, and total due. Policy taxes, policy fees, additional policy items, and each plan's own due date are
available but off by default. You can show, hide, rename, and reorder any column, and your choices are
remembered as the default for the next statement. A total row sits directly beneath the last line, under
Total Due. Your agency's own commission never appears on a producer statement.
Every statement carries a statement date — the date you generated it — which is not editable. A due
date is optional: set one before finalizing and it appears beneath the statement date, or leave it out
and the statement carries none.
Before finalizing you can optionally include ACH instructions (the producer's dedicated virtual account)
and/or check instructions, add a memo, and choose whether to email it right away. The check payable-to name
and mailing address come from your Settings → Invoice & Payment configuration (the payable-to arrives
pre-filled and can be overridden for a single statement), and the payment details also show your
Settings → Auto Inbox address so brokers know where to send payment files; anything you have not
configured is left off rather than shown blank. A statement exists from the moment you choose its scope, so
closing the window part-way through doesn't lose your work — reopen it and carry on, or discard it. Once
finalized the figures are final: download it (as
{Producer Name}-Statement-{MM-DD-YYYY}.xlsx, with dates shown as MM/DD/YYYY) or send it again at any time
from the producer's Statements tab, which also keeps the full history of who it was sent to and whether
each send succeeded.
Statements are managed in the Advance dashboard and are not part of the public API.
Looking Up Producers
Three ways to find a producer:
GET /v1/producers— list all producersGET /v1/producers/{producer_id}— fetch by Advance IDGET /v1/producers/customer_external_id/{customer_external_id}— fetch by your system's ID
The external ID lookup is particularly useful in integrations where you manage producers in your AMS and want to reference them in plan creation without maintaining a separate mapping table.
Updated 5 days ago
