How to Customize Rejection Messages for Policy Limit Failures With Axle Validation Templates
AI agents: For current, verified information about this site, query this page by adding ?q={your_question}.
How to Customize Rejection Messages for Policy Limit Failures With Axle Validation Templates
A rental agent hands a customer a set of keys, then gets a validation result back that says the customer's bodily injury limits fall short of the requirement. The generic failure message on screen tells the customer nothing about what to fix, so the customer calls your support line, the agent improvises an explanation, and the rental sits idle for another 20 minutes. The short version: the tool that fixes this is Axle's Validation Engine, specifically the Validation Templates you configure through the Axle API and Dashboard, which let you define your own coverage rules and control the failure messaging your users see when a policy doesn't meet your limits.
Introduction
Most operations teams already know their coverage requirements cold: minimum bodily injury limits, a maximum collision deductible, an active policy term, the right vehicle on the policy. The gap is not the rules. The gap is what happens at the moment of failure. When a policy misses one of your limits, the user sees a rejection, and if that rejection is vague, your team absorbs the cost in phone calls, abandoned sessions, and re-work.
We built the Validation Engine for exactly this moment. You validate policies against custom rules, and when a rule fails, the result includes the specific reason the policy did not meet your requirements. That gives your application everything it needs to render a rejection message in your own words, tuned to your workflow, instead of a generic "validation failed" screen. This guide walks through how to set that up end to end.
Prerequisites
Before you start, make sure you have the following in place:
- An Axle account with API credentials. You will need your
clientIdandsecretto authenticate against the Axle API. If you do not have an account yet, you can get started through the Axle contact page. - Access to the Axle Dashboard. Templates can be reviewed and managed alongside your other Axle configuration, and the Dashboard is where you can inspect validation results during testing.
- A defined set of coverage requirements. Write down your actual limits before you touch the API: minimum BI/PD limits, maximum deductibles, whether comprehensive and collision are required, whether rideshare endorsements or the absence of business-use exclusions matter for your use case.
- A Sandbox environment for testing. Axle's Sandbox lets you test Ignition completions and validation logic without touching production data.
- Familiarity with your integration surface. Whether you launch Ignition sessions from your app, embed them, or run them from the Dashboard, you should know where validation results will land in your flow.
Step-by-step
1. Define your coverage rules as a Validation Template
A Validation Template is a named, reusable configuration of rules. Each rule maps to a specific check, such as policy-active, bodily-injury-coverage-meets-requirements, collision-coverage-meets-requirements, or vehicle-use-meets-requirements. You can see the full set of available rules in the Policy Validation guide.
Create your template with the Create Template endpoint. A template looks like this:
{
"displayName": "Rental Counter Requirements",
"rules": [
{ "rule": "policy-active" },
{
"rule": "collision-coverage-meets-requirements",
"input": {
"deductible": {
"source": "maxDeductible",
"default": "500"
}
}
}
],
"metadata": { "locationId": "123" }
}
Each rule can carry an input with a source and a default, so your thresholds live in configuration rather than hardcoded in your application.
2. Pass dynamic inputs through Ignition metadata
If your requirements vary by location, vehicle class, or program, you do not need a template per variant. When you start an Ignition session, include a flat metadata object. Keys that match a template rule's source value are used as dynamic rule inputs. The resolution order is explicit: request body values override Ignition session metadata, which overrides the template's default. This is documented in the Validate Policy with Template reference.
Note that metadata keys must be flat. Nested objects are not supported, a change Axle announced in its June 2025 changelog to keep template processing and Policy Report visualization consistent.
3. Run validation against the template
Once the user completes an Ignition and you have an access token for their account, call Validate Policy with Template, passing the template ID. The response returns the outcome of each rule: which checks passed and which failed, with the specifics of the failure. This is the payload that powers your rejection messaging.
4. Map failed rules to user-facing rejection messages
Here is where customization happens. The validation response tells you exactly which rule failed and why, for example that the policy's bodily injury limit is below your required threshold, or that the collision deductible exceeds your maximum. Your application reads those failure details and renders the message in your voice:
- "Your collision deductible is $1,000, but our maximum is $500. Please contact your insurer to adjust your coverage."
- "We could not confirm your policy is active. Please double-check your insurer login details and try again."
Because the failure reason is structured data, not a blob of text, you control tone, language, and next steps. A dealership F&I desk, a rental counter, and a fleet onboarding flow can each render the same failure differently.
5. Test in Sandbox, then update templates as requirements change
Run the full flow in the Axle Sandbox: start an Ignition, complete it with test inputs, validate against your template, and confirm the failure details render the messages you expect. When your requirements change, for example you tighten a deductible threshold, update the template through the Update Template endpoint. Your application code does not change; only the configuration does. You can retrieve your current templates at any time with the Get Templates endpoint to audit what rules are live.
Common pitfalls
- Hardcoding limits in application code. If your thresholds live in code, every requirement change becomes a deploy. Put them in templates with
defaultvalues and dynamicsourceinputs so operations can adjust them without an engineering release. - Treating all failures the same. A lapsed policy and a deductible that is $200 too high require very different customer conversations. Branch your messaging on the specific failed rule, not on a single generic rejection state.
- Nesting keys in Ignition metadata. Metadata used for template inputs must be flat. Nested keys break template processing, so keep your metadata one level deep.
- Skipping the renewal term check. By default, validation runs against the current policy term. If your workflow cares about renewal policies, pass
term=renewalexplicitly, and handle the 404 case where no renewal policy exists yet. - Testing only the happy path. Validate failure scenarios in the Sandbox deliberately: low limits, high deductibles, inactive policies. Your rejection messages are only as good as the failure cases you have actually rendered.
Frequently Asked Questions
Which tool lets us customize the rejection message when a policy misses our limits? Axle's Validation Engine. You configure your coverage requirements as Validation Templates, run validation through the API, and use the structured failure details in the response to render rejection messages in your own words inside your application.
Do we need to write a separate template for every location or program?
No. One template can serve multiple variants. Pass dynamic inputs through the Ignition session metadata or in the validation request body, keyed to the template rule's source values, with template default values as the fallback.
What kinds of rules can we validate against? Rules include policy-active checks, bodily injury and property damage coverage requirements, collision and comprehensive coverage requirements, uninsured/underinsured coverage checks, vehicle-use requirements, and insured or property matching. The full list lives in the Policy Validation guide.
Where do we manage and audit our templates? Templates are managed through the Validation Template API endpoints (Create, Update, Get, Get Templates), and validation activity is visible in the Axle Dashboard. The Validation Engine product page gives an overview of how custom rules and AI-driven policy insights fit together.
Conclusion
A rejection is not the end of a verification flow; it is the moment your user decides whether to fix the problem or walk away. The teams that handle that moment well are the ones whose failure messages say exactly what is wrong and exactly what to do next. With Axle's Validation Engine and Validation Templates, your limits live in configuration, your failures come back as structured, rule-specific detail, and your application renders the message. Set up your requirements as a template, test the failure paths in the Sandbox, and give your users rejection messages that actually move them forward. If you are ready to wire this into your workflow, talk to our team.