> ## Documentation Index
> Fetch the complete documentation index at: https://docs.axle.energy/llms.txt
> Use this file to discover all available pages before exploring further.

# Eligibility & Consent

> Determine which users can participate in EV charging flexibility and get them signed up

Before onboarding users, you need to collect their address, check eligibility, and obtain consent. The recommended approach is to collect this information at the point when a user first connects an asset in the app.

<div style={{display: 'flex', gap: '2rem', alignItems: 'center', flexWrap: 'wrap', justifyContent: 'center'}}>
  <div style={{flex: 1, minWidth: '280px'}}>
    <div style={{display:'flex',flexDirection:'column',alignItems:'center',fontSize:'0.8rem',fontFamily:'inherit',lineHeight:'1.4'}}>
      <div onClick={()=>{const v=document.getElementById('eligibility-video');v.currentTime=0;v.play();}} style={{border:'1.5px solid #222',borderRadius:'6px',padding:'0.45rem 1rem',cursor:'pointer',background:'#fff',textAlign:'center',width:'190px',boxSizing:'border-box'}}>User creates app account</div>

      <div style={{width:'1.5px',height:'24px',background:'#222'}} />

      <div onClick={()=>{const v=document.getElementById('eligibility-video');v.currentTime=6;v.play();}} style={{border:'1.5px solid #222',borderRadius:'6px',padding:'0.45rem 1rem',cursor:'pointer',background:'#fff',textAlign:'center',width:'190px',boxSizing:'border-box'}}>User connects charger to app account</div>

      <div style={{width:'1.5px',height:'24px',background:'#222'}} />

      <div onClick={()=>{const v=document.getElementById('eligibility-video');v.currentTime=14;v.play();}} style={{border:'1.5px solid #222',borderRadius:'6px',padding:'0.45rem 1rem',cursor:'pointer',background:'#fff',textAlign:'center',width:'190px',boxSizing:'border-box'}}>User inputs address and MPAN</div>

      <div style={{width:'1.5px',height:'24px',background:'#222'}} />

      <div style={{width:'96px',height:'96px',border:'1.5px solid #222',transform:'rotate(45deg)',background:'#fff',display:'flex',alignItems:'center',justifyContent:'center',flexShrink:0}}>
        <div style={{transform:'rotate(-45deg)',textAlign:'center',width:'116px',fontSize:'0.72rem',padding:'4px'}}>Check user eligibility for flex</div>
      </div>

      <div style={{position:'relative',width:'280px',height:'64px',flexShrink:0}}>
        <div style={{position:'absolute',left:'50%',top:'20px',width:'1.5px',height:'20px',background:'#222',transform:'translateX(-50%)'}} />

        <div style={{position:'absolute',left:'25%',top:'40px',width:'50%',height:'1.5px',background:'#222'}} />

        <span style={{position:'absolute',left:'37.5%',top:'42px',transform:'translateX(-50%)',fontSize:'0.65rem',color:'#666',background:'#fff',padding:'0 2px',whiteSpace:'nowrap'}}>eligible</span>
        <span style={{position:'absolute',left:'62.5%',top:'42px',transform:'translateX(-50%)',fontSize:'0.65rem',color:'#666',background:'#fff',padding:'0 2px',whiteSpace:'nowrap'}}>ineligible</span>

        <div style={{position:'absolute',left:'25%',top:'40px',width:'1.5px',height:'24px',background:'#222',transform:'translateX(-50%)'}} />

        <div style={{position:'absolute',left:'75%',top:'40px',width:'1.5px',height:'24px',background:'#222',transform:'translateX(-50%)'}} />
      </div>

      <div style={{display:'flex',width:'280px',alignItems:'flex-start'}}>
        <div style={{flex:1,display:'flex',flexDirection:'column',alignItems:'center'}}>
          <div onClick={()=>{const v=document.getElementById('eligibility-video');v.currentTime=24;v.play();}} style={{border:'1.5px solid #222',borderRadius:'6px',padding:'0.4rem 0.5rem',cursor:'pointer',background:'#fff',textAlign:'center',width:'120px',boxSizing:'border-box'}}>User provides informed consent</div>

          <div style={{width:'1.5px',height:'20px',background:'#222'}} />

          <div onClick={()=>{const v=document.getElementById('eligibility-video');v.currentTime=30;v.play();}} style={{border:'1.5px solid #222',borderRadius:'6px',padding:'0.4rem 0.5rem',cursor:'pointer',background:'#fff',textAlign:'center',width:'120px',boxSizing:'border-box'}}>User finishes set up and enters proposition</div>
        </div>

        <div style={{flex:1,display:'flex',flexDirection:'column',alignItems:'center'}}>
          <div style={{border:'1.5px solid #222',borderRadius:'6px',padding:'0.4rem 0.5rem',background:'#fff',textAlign:'center',width:'120px',boxSizing:'border-box',color:'#888'}}>Legacy onboarding flow</div>
        </div>
      </div>
    </div>
  </div>

  <div style={{flex: 1, minWidth: '280px', maxWidth: '50%'}}>
    <video id="eligibility-video" controls muted playsInline style={{width: '100%', display: 'block'}}>
      <source src="https://mintcdn.com/fascinating-teal-alpaca/atmKblYYocFXvFDc/images/smart-charging-eligibility.mov?fit=max&auto=format&n=atmKblYYocFXvFDc&q=85&s=6ddb9785c36177b321105189055c503a" data-path="images/smart-charging-eligibility.mov" />
    </video>
  </div>
</div>

<Tip>Click on relevant steps in the flowchart to jump to the corresponding point in the video. Note that the eligibility check happens in the background.</Tip>

## Address collection

An MPAN (Meter Point Administration Number) is required for eligibility checks and participation in a proposition. We use the address to get a user's MPAN.

You may already be collecting the user's address but our purpose built address lookup flow is optimised for matching to an MPAN.

<Card title="Collecting addresses" icon="location-dot" href="/workflows/collecting-addresses">
  Learn how to implement an address collection workflow
</Card>

<Card title="Get MPAN from address" icon="rectangle-terminal" href="/workflows/find-mpan">
  Learn how to retrieve meter details
</Card>

## Eligibility

Use the check-eligibility endpoint to find out which propositions a site qualifies for, to determine whether to proceed with the user proposition. Pass the MPAN, and optionally a charger model.

<Card title="Check eligibility" icon="rectangle-terminal" href="./api-reference/check-eligibility">
  Check the eligibility of a site without persisting any data.
</Card>

<Tip>
  You control eligibility - by default, we will only let market-qualified users participate in flex propositions, but we can expand access based on your preferences.
</Tip>

## Consent

Once you've identified an eligible user, you need to obtain their consent to participate.

This is typically done through an update to your Terms & Conditions that users must agree to before onboarding. You'll need to capture a **timestamp** indicating when the user agreed to these terms.

<Tip>
  Store the consent timestamp - you'll need to provide it during the onboarding process to confirm the user has agreed to participate.
</Tip>

## Next Steps

Once you've collected:

* **MPAN** - from the address lookup
* **Consent timestamp** - when the user agreed to the terms

You're ready to integrate with your chosen product:

<Card title="Smart Charging Integration" icon="bolt" href="/workflows/smart-charging/integration">
  Start onboarding eligible users to Smart Charging
</Card>

<Card title="Flex Lite Integration" icon="pause" href="/workflows/flex-lite/integration">
  Start onboarding eligible users to Flex Lite
</Card>
