Code Issuer Table
A code issuer table lists the code issuer ID (CII) and regular expression for different length of the consumer-presented code. You can use the table to track the issuer of a consumer-presented code, which is determined by the code length, code format and CII.
A demo of the table is shown as follows:
Table 1.2: Code issuer table demo (Last updated on Jun 16, 2020)
Length of CPC | Code Issuer ID (CII) | Other Conditions | Regular Expression | Code Issuer | |
1 | 17 | 28 | N/A | 28[0-9]{15} | Digital Wallet 1 |
2 | 18 | 28 | N/A | 28[0-9]{16} | Digital Wallet 2 |
3 | 19 | 280 ~ 288 | N/A | 28[0-8][0-9]{16} | Digital Wallet 3 |
4 | 19 | 289 | 14th byte does not equal to "6" | 289[0-9]{10}[0-57-9][0-9]{5} | Digital Wallet 4 |
5 | 19 | 289 | 14th byte equals to "6" | 289[0-9]{10}6[0-9]{5} | Digital Wallet 5 |
6 | 24 | 28100100 ~ 28100199 | N/A | 281001[0-9]{18} | Digital Wallet 6 |
7 | 24 | 28100300 ~ 28100399 | N/A | 281003[0-9]{18} | Digital Wallet 7 |
8 | 24 | 28100400 ~ 28100499 | N/A | 281004[0-9]{18} | Digital Wallet 8 |
9 | 24 | 28100500 ~ 28100599 | N/A | 281005[0-9]{18} | Digital Wallet 9 |
10 | 24 | 28100600 ~ 28100699 | N/A | 281006[0-9]{18} | Digital Wallet 10 |
11 | 24 | 28100700 ~ 28100799 | N/A | 281007[0-9]{18} | Digital Wallet 11 |
12 | 24 | 28100900 ~ 28100999 | N/A | 281009[0-9]{18} | Digital Wallet 12 |
13 | 24 | 28101000 ~ 28101099 | N/A | 281010[0-9]{18} | Digital Wallet 13 |
14 | 24 | 28101100 ~ 28101199 | N/A | 281011[0-9]{18} | Digital Wallet 14 |
15 | 24 | 28101200 ~ 28101299 | N/A | 281012[0-9]{18} | Digital Wallet 15 |
16 | 24 | 28101300 ~ 28101399 | N/A | 281013[0-9]{18} | Digital Wallet 16 |
17 | 24 | 28101400 ~ 28101499 | N/A | 281014[0-9]{18} | Digital Wallet 17 |
18 | 24 | 28101800 ~ 28101899 | N/A | 281018[0-9]{18} | Digital Wallet 18 |
19 | 24 | 28101900 ~ 28101999 | N/A | 281019[0-9]{18} | Digital Wallet 19 |
20 | 24 | 28102000 ~ 28102099 | N/A | 281020[0-9]{18} | Digital Wallet 20 |
21 | 24 | 28102100 ~ 28102199 | N/A | 281021[0-9]{18} | Digital Wallet 21 |
22 | 24 | 28102200 ~ 28102299 | N/A | 281022[0-9]{18} | Digital Wallet 22 |
23 | 24 | 28102300 ~ 28102399 | N/A | 281023[0-9]{18} | Digital Wallet 23 |
24 | 24 | 28102400 ~ 28102499 | N/A | 281024[0-9]{18} | Digital Wallet 24 |
25 | 24 | 28102500 ~ 28102599 | N/A | 281025[0-9]{18} | Digital Wallet 25 |
26 | 24 | 28102600 ~ 28102699 | N/A | 281026[0-9]{18} | Digital Wallet 26 |
27 | 24 | 28166600 ~ 28166699 | N/A | 281666[0-9]{18} | Digital Wallet 27 |
28 | 24 | 28180100 ~ 28180199 | N/A | 281801[0-9]{18} | Digital Wallet 28 |
29 | 24 | 30103100 ~ 30103199 | N/A | 301031[0-9]{18} | Digital Wallet 29 |
30 | 24 | 30103200 ~ 30103299 | N/A | 301032[0-9]{18} | Digital Wallet 30 |
31 | 24 | 30103900 ~ 30103999 | N/A | 301039[0-9]{18} | Digital Wallet 31 |
Get a copy
Contact us to get the lastest version of the code issuer table.
Use
As an acquirer or ISV, you can determine the issuer of a consumer-presented code after you obtain the value of a consumer-presented code. When you test parameters in the table, such as length of CPC, CII and other conditions, follow the exact sequence. A sample of code snippet is shown as follows:
package bar;
import java.util.List;
public class RoutingDemo {
/**
* Given routes configuration, find the route for the specific userCode.
*
* @param userCode
* @param routes
* @return
*/
public String[] routeDecision(String userCode, List<String[]> routes) {
for (String[] route : routes) {
//Return the first matching route if any.
if (match(route, userCode)) {
return route;
}
}
throw new IllegalArgumentException("No route matches against " + userCode);
}
/**
*
* Whether a single route rule matches the given userCode.
*
* @param cci
* @param userCode
* @return
*/
private boolean match(String[] route, String userCode) {
String regex = route[3];
return userCode.matches(regex);
}
}
Note:
We recommend you not to hardcode the issuer determination process, in case of any further changes to the table.
After you determine the code issuer, you can pick up a route and forward a transaction to the code issuer. For more details, see Transaction Processing.
Apply for a code issuer ID
If you are seeking for the issuance of consumer-presented codes, click here to apply for a code issuer ID. You will then be registered into the code issuer table, so that the code can be identified by institutions who process transactions according to the code issuer table.
If you already issue codes, you can also contact us to register your existing issuing rules to the routing table. We will reply to you the required information for application and the application result.