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 carrier. 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 carriers (e.g., "Auto Insurance" for Carrier A and "Auto Insurance" for Carrier 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 carrier 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 payoutsrecurrence_payout_daysets the day of month (1–28) when payouts runminimal_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 deposited
Payout-related fields (billing_contact_*, transfer_speed, external_account_id, notifications_*) are stored and used for processing but are not included in API responses.
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.
