Age Verification
Overview
This page explains how the Charge To Account Gateway handles age verification.
This page assumes you are already familiar with how to make charges or set up subscriptions using the Charge To Account Gateway API. For more information, see the sections on One-Off Charges and Subscriptions.
Contents
- Age verification parameters
- Adult content
- Non-adult content
- Content with two versions
- Age verification and Anonymous User Identification
Age verification parameters
Each time you request a one-off charge or subscription, you must specify the classification of the product or service involved using the isAdult parameter.
There are three possible values of isAdult:
- adult : the product or service involves adult content
- nonadult : the product or service is suitable for all ages
- either : you will provide either an adult or a non-adult version, depending on user status
The Charge To Account Gateway can determine whether the end user has been verified as an adult by their mobile operator. The rules for determining whether a user is an adult vary between operators.
If you specify that content is adult or either, the age verification status of the user may be reported in future notifications using the ageVerified parameter. This is either yes or no. If an ageVerified value is not returned, you should assume that the user's age verification status is unknown and must not serve them adult content.
Adult content
If you specify an isAdult value of adult but the end user's network has not verified the user as adult, the charge or subscription request will fail when the user tries to confirm it.
The user will be presented with an error message:

The error message gives an operator-specific explanation of how the user can verify that they are an adult. After verifying, the user can try a new transaction.
Here is an example of a notification from the gateway following an age verification failure:
http://merchant.example.com/mxpay?
If the user is already verified as an adult, the request will proceed as normal.
Non-adult content
If you specify an isAdult value of nonadult for a charge or subscription request, the outcome will not be affected by the end user's age verification status.
Content with two versions
If you have both adult and non-adult versions of a content item or service, you can specify an isAdult value of either.
If the charge or subscription request succeeds, your application will be able to determine which version to provide by the value of ageVerified present in the notification from the gateway.
If the returned value of ageVerified is yes, your application can provide the adult version of the content.
If ageVerified is no or not present, the non-adult version should be provided.
Depending on how your application provides access to content, you may wish to change the fulfilmentUrl provided in your response to the notification depending on the user's age verification status.
As an example, suppose you have a mobile content store selling a music track which can be provided as either an adult version with explicit lyrics or as a non-adult radio edit. The store is implemented so that the end user downloads the track directly from the fulfilment URL.
This is a truncated example of the one-off charge request you would send to the gateway when a user purchases the track.
https://cta.mxtelecom.com/api?
Non-verified end user
Suppose the end user in question is not age verified.
You would receive an HTTP notification from the gateway similar to this:
http://merchant.example.com/mxpay?
The transactionState value of confirmed shows that the charge request has succeeded (the outcomeReasonText value can be disregarded).
The ageVerified value of no shows that the user is not confirmed as an adult. Therefore the "clean" radio edit of the track should be provided.
Your store responds to the gateway's HTTP request with a fulfilment URL pointing to the non-adult track such as:
fulfilmentUrl:http://merchant.example.com/view?productId=X530&productName=Jump+It+Up&productVersion=radio-edit
The user is redirected to this URL and can download the track.
Verified end user
Suppose the end user is verified as an adult.
You would receive an HTTP notification from the gateway similar to this:
http://merchant.example.com/mxpay?
The transactionState value of confirmed shows that the charge request has succeeded.
The ageVerified value of yes shows that the user is confirmed as an adult.
Your store responds to the gateway's HTTP request with a fulfilment URL pointing to the adult track such as:
fulfilmentUrl:http://merchant.example.com/view?productId=X531&productName=Jump+It+Up&productVersion=adult
The user is redirected to this URL and can download the track.
Age verification and Anonymous User Identification
Age verification status can also be determined using the Charge To Account Gateway's Anonymous User Identification functionality. See the Anonymous User Identification API documentation for details.

