1. Glow IDV SDK
Glow Platform
  • Welcome to Glow Data Service!
  • Getting Started
  • Glow Portals
  • Introducing the Glow System
  • API Authentication
  • Smart Meter Onboarding
    • Introducing Smart Meter Onboarding
    • Smart Meter Eligibility Check
    • Terms and Conditions APIs and Management
    • Onboarding Methods — Direct Integration
      • EUI/Postcode Check
      • AVS Check
    • Onboarding Methods — Hosted Integration
      • Glow IDV SDK
        • Introducing the Glow SDK
        • Supported Verification Methods
        • Implementation Guide — Web
        • Implementation Guide — Mobile
        • Verifiable Credentials
        • Verification Result Screen
        • Consent Capture & Onboarding
    • Onboarding Methods — No Integration
      • Invitation Functionality
      • Agent Verification Portal
  • Data Retrieval
    • Retrieving Time Series Data from Onboarded Users
  • Consent Management and Offboarding
    • Consent Management
    • Offboarding
  • Glow CADs & Fulfilment
    • Glow CAD Fulfilment
  • API Reference
    • Smart Meter Elgibility
      • eligibility
        • smets-ihd-cad
          • Check MPxN has CAD/PPMID
        • checksmetsihd
          • postcode
            • Match EUI IHD with postcode
          • Match EUI IHD with MPxN
        • checksmetsmpxn
          • Check MPXN is eligible in DCC.
    • Content System
      • content
        • {contentId}
          • get a content object
          • Update an existing content object
        • Find all the content objects of an application
        • Add a content object
      • languagecontent
        • {languageContentId}
          • get a language content object by ID
          • Update an existing language content object
        • Find all the language content objects of an application
        • Add a language content object
      • termsconditions
        • {tcId}
          • get a terms and conditions object by ID
        • current
          • Find the terms and conditions that are in force.
        • Find all the terms and conditions of an application
        • Add terms and conditions
      • termsconditionsuser
        • {tcUserId}
          • get a specified terms and conditions user obj
        • Find all the responses to terms and conditions documents.
        • Add a user's response to Terms & Conditions document
      • supportdetails
        • {supportDetailsId}
          • get a support details object
        • Find all the support detail objects of an application
        • Add a support details object
      • faq
        • {faqId}
          • get a FAQ object
        • Find all the FAQ objects of an application
        • Add a faq object
      • prompttype
        • {promptTypeId}
          • get a Prompt Type object
        • Find all the prompt type objects of an application
        • Add a Prompt Type object
      • prompt
        • {promptId}
          • get a Prompt object
        • Find all the prompt objects of an application
        • Add a Prompt object
      • promptuser
        • {promptUserId}
          • get a Prompt User object
        • Find all the prompt user objects of an application
        • Add a Prompt User object
      • useraction
        • {userActionId}
          • get a User Action object
        • Find all the user action objects of an application
        • Add a User Action object
      • useractiontype
        • {userActionTypeId}
          • get a User Action Type object
        • Find all the user action type objects of an application
        • Add a User Action Type object
    • User System
      • register
        • User self registers
      • account
        • {accountId}
          • status
            • Find the status of a specified account. If the account is using an external directory service, this call will confirm whether the user is authenticated against it. This call requires administrative application level credentials.
          • mobileapptoken
            • Add mobile app token to a user
            • Remove a mobile app token to a user
          • Find specific account of an application.
          • Updates the account's metadata.
          • Delete account
        • status
          • With a given JWT token a user can have their account status verfied. If their account is created under an external directory service, this call will establish whether a user's token to the external service is still valid.
        • email
          • Change a user's email
        • name
          • Change a user's name
        • changepassword
          • Change a user's password
        • Find all accounts of an application
        • Add an account to an existing user
      • user
        • {userId}
          • username
            • Change a user's username
          • Find specific user that has an account in an application.
          • Delete specific user. This will delete all the accounts of a user. Please refer to delete account API. This API requires specific permissions.
        • verify
          • Generate a user verification token
          • Verify a user verification token
        • resetpassword
          • Generate a token that can be used by user to reset their password.
          • A user resets their password
        • verification
          • status
            • mpxns
              • renewal
                • Renew consent for a number of meterpoints
              • revocation
                • Revoke consent for a number of meterpoints
            • mpxn
              • {mpxn}
                • renewal
                  • Get meter point consent renewals
                  • Renew meter point consent
                • revocation
                  • Get meter point consent revocations
                  • Revoke meter point consent
            • API to retrieve user's meter points' consent and verification
        • Find specific user that has an account in an application from the username.
        • Create a user
      • accountprofile
        • {profileName}
          • Find specific group of application
        • Find all the profiles of an account
        • Create an account profile under a given profileName.
      • accountsession
        • get the session of an account
        • Update an account session.
      • auth
        • token
          • {tokenId}
            • Deletes a token, specified by its tokenId.
          • Returns all the tokens that are active and valid for a specified user.
        • newToken
          • Generate a new token for an account.
        • deleteToken
          • delete a token
        • oauth
          • access
            • Exchange the Authorization Code for an Access Token.
          • Check and validate an Oauth Access token.
          • Authenticate a user and generate an OAuth 2.0 Authorization Code Grant.
        • Checks whether a user token is valid.
        • authenticate an account
    • Virtual Entity System
      • vesys
        • appstats
          • find statistics on the number of Virtual Entities per application
      • virtualentity
        • {id}
          • resources
            • Find the resources of that belong to Virtual Entity with ID
          • attribute
            • Find a Virtual Entity's metadata by ID
            • Add/Update a Virtual Entity's metadata
            • delete metadata from the Virtual Entity
          • Find Virtual Entity by ID
          • Update a Virtual Entity
          • Delete a Virtual Entity
        • Add a new Virtual Entity
        • Find all Virtual Entities
      • vetype
        • {id}
          • resources
            • Find all resources that belong to a user that satisfy the Resource Types in the Virtual Entity Type definition.
          • Find Virtual Entity Type by ID
          • Update a Virtual Entity Type
        • Add a new Virtual Entity Type
        • Find all Virtual Entity Types
    • Webhook System
      • webhook
        • {webhookId}
          • Find webhook by ID
        • error
          • {errorId}
            • Find a particular webhook error
          • Find all the webhooks that have failed
        • Find all webhooks of an application (or user)
    • Resource System
      • resource
        • {id}
          • readings
            • Get resource readings
          • current
            • Get the current resource reading.
          • first-time
            • Get the UTC time of the first available reading
          • last-time
            • Get the UTC time of the most recent available reading
          • meterread
            • Get the cumulative value reported on a metering device. (Not supported for all resource types).
          • tariff
            • Get the latest tariff that is being applied to a resource.
          • tariff-list
            • Get the tariff history that is being applied to a cost resource.
          • catchup
            • Trigger a request to retrieve the latest available readings from the DCC.
          • glowbinary
            • API that returns the resource's raw data in the Glow Binary format.
          • Find resource by ID
        • count
          • Count the number of resources per resourceType
        • Add a new resource
        • Find all resources per user or application
      • resourcetype
        • {id}
          • resource
            • Find resources of a specific resource type that belong to a user
          • appresource
            • Find resources of a specific resource type that an application has access to
          • Find resourceType by ID
        • Add a new resource type.
        • Find all resource types
    • Notification System
      • alerttype
        • {alertTypeId}
          • Find alert type by ID
          • Updates the alert type's metadata.
        • Find all alert types of an application
        • Create an alert type
      • alert
        • {alertId}
          • Get an alert by Id
        • user
          • Get the alerts sent to a user
        • Send an alert
      • template
        • {templateId}
          • Find template type by ID
          • Updates the teplate's metadata.
        • {alertTypeId}
          • {channelType}
            • {cultureCode}
              • Find template by alertTypeId, channeType and cultureCode
              • Create template by alertTypeId, channeType and cultureCode
        • Find all templates of an application
        • Create a template
      • notification
        • {notificationId}
          • log
            • Get the logs of a particular notification
          • Get a notification by Id
    • DFS
      • dfs
        • termsconditions
          • The current version of terms and conditions that is pertinent to DFS for a particular application.
        • user
          • Get all the users that have opted in the DFS functionality
          • User opts in to DFS functionality for a particular MPxN. The mpxn field is only required if a user has more than one MPxN.
          • User opts out of DFS functionality
        • event
          • {dfsEventId}
            • user
              • Get all the users that have participated in a particular DFS event
          • user
            • participation
              • API to indicate User participating in particular DFS event
            • Get all the events a user has signed up for
    • Device Management System
      • devicetype
        • {id}
          • Find Device Type by ID
        • Add a new Device Type
        • Find all device types
      • device
        • {id}
          • status
            • This call can be used to see whether a gateway device is sending packets to the Glow Platform (i.e. via WiFi).
          • Find device by ID
        • resource
          • {resourceId}
            • Find the device that sources a specified resource.
        • meter-point
          • {meterPointNumber}
            • inventory
              • Get the DCC inventory of a meter point
            • resources
              • Get the resources associated to a meter point
        • smart-meter
          • {eui}
            • inventory
              • Get the DCC inventory of a meter point by providing an EUI.
        • status
          • This call can be used to see whether a gateway device is sending packets to the Glow Platform (i.e. via WiFi).
        • Get a user's devices
        • Add a new device
      • discover
        • {hardwareId}
          • Find device by ID
  1. Glow IDV SDK

Verification Result Screen

Showing your own confirmation after verification#

When an energy consumer verifies successfully, the SDK shows a brief confirmation of its own inside the embedded frame. We recommend closing the flow at that point and showing a confirmation page you build yourself.
This applies to any integration — a web front end or a mobile app.

Why build your own#

The SDK's confirmation is deliberately minimal. It renders inside the iframe, so it carries the SDK's layout rather than your product's, and it can say nothing about what happens next in your journey — which is the question the consumer actually has at that moment.
A page you control lets you:
Use your own design. Your type, spacing and colours, rather than the
embedded flow styled through theme.
Explain your next step. "We'll start collecting your readings within 24
hours" means something to your customer; the SDK cannot know it.
Keep the journey coherent. Verification is one step in your onboarding,
not a separate product, and it should not look like one.
Sequence what follows. Consent capture, terms, device setup — those are
yours to order.
This is a recommendation, not a requirement. If the SDK's own confirmation suits your journey, handle GLOW_IDV_EXIT and continue from there instead.

When to show it#

As soon as the credential is issued.

Web#

GLOW_IDV_SUCCESS carries the credential. Take it, tear down the flow, and render your page.

React Native#

const result = await presentVerification({ subject: email });

if (result.status === 'verified') {
  navigation.navigate('VerificationSuccess', { result });
}
Or, using GlowIdvView directly, from onVerified.
Do not tear down on failure
A failed verification is recoverable — the SDK shows its own error and lets the consumer correct their details. Close the flow only on success; leave it in place so they can try again without restarting.

What to put on it#

Everything below is already in the success payload, so no extra call is needed.
ElementFieldWhy
Clear confirmation—State plainly that verification succeeded
What happens nextyour productThe consumer's actual question
Meter pointmpanConfirms which supply was verified
Method usedmethodRender it readably, not as the raw value
Valid untiltokenDecode the JWT's exp claim
ReferenceverificationIdUseful if they contact support
The field names are the same either way. On the web they arrive on the message:
In React Native they arrive on the result:
const { token, mpan, method, verificationId } = result;
Render method in your own words rather than passing it through:

What not to put on it#

Never display the credential
The token is a signed JWT whose payload contains the identifier you supplied as subject — often an email address. Do not render it, and do not put it anywhere it could reach a screenshot, a screen recording, a support ticket or an analytics event.
The consumer has no use for the credential. It goes to your server for consent capture and nothing else.

Example#

Web#

React Native#

export function VerificationSuccessScreen({ result, onContinue }) {
  return (
    <ScrollView>
      <SuccessBadge />
      <Heading>You're verified</Heading>
      <Text>
        We've confirmed you live at this property. Next you'll review the terms,
        then set up your device.
      </Text>

      <Card>
        <Detail label="Meter point" value={result.mpan} />
        <Detail label="Method" value={describeMethod(result.method)} />
        <Detail label="Valid until" value={expiryOf(result.token) ?? '—'} />
        <Detail label="Reference" value={result.verificationId} />
      </Card>

      <Button title="Continue" onPress={onContinue} />
    </ScrollView>
  );
}

Reading the expiry#

The credential is valid for three months. To show that date, read the exp claim from the JWT. This works unchanged in both browsers and React Native.
JWTs use base64url, which atob does not accept directly — the alphabet differs and the padding is stripped. Convert before decoding, or the date silently never appears.
Read only the claim you need. The same payload carries the identifier the consumer was verified against.

Optional: letting them keep a copy#

Some journeys offer the credential as a record. If you do, make it a deliberate action — a button, never something the page does on its own — and hand it to the platform rather than rendering it.
Web
React Native
<Button
  title="Save credential"
  onPress={() => Share.share({ title: 'Glow verifiable credential', message: token })}
/>
This puts a sensitive credential wherever the consumer chooses to send it. Most journeys should omit it: the credential has already gone to your server, and they have no use for their own copy.

After the confirmation#

Continue to consent capture. Verification alone does not grant access to smart meter data — the credential must be attached to the Consent Capture & Onboarding call, which your server makes.
Modified at 2026-09-07 14:38:47
Previous
Verifiable Credentials
Next
Consent Capture & Onboarding
Built with