Академический Документы
Профессиональный Документы
Культура Документы
com
STANDARD TECHNICAL
REFERENCE FOR DEVELOPERS
Details on standard Boku API calls and callback notifications
Date
2014-07-02
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 1 of 64
Table of Contents
Table of Contents
TABLE OF CONTENTS......................................................................................................... 2
1 INTRODUCTION & OVERVIEW .................................................................................... 3
PURCHASE FLOW SCHEME DIAGRAM ..............................................................................................4
REFUND SCHEME DIAGRAM ..........................................................................................................4
2 FORMATTING CONVENTIONS .................................................................................... 5
PRESENTATION OF EXAMPLES AND TABLES.......................................................................................5
CURRENCY VALUES IN API CALLS AND CALLBACK NOTIFICATIONS ........................................................5
PROPER PRICE DISPLAY .................................................................................................................6
3 PRICE INFORMATION API CALLS ................................................................................. 7
DISCUSSION: USING “CONTINUOUS PRICES” ....................................................................................7
‘PRICE-LIST’ API CALL ...................................................................................................................9
‘PRICE-INFO’ API CALL............................................................................................................... 14
STATIC MATRIX PRICE REQUEST (‘SERVICE-PRICES’) API CALL .......................................................... 17
ON-DEMAND PRICE POINTS REQUEST (‘PRICE’) API CALL ............................................................... 21
4 TRANSACTIONAL API CALLS ..................................................................................... 27
TRANSACTION INITIATION (‘PREPARE’) API CALL ............................................................................ 27
TRANSACTION VALIDATION (‘VERIFY-TRX-ID’) API CALL................................................................... 34
5 FORWARD-TO URLS ................................................................................................. 37
6 CALLBACK NOTIFICATIONS....................................................................................... 39
FINAL RESULT (BILLINGRESULT) CALLBACK NOTIFICATIONS............................................................... 39
INTERMEDIATE STATUS (EVENT) CALLBACK NOTIFICATIONS.............................................................. 47
REFUND (CHARGEBACK) CALLBACK NOTIFICATIONS ........................................................................ 51
REQUIRED CALLBACK NOTIFICATION ACKNOWLEDGEMENTS (ACKS) ................................................. 53
APPENDIX A. TEST NUMBER USAGE ............................................................................ 56
APPENDIX B. PARTIAL FULFILLMENT ........................................................................... 59
APPENDIX C. NETWORK CODES AND NAMES............................................................... 61
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 2 of 64
Introduction & Overview
• Price Information API calls: details different methods of retrieving price information from
Boku's servers;
• Transactional API calls: used to initiate transactions, verify the status of a transaction, and
replay transaction status notifications;
• Forward-to URLs: information about URLs used to redirect consumers after a completed
transaction;
• Callback notifications: provides details of the callback notification mechanism used to
send transaction status information to merchants' callback servers for the purpose of
content fulfillment and de-fulfillment.
The appendix includes information about using test transactions, which will be useful during
development and QA.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 3 of 64
Introduction & Overview
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 4 of 64
Formatting Conventions
2 Formatting Conventions
HTTP request parameter name/value tables (e.g. API calls) have an orange column header:
Example XML responses are shown in a grey box with the element/attribute values in blue:
XML element/attribute tables are shown with a dark blue column header:
While most currencies have 100 fractional units per primary currency unit, there are some
exceptions. The table below lists the markets in which non-standard fractional currency units
are used.
IMPORTANT! Merchant API calls must express currency values in fractional currency units. For
example, a ‘prepare’ API call to initiate a USD $5.00 transaction would include the following
parameters: currency=USD and price-inc-salestax=500.
Boku previously recommended using several currency formatting price attributes (‘currency-
decimal-places’, ‘currency-symbol’, and ‘currency-symbol-orientation’) to format prices for
display to consumers. Now that ‘display-price’ information is available, these attributes should
not be used.
In some countries (e.g. Russia and Singapore) the value of ‘price-inc-salestax’ will be slightly
higher than the price displayed on the payment panel, because mobile network operators in
those markets allow Boku to display the price without fees as long as the Boku terms and
conditions explicitly state that additional fees may apply.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 6 of 64
Price Information API Calls
There are four Price Information API Calls: ‘price-list’, ‘price-info’, ‘service-prices’, and ‘price’.
Three of them – ‘price-list’, ‘service-prices’, and ‘price’ – retrieve sets of available price points
based on input parameters. The fourth – ‘price-info’ – retrieves information about a specific
price point.
• The ‘price-list’ API call is used to retrieve price points and price ranges for one or all
markets. The ‘price-list’ API response includes one or more ‘country’ elements, each of
which has one or more price rules that define “country prices” and “network-specific
prices”. The “country prices” are available on all networks in the market, and “network-
specific prices” each network’s prices, which may be different than the country prices.
• The ‘price-info’ API is used to retrieve details about a specific price point. It is designed
to be used in conjunction with the ‘price-list’ API call when the ‘price-list’ results are
returned in “continuous-price” format. The ‘price-info’ API provides price-point-specific
details such as formatting specifications, tax information, and payout information.
• The ‘service-prices’ API call is used to retrieve the price points that you’ve stored in
your Service Price Matrices.
• The ’price’ API call can be used to retrieve the “best-matching” price point in each of
one or more markets by specifying “dynamic parameters”.
Chapter 5 of the Boku Solution Overview, “Retrieve Price Information,” discusses the use
case for each Price Information API call. The Boku Pricing Best Practices Guide details the
recommended Price Information API usage for merchants selling virtual currency or otherwise
allowing users to “top up” a balance.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 7 of 64
Price Information API Calls
merchants offering a shopping-cart checkout flow, in which consumers may select many items
of different prices and then pay for them at once.
Boku’s ‘price-list’ and ‘price-list’ APIs allow merchants to use these continuous prices where
available, while still maintaining support for carriers that have not yet provided this feature.
The ‘price-list’ API call is used to retrieve price points and price ranges for one or all markets.
The ‘price-list’ API response includes one or more ‘country’ elements, each of which has one or
more price rules that define “country prices” and “network-specific prices”. The “country prices”
are available on all networks in the market, whereas “network-specific prices” are available only
on some networks in the market.
The ‘price-info’ API is used to retrieve details about a specific price point. It is designed to be
used in conjunction with the ‘price-list’ API call when the ‘price-list’ results are returned in
“continuous-price” format. The ‘price-info’ API provides price-point-specific details such as
formatting specifications, tax information, and payout information.
Price ranges (price rules listed in “continuous-price” format) are used to compactly describe the
large number of individual price points that form a continuous range; for example a continuous
range from USD $1.00 to $10.00 has 901 individual possible prices. This format can also be
used to define individual (discrete) price points, either singly or in sets.
Price ranges are defined by the following three attributes, all of which are in fractional currency
units1:
1
Fractional currency units are discussed in the “Currency Values in API Calls and Callback Notifications” section of
the Boku Technical Reference for Developers
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 8 of 64
Price Information API Calls
To retrieve all generally-available prices (country prices) from Boku, call the ‘price-list’ API with
only the authentication parameters (either “password”, or “sig” and “timestamp”). Additional
parameters such as “country”, “currency”, “service-id”, and “network” can be used to further
restrict the prices returned.
The price rules are in “continuous-price” (price range) format by default; they can also be
returned in “discrete-price” (price point) format by specifying “price-type=discrete” in the API call.
The default “continuous-price” format may be used to retrieve prices for markets that don’t fully
support continuous price ranges: the API response includes one or more discrete price points
(price ranges with increment=0). For example, the set of price points {2, 3, 5, 10} is defined
using four price ranges:
Similarly, the “discrete-price” format can also be used for markets that do support continuous
pricing. The API response will list 20-50 evenly spaced discrete price points within the
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 9 of 64
Price Information API Calls
REQUEST EXAMPLE
The following “continuous-price” format ‘price-list’ API response does not contain network-
specific prices.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 11 of 64
Price Information API Calls
5 max-price integer The maximum allowable price, in Yes For USD currency, a value of
fractional units for the indicated “3000” would indicate thirty
country. dollars (USD $30.00).
6 min-price integer The minimum allowable price, in Yes For USD currency, a value of
fractional units for the indicated “20” If currency is USD, would
country. indicate twenty cents (USD
$0.20).
7 reference- string Currency in ISO 4217 standard. Yes “USD” if not supplied in
currency request.
8 status boolean Market availability status. Yes 0 = not available (under
maintenance)
1 = available
The following “discrete-price” format ‘price-list’ API response does not contain network-specific
prices.
pricing values.
3 display-price string Full string of the specific price point Yes
formatted correctly with the proper
currency symbol, currency symbol
orientation, decimal symbol, and
decimal place.
4 exchange number Exchange rate between the local Yes
currency and the ‘reference-
currency’.
5 price-ex-tax* integer Price excluding tax (e.g. GST, VAT, Yes
etc.).
6 price-inc-tax* integer Price including tax (e.g. GST, VAT, Yes
etc.).
7 receivable- integer Payout before the Boku Fee is Yes
gross* deducted.
8 receivable-net* integer Payout after the Boku Fee is Yes
deducted.
9 reference- string Currency in ISO 4217 standard. Yes “USD” if not supplied in
currency request.
10 reference-price- integer The ‘price-ex-tax’ value in the Yes
ex-tax* reference currency.
11 reference-price- integer The ‘price-inc-tax’ value in the Yes
inc-tax* reference currency.
12 reference- integer The ‘receivable-gross’ value in the Yes
receivable- reference currency.
gross*
13 reference- integer The ‘receivable-net’ value in the Yes
receivable-net* reference currency.
14 status boolean Market availability status. Yes 0 = not available (under
maintenance)
1 = available
* These values are returned in fractional currency units, e.g. $1.50 is returned as “150” to
denote 150 cents. Fractional currency units are discussed in the “Currency Values in API Calls
and Callback Notifications” section of the Boku Technical Reference for Developers.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 13 of 64
Price Information API Calls
‘Price-list’ API responses in “discrete-price” format include the “price-inc-tax”, “price-ex-tax”, and
“net-payout” attributes. When the ‘price-list’ API response is in the default “continuous-price”
format, these attributes – which apply to a specific price point – should be retrieved via the
‘price-info’ API.
The ‘price-info’ API can also be used to verify that a specific price point exists within a
continuous range. If a ‘price-info’ request is made for an invalid price point, an error response
will be returned.
REQUEST EXAMPLE
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 14 of 64
Price Information API Calls
The ‘price-info’ API response includes price-point-specific information including payout, display
formatting, and networks that support the price.
The following elements and attributes are returned in the ‘price-info’ API response.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 15 of 64
Price Information API Calls
* These values are returned in fractional currency units, e.g. $1.50 is returned as “150” to
denote 150 cents. Fractional currency units are discussed in the “Currency Values in API Calls
and Callback Notifications” section of the Boku Technical Reference for Developers.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 16 of 64
Price Information API Calls
<result-msg>Operation Successful</result-msg>
<service id="18e050091eac44e3bcd15b63" name="Demo Merchant" reference-
currency="USD" price-mode="price">
<key-value row-ref="0" key="100">
<pricing country="US" amount="100" currency="USD" currency-symbol="$"
currency-symbol-orientation="l" currency-decimal-places="2" price-
inc-salestax="100" price-ex-salestax="100" receivable-gross="54"
receivable-net="49" exchange="1.00000" reference-amount="100"
reference-price-inc-salestax="100" reference-price-ex-salestax="100"
reference-receivable-gross="54" reference-receivable-net="49" number-
billed-messages="1" status="1"/>
<pricing country="GB" amount="75" currency="GBP" currency-symbol="£"
currency-symbol-orientation="l" currency-decimal-places="2" price-
inc-salestax="75" price-ex-salestax="64" receivable-gross="36"
receivable-net="32" exchange="0.64918" reference-amount="115"
reference-price-inc-salestax="116" reference-price-ex-salestax="99"
reference-receivable-gross="55" reference-receivable-net="49" number-
billed-messages="2" status="1"/>
</key-value>
<key-value row-ref="1" key="500">
<pricing country="US" amount="500" currency="USD" currency-symbol="$"
currency-symbol-orientation="l" currency-decimal-places="2" price-
inc-salestax="500" price-ex-salestax="500" receivable-gross="288"
receivable-net="259" exchange="1.00000" reference-amount="500"
reference-price-inc-salestax="500" reference-price-ex-salestax="500"
reference-receivable-gross="288" reference-receivable-net="259"
number-billed-messages="1" status="1"/>
<pricing country="GB" amount="350" currency="GBP" currency-symbol="£"
currency-symbol-orientation="l" currency-decimal-places="2" price-
inc-salestax="350" price-ex-salestax="298" receivable-gross="228"
receivable-net="205" exchange="0.64918" reference-amount="539"
reference-price-inc-salestax="539" reference-price-ex-salestax="459"
reference-receivable-gross="351" reference-receivable-net="316"
number-billed-messages="2" status="1"/>
</key-value>
</service>
</service-prices>
The following elements are returned once with each ‘service-prices’ API call response:
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 18 of 64
Price Information API Calls
The following attributes are returned for each price in the ‘service-prices’ API call response:
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 19 of 64
Price Information API Calls
* These values are returned in fractional currency units, e.g. $1.50 is returned as “150” to denote
150 cents. Please see the Currency Values in API Calls and Callbacks section in this
document.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 20 of 64
Price Information API Calls
result-code result-message
0 Operation Successful
20 Missing or Invalid 'cmd=' value
28 Invalid signature
32 Bad Bind Credentials
35 Internal Error
60 Invalid row-ref value
The ’price’ API call can be used to retrieve the price point(s) closest to a targeted value in each
of one or more markets by specifying “dynamic parameters”. These dynamic parameters are
detailed in the ‘Price’ API Call - Dynamic Parameters table on the following pages. If the
specified dynamic parameters are too restrictive then no price point solutions may be found for
some countries and users in those countries will be unable to use the Boku mobile payments
service.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 21 of 64
Price Information API Calls
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 22 of 64
Price Information API Calls
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 23 of 64
Price Information API Calls
reference-price-inc-salestax="100" reference-price-ex-salestax="100"
reference-receivable-gross="54" reference-receivable-net="49" number-
billed-messages="1" status="1"/>
</pricing>
The following elements are returned once with each ‘price’ API call response:
The following attributes are returned for each price-point in the ‘price’ API call response:
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 24 of 64
Price Information API Calls
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 25 of 64
Price Information API Calls
* These values are returned in fractional currency units, e.g. $1.50 is returned as “150” to denote 150
cents. Please see the Currency Values in API Calls and Callbacks section in this document.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 26 of 64
Transactional API Calls
1) Exact-match ‘prepare’ calls allow you to specify the exact price that you want the consumer to
pay.
2) Row-reference ‘prepare’ calls specify a row in a Boku Service Price Matrix (configured in your
Boku Merchant Portal account). The transaction will use the price point that has been selected for
that row, for the specified country. Dynamic-match ‘prepare’ calls find the best-matching price
point given the dynamic parameters passed in as part of the ‘prepare’ call. Some conditions may
cause no match to be found.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 27 of 64
Transactional API Calls
Certain ‘prepare’ call parameters can be used to override values statically configured during the
product/service configuration. These parameters are listed in the table and shown in the image
below.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 28 of 64
Transactional API Calls
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 30 of 64
Transactional API Calls
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 31 of 64
Transactional API Calls
Two critical pieces of information are returned in the 'prepare' API XML response:
1. trx-id: the unique Boku transaction ID. Use this ID to match the initiated purchase with
the ‘event,’ ‘billingresult,’ and ‘chargeback’ callback notifications.
2. buy-url: the URL of the payment panel for the transaction. We recommend that you
load this payment panel URL into an embedded or overlay iFrame for the best user
experience. The Boku Merchant Technical Solutions team
(merchantsupport@boku.com) can provide an overlay iFrame sample code pack on
request.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 32 of 64
Transactional API Calls
IMPORTANT! The ‘verify-trx-id’ API call will return an error if the transaction (a) was
initiated more than 72 hours before the ‘verify-trx-id’ call is made, or (b) failed as expired.
2 merchant-id string Your Merchant Portal primary Yes Your Merchant Portal account ID was
account ID. selected during initial account setup.
3 password string Your API password. Conditional Do not confuse this with the password
used to login to the Merchant Portal. Do
not include this parameter when using
MD5 hashing authentication.
4 sig string MD5 hash computation Conditional Required when using MD5 hashing
signature generated by the authentication.
merchant.
5 timestamp string Network Time Protocol (NTP) Conditional Required when using MD5 hashing
Unix epoch timestamp. authentication. The API call must be made
within 300 seconds of this time.
6 trx-id string Unique ID for each transaction Yes
generated by Boku.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 34 of 64
Transactional API Calls
* These values are returned in fractional currency units, e.g. $1.50 is returned as “150” to denote 150
cents. Please see the Currency Values in API Calls and Callbacks section in this document.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 36 of 64
Forward-to URLs
5 Forward-to URLs
When a transaction is finished the payment panel will display a message to the user indicating either
success or failure and a “continue” button. When the user clicks “continue,” he or she will be
redirected to a URL specified by the merchant (a “forward-to URL”).
In the Boku Merchant Portal service configuration, there is the ability to statically configure two
possible forward-to URLs on a per-product/service basis.
• Failure forward-to URL: a user is redirected to this page when the transaction fails (the
result-code is not zero)
• Default forward-to URL: a user is redirected to this page after a transaction closes if there is
no "failed forward-to URL" configured. If there is a "failure forward-to URL" value configured,
then a closed transaction will only redirect to this page when the transaction is successful
(result-code is zero).
A general forward-to URL can be optionally reported via the ‘fwdurl’ parameter of a ‘prepare’ call and
will be used for both successful and failed transactions, overriding both of the forward-to URLs
configured within the Boku service settings. If a general forward-to URL value is not passed in via the
‘prepare’ call parameter, the user will be redirected to the appropriate forward-to URL configured
within the Boku service configuration based on the aforementioned rules.
IMPORTANT!
1 - Because users can repeatedly refresh their browser, do not use forward-to URLs to
fulfill purchases. Instead, please use callback notifications to award (or retract) items
purchased.
2 - If a user is redirected to the forward-to URL, but no Boku parameters are appended,
the page should by default redirect the user to a message indicating that their
purchase could not be completed and request for the user to try again.
If the payment panel is being displayed within an iFrame, be sure not to set the forward-to URL page
as your main webpage as that will cause a "replication effect" where the user will see the main web
page within an iFrame rather than only on the main browser page.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 37 of 64
Forward-to URLs
The table below lists the parameters which are appended to the forward-to URLs:
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 38 of 64
Callback Notifications
6 Callback Notifications
The Boku system sends HTTP GET requests to designated merchant URLs (“callback URLs”) to
communicate transaction status information. Callback notifications are asynchronous with user
redirection to a forward-to URL. Each product/service has one callback URL, configured in the
Merchant Portal.
• Final result (‘billingresult’) callback notifications communicate the final status of each
transaction, either successful or failed. (A transaction can, however, later be refunded).
• Intermediate status (‘event’) callback notifications provide transaction status updates; use
them to award partial credit to users who have made a partial payment.
• Refund (‘chargeback’) callback notifications alert the merchant to consumer refunds. Use
these callbacks to retract credit for the refunded purchases.
IMPORTANT! Callback notifications are disabled by default for new accounts and must
be enabled on the Merchant Portal 'Settings > Callback Notifications' page.
Every callback notification will include the unique transaction ID (‘trx-id’); use this value to match the
incoming callbacks with transaction records in your system.
Use ‘billingresult’ callback notifications to fulfill purchases. Be sure to check that a given transaction,
identified by the unique ‘trx-id’ field value, is only fulfilled once (you may receive a ‘billingresult’
callback for the same transaction more than once if there are communication issues between the
Boku system and your servers; this can be caused by improper ACKing, among other reasons).
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 39 of 64
Callback Notifications
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 40 of 64
Callback Notifications
Max
# Parameter Type Description Returned
Lengt Comments
h
10 operator- string Specifies the operator tax treatment Conditional 20 • ‘VAT_OPTION_1’
tax- on this transaction. Indicates tax has not
treatment been paid by the
operator.
• ‘VAT_OPTION_2’
Indicates tax has been
paid by the operator.
• ‘VAT_OPTION_3’
Indication from MNO
or Aggregator that
VAT has been
collected and paid.
However, we are still
awaiting written
confirmation of this.
Please ask for further
information if
necessary.
• ‘VAT_OPTION_4’
There is no VAT type
tax system in this
country. VAT
treatment is not
applicable.
11 paid* number The value the consumer has paid for Conditional int32
the specified transaction.
12 paid-ex- number The value the consumer has paid for Conditional int32
salestax* the specified transaction, excluding
any sales tax.
13 paid-inc- number The value the consumer has paid for Conditional int32
salestax* the specified transaction, including
any sales tax.
14 param string Pass-through parameter for Conditional 100 Returned if the
merchant’s use. parameter was included
in the ‘prepare’ API call.
Values longer than 100
characters will be
truncated.
15 receivable number Indicative payout before the Boku Conditional int32 Actual payouts may vary
-gross* fee. due to exchange-rate
movements,
discrepancies,
chargebacks, and
withholding taxes.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 41 of 64
Callback Notifications
Max
# Parameter Type Description Returned
Lengt Comments
h
16 receivable number Indicative payout after the Boku fee. Conditional int32 Actual payouts may vary
-net* due to exchange-rate
movements,
discrepancies,
chargebacks, and
withholding taxes.
17 reference- number The ‘amount’ value in the reference Conditional int32
amount* currency.
18 reference- string Currency in ISO 4217 standard Conditional 3 If this parameter was not
currency (www.xe.com/iso4217.php). included, “USD” will be
Specifies the currency unit of the used.
‘reference-’ attributes.
19 reference- number The ‘paid’ value in the reference Conditional int32
paid* currency.
20 reference- number The ‘paid-ex-salestax’ value in the Conditional int32
paid-ex- reference currency.
salestax*
21 reference- number The ‘paid-inc-salestax’ value in the Conditional int32
paid-inc- reference currency.
salestax*
22 reference- number Conditional int32 Deprecated; do not use.
receivable
-fixed
23 reference- number The ‘receivable-gross’ value in the Conditional int32
receivable reference currency.
-gross*
24 reference- number The ‘receivable-net’ value in the Conditional int32
receivable reference currency.
-net*
25 result- number Numeric response code to indicate Yes
int32 Non-zero results are
code the result of the API call. errors. See the following
table for details.
26 result-msg string Human-readable response message Conditional 255 See the following table
corresponding to the ‘result-code.’ for details.
27 service-id string The unique alphanumeric ID of a Conditional 50
configured product/service.
28 sig string MD5 hash computation signature Yes 255 Validate using process
generated by Boku. detailed in the Boku
Security Implementation
Guide.
29 test Boolean Included with a value of "1" if the Conditional int32 Only included for test
transaction is a test transaction. transactions.
30 time- string Time of transaction completion in Conditional UTC
completed UTC format: YYYY-MM-DD date
HH:MM:SS.
31 time- string Time of transaction request in UTC Conditional UTC
requested format: YYYY-MM-DD HH:MM:SS. date
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 42 of 64
Callback Notifications
Max
# Parameter Type Description Returned Lengt Comments
h
32 timestamp string Network Time Protocol (NTP) Unix Yes int64
epoch timestamp.
33 trx-id string Unique ID for each Boku Yes 50
transaction.
* These values are returned in fractional currency units, e.g. $1.50 is returned as “150” to denote 150
cents. Please see the Currency Values in API Calls and Callbacks section in this document.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 43 of 64
Callback Notifications
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 44 of 64
Callback Notifications
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 45 of 64
Callback Notifications
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 46 of 64
Callback Notifications
Because the user did pay £20 (and due to current mobile network operator limitations Boku is unable
to automatically refund the charge), we ask that merchants partially fulfill the purchase. If the user
was purchasing 300 Poker Chips for £30, and only successfully paid £20, the merchant should credit
the user with 200 Poker Chips.
The ‘billingresult’ callback notification will include details of how much the user successfully paid once
the transaction is complete (this can take up to 24 hours). However, customers will not be happy to
have made a payment (albeit partial) without receiving any credit until 24 hours later. We therefore
recommend that merchants enable ‘event’ callback notifications and use them to award incremental
credit as soon as the user has completed an incremental payment.
To do so, compare the value of the ‘paid’ parameter to any previously received 'event' callback
notification ‘paid’ value. If the value has increased, award the appropriate amount of incremental
credit.
In some cases a successful ‘billingresult’ callback notification will be received before all of the ‘event’
callback notifications are received for that transaction. If this happens, award all remaining credit for
that transaction when the successful ‘billingresult’ callback notification is received, and take no
additional action when the remaining ‘event’ callback notifications are received.
More details about the specific messaging events are detailed in the ‘Event’ Callback Notification -
Valid ‘Event-Code’ Values table below. You may configure the parameters included in ‘event’
callback notifications on the ‘Settings > Callback Notifications’ page in the Merchant Portal.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 47 of 64
Callback Notifications
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 48 of 64
Callback Notifications
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 49 of 64
Callback Notifications
* These values are returned in fractional currency units, e.g. $1.50 is returned as “150” to denote 150
cents. Please see the Currency Values in API Calls and Callbacks section in this document.
There are four types of ‘event’ callback notifications. You may select which types are sent to the
callback URL on the ‘Settings > Callback Notifications’ page. To track billed events, activate event-
codes 2 and 3 (“PSMS MT Confirmed” and “PSMS MO Received”). Event-codes 1 and 4 can be left
deactivated, as they do not indicate billing events.
Below are some properties of 'event' callback notifications for which you should be aware:
• 'Event' callback notifications are sent from several different servers so it is possible that they
will arrive out of order. You should therefore only process the billed 'event' callback
notification with the highest 'paid' amount for a specific trx-id and disregard those for the same
transaction which have a lower 'paid' amount.
• For some markets and carriers, event code 2 may not be sent, but in those cases, a final
'billingresult' callback will be sent to confirm that the transaction has completed.
• Once a merchant receives a 'billingresult' callback for a transaction, they should stop
processing any 'event' callbacks for that specific transaction.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 50 of 64
Callback Notifications
We strongly recommend that you retract the purchased items from a user when he or she has
refunded a transaction. You may also wish to flag the user account for additional monitoring or take
further action. Only one 'chargeback' callback notification should be processed per Boku trx-id.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 51 of 64
Callback Notifications
* These values are returned in fractional currency units, e.g. $1.50 is returned as “150” to denote 150
cents. Please see the Currency Values in API Calls and Callbacks section in this document.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 52 of 64
Callback Notifications
reason-id reason
5 Customer did not get the message
6 Customer did not like the content or service
7 Customer did not read the terms and conditions
8 Customer did not receive the content or service
9 Customer did not request the content or service
10 Customer did not understand there was a charge
11 Customer did not understand there were recurring charges
12 Customer received invalid message
13 Language barrier
14 Opt-out error
15 Other
16 Purchase did not match description
17 Received a recycled MSISDN
18 Someone else used or registered for service
19 Spouse/partner used or registered for service
20 Suspected refund abuse
21 Unable to opt-out of subscription
22 Unauthorized charges
23 Unknown
24 Customer did not use the content or service
25 Duplicate purchase or subscription
26 Too expensive
27 Partial payments not accepted
28 Expired transaction but customer still billed
29 Data is not usable
30 Data Usage Dispute
31 Chargeback Tool Refund
32 Refund from Google Developer
To validate the callback notification, (a) verify that the callback has been properly signed by Boku (see
the Boku Security Implementation Guide), (b) verify that the timestamp is within 300 seconds of the
time you received the callback, (c) verify that you have record of the ‘trx-id’ in your system as an
initiated transaction, and (d) award or retract the purchased content as appropriate.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 53 of 64
Callback Notifications
Once you have successfully validated the callback notification, send a properly formatted ACK to
Boku. The ACK is in XML format. Please note that valid XML should not contain any extra
whitespaces, but the examples shown below contain line feeds for display purposes.
Unless Boku receives a properly formatted ACK, the Boku system will assume that the callback
notification has not been successfully received, and will retry the callback notification on a staggered
basis of 1 minute, 5 minutes, 5 minutes, 15 minutes, and then every hour up to 24 hours after the
initial callback was sent. After this time, the callback notification will not be retried again.
IMPORTANT! You must ACK all Boku callback notifications if you do not want the
callback to be re-sent to your callback URL. Note that ACKing a callback does not affect the
underlying transaction. It is simply an indication that you have received the message
correctly.
Sending an “OK” status in the ACK response indicates acceptance of the validity of the callback
notification: “OK” should be sent for all callback notifications, both successful and failed transactions.
The “event-code” element is required only when ACKing ‘event’ callback notifications.
Sending a rejection ACK response or no ACK response indicates rejection of the callback notification.
Again, the “event-code” element is required only when ACKing ‘event’ callback notifications.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 54 of 64
Callback Notifications
If you want to send back differentiated callback ACKs which help you easily distinguish between the
ACK response for a successful versus a failed transaction, then you can send back additional detail in
the 'status' element string, but please note that if you have successfully validated the format and
authenticity of the Boku callback notification, then you must send back a status code value of "0" to
acknowledge that you have successful received the Boku callback notification.
Below are two generic examples showing you the proper ACK responses which should be sent back
to Boku in successful transaction and failed transaction scenarios:
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 55 of 64
Test Number Usage
The first step in using the test numbers is to activate the feature in the Merchant Portal. Use the
‘Enable Test Numbers’ checkbox found at the top of the service configuration page for each
product/service to be used for testing. The product/service status will show “TEST” in addition to
“PENDING (TEST)” or “LIVE (TEST)” status when test numbers are enabled. Note that before test
numbers can be used a given market (country), the product/service must be approved (“LIVE TEST”
status) and the market must be approved (“Approved and Live” status).
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 56 of 64
Test Number Usage
Once the test numbers feature is activated, you can enter a test number into the Boku Payment Panel
to simulate a payment event. A test number has two parts: a country code and a result-code. The
two-letter country code is specified by ISO 3166-1-alpha-2: For example, use “CA” to simulate testing
from Canada and “DE” to simulate testing from Germany. The result-code is used to control the
outcome of the simulated transaction. For example result-code “00” simulates a successful
transaction, and the result-code “11” simulates a transaction that failed because the consumer’s
spend limit was reached. Therefore to test a successful transaction in Canada, use the test number
“CA00.” To test a spend-limit-reached failure in Germany, use “DE11.”
These test steps are written for testing from Canada, but can be used for any country by selecting the
desired country in step 2 and replacing “CA” with the appropriate country code in step 3.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 57 of 64
Test Number Usage
5. Verify that the Payment Panel displays “Success! Your payment is complete. Please click
continue to retrieve your goods. Thank you for using BOKU.”
6. Verify that the Payment Panel closes when the Continue button is pressed.
7. Verify that the browser loads the appropriate forward-to URL.
8. Verify that the appropriate amount of credit has been awarded to the user account.
Below are some useful notes to keep in mind when using test numbers:
• Because test numbers (e.g. “US00”) are not real phone numbers, the mobile network operator
lookup will fail and you'll see a message asking you to select a mobile network from a
dropdown list. When this occurs, just select any available network and continue your
transaction.
• Please note that the country base (”US,” “CA,” and so on) must be entered in upper case.
• When a test number is used the ‘test’ parameter with a value of “1” will be appended to all
Boku callback notifications and to the forward-to URL. This will enable the merchant to
distinguish between test and live transactions.
• When test numbers are enabled, non-test (real) MSISDNs will still initiate actual billing events:
if you use a real mobile handset for a transaction, that handset will be charged.
• Test numbers will not work on a product/service when the ‘Enable Test Numbers’ option is
disabled for that service.
• Test number transactions are shown in a separate report in the Boku Merchant Portal and will
only be returned for up to three days from the time that the test transaction was initiated.
• Transactions using test numbers do not appear in the XML response results returned from the
'reporting' API call.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 58 of 64
Partial Fulfillment
As implied in the prior paragraph, only certain price points could possibly result in a partial payment.
This is because most price points consist of only one billed message. To determine which price
points could result in a partial payment, you would reference the ‘number-billed-messages’ attribute
which is returned in the XML response from the Boku pricing (‘price-info’, ‘price’, or ‘service-prices’)
API calls. Any price points with 'number-billed-messages' > 1 could possibly incur a partial payment.
Partial transactions are very infrequent, but you can leverage your Boku integration code to perform
automatic incremental fulfillment either on a real-time or delayed basis.
This fulfillment method would require you to process Boku 'event' callback notifications. Details about
the 'event' callback notification type can be found in the "Intermediate Status (event) Callback
Notifications" subchapter of this document. Of the provided event codes, your code would fulfill upon
receiving event codes "2" and "3" as those are the only codes which confirm that a consumer has
been billed.
It is also explained that you will have to enable the specific 'event' callbacks you wish to receive by
adjusting some settings within your Boku Merchant Portal account. These options are found in the
'Settings > Callback Notifications' (https://merchants.boku.com/portal/merchant_manage_events.jsp)
settings in your PP account.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 59 of 64
Partial Fulfillment
Alternatively, you can partially fulfill when you receive the Boku 'billingresult' callback notification since
it provides final result of the transaction. To do this, you would add logic to your fulfillment code which
would determine whether the "paid" value is greater than zero when you receive a 'billingresult' for a
failed transaction. A failed transaction only indicates that a transaction was not FULLY paid, therefore
partially paid transactions fall into the failed transaction category. If you receive a ‘billingresult’
callback notification where 0 < paid < amount, that transaction was “partially paid” and should fulfill
the portion of the transaction based on the faction of amount that was paid (i.e. divide paid/amount
and fulfill that percentage of the purchase).
However, it should be noted that using this notification type may delay the fulfillment of the transaction
since a transaction could take up to 24 hours to expire. Regardless, the 'billingresult' callback
notification does allow you to at least provide the user with the portion of the content for which they
have paid.
Please note that if your callback server receives a 'billingresult' callback notification for a transaction,
then your server should note be processing any subsequent 'event' callback notifications for that
same transaction since the 'billingresult' indicates the final status and therefore overrides any 'event'
callback notifications.
Merchants who are not able to automatically perform partial fulfillment using the Boku callback details
will need ensure that their Customer Support teams are equipped to handle partial fulfillment
scenarios. If Boku receives is notified of a partial payment situation where partial fulfillment did not
occur, your customer support team will be notified to provide compensation to the user which could be
by awarding the partial virtual credit amount, providing a product of equivalent value such as game
credits which may be exchanged for virtual item(s), or any other fair method of compensation to
accommodate the user for their partial payment.
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 60 of 64
Network Codes and Names
Country Code Network Code Network Name Country Code Network Code Network Name
AE 24F410 Etisalat CH 22F820 Sunrise
AE 24F430 DU CH 22F830 Orange
AR 27F201 Movistar CL 37F001 Entel
AR 27F202 Nextel CL 37F002 Movistar
AR 27F213F0 Claro CL 37F003 Claro
AR 27F243F0 Personal CN 64F000 China Mobile
AT 32F210 Mobilkom CN 64F010 China Unicom
AT 32F230 T-Mobile CN 64F020 China Telecom
AT 32F270 tele.ring CO 37F203 Tigo
AT 32F250 One CO 37F223 Movistar
AT 32F201 H3G CO 37F201 Comcel
AT 32F221 YESSS CY 82F010 Cytamobile-Vodafone
AU 50506 3 CY 82F001 Areeba
AU 5050299 Virgin CZ 32F020 O2 (Eurotel)
AU 05F510 Telstra CZ 32F010 T-Mobile
AU 05F520 Optus CZ 32F030 Vodafone (Oskar)
AU 05F530 Vodafone DE 62F210 T-Mobile
BE 02F610 Proximus DE 62F220 Vodafone
BE 02F601 Mobistar DE 62F230 e-plus
BE 02F602 BASE DE 62F270 O2
BE 02F650 Telenet DE 62F90F1 Debitel
BG 82F410 Mobiltel DE 62F231 Mobilcom
BG 82F450 Globul DE 62F241 Talkline
BG 82F430 Vivatel DK 32F810 TDC
BH 24F610 Batelco DK 32F820 Telenor
BH 24F620 Zain DK 32F802 Telia DK
BR 27F420 TIM DK 32F830 Orange
BR 27F450 Claro DK 32F877 Tele2 DK
BR 27F460 Vivo DK 32F860 3
BR 27F461 Oi DO 73F010 Orange
CA 03F256F1 Bell DO 73F020 Claro
CA 03F221F0 Virgin Mobile DO 73F030 Tricom
CA 03F256F5 MTS DO 73F040 Viva
CA 03F227F0 Rogers EC 47F001 Claro
CA 03F273F0 Fido EC 47F000 Movistar
CA 03F256F4 SaskTel EC 47F002 Alegro
CA 03F256F3 Telus EE 42F810 EMT
CA 03F205F0 Videotron Wireless EE 42F820 Elisa
CH 22F810 Swisscom EE 42F830 Tele2
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 61 of 64
Network Codes and Names
Country Code Network Code Network Name Country Code Network Code Network Name
EG 06F210 Mobinil ID 15F010 Indosat
EG 06F220 Vodafone ID 15F011 XL Axiata
EG 06F230 Etisalat ID 15F012 IM3
ES 12F470 Movistar ID 15F013 TelkomFlexi
ES 12F430 Orange ID 15F014 Mobile8
ES 12F440 Yoigo ID 15F015 3
ES 12F480 Euskaltel [VOD] IE 72F220 O2
ES 12F410 Vodafone IE 72F210 Vodafone
FI 42F419 Sonera IE 72F230 Meteor
FI 42F450 Elisa IE 72F250 3
FI 42F412 Saunalahti IL 24F510 Orange
FI 42F490 DNA IL 24F520 Cellcom
FR 02F802 Bouygues IL 24F530 Pelephone
FR 02F810 Orange IL 24F577 Mirs / Amigo
FR 02F801 SFR IN 04F420 Airtel
FR 02F899 Alice IN 04F490 Reliance
FR 02F898 Free IN 04F450 Vodafone
GB 32F451 Vodafone IN 04F408 BSNL
GB 32F433 Orange IN 04F552 Tata/Virgin
GB 32F403 T-Mobile IN 04F412 Loop Mobile
GB 32F413 Virgin (T-Mobile IN 04F486 MTNL - Delhi
MVNO) IN 04F496 MTNL - Mumbai
GB 32F401 O2 IN 04F440 Idea
GB 32F402 Three IN 04F518F3 Uninor
GR 02F250 Vodafone IT 22F210 TIM
GR 02F210 Cosmote IT 22F201 Vodafone
GR 02F201 WIND IT 22F288 WIND
GR 02F290 Qtel [WIND] IT 22F299 3
GT 07F410 Claro JO 14F687 Umniah
GT 07F320 Comcel / Tigo JO 14F677 Orange (Mobilcom)
GT 07F430 Movistar JO 14F610 Zain
HK 54F400 1O1O, one2free (CSL) JP 44F002 SoftBank Mobile
HK 54F440 Hutch JP 44F003 NTT docomo
HK 54F401 NWM JP 44F005 KDDI
HK 54F461 PCCW KR 54F020 KT
HK 54F421 Peoples KR 54F050 SKT
HK 54F460 Smartone (Vod) KR 54F060 LG U+
HN 07F820 Celltel / Tigo LB 14F510 Alfa
HN 07F810 Claro LB 14F563 MTC
HR 12F910 T-Mobile LT 42F610 Omnitel
HR 12F920 Tele2 LT 42F620 Bite
HR 12F901 VIPnet LT 42F630 Tele2
HU 12F610 Telenor (Pannon) LV 42F710 LMT
HU 12F603 T-Mobile (Westel) LV 42F720 Tele2
HU 12F607 Vodafone LV 42F750 Bite
ID 15F001 Telkomsel MA 06F400 Meditel
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 62 of 64
Network Codes and Names
Country Code Network Code Network Name Country Code Network Code Network Name
MA 06F410 Macrotel RO 226001 Vodafone
MA 06F425 Wana RO 226003 Cosmote
MX 33F420 Telcel RO 226010 Orange
MX 33F430 Movistar RU 52F010 MTS
MX 33F440 Iusacell RU 52F099 Beeline
MX 33F410 Nextel RU 52F019 Megafon
MY 05F291 Celcom RU 52F020 Megafon
MY 05F261 DiGi RU 52F028 Megafon
Telecommunications RU 52F022 Megafon
MY 05F221 Maxis Mobile RU 52F023 Megafon
MY 05F231 Telekom Cellular RU 52F024 Megafon
NI 17F003 Movistar RU 52F025 Megafon
NI 17F012 Claro RU 52F026 Megafon
NL 02F480 KPN RU 52F027 Megafon
NL 02F421 Telfort RU 52F002 Tele2
NL 02F420 Tele2 RU 52F053 Motiv
NL 02F402 Orange (Dutchtone) RU 52F061 NTC
NL 02F416 T-Mobile (BEN) RU 52F070 Smarts
NL 02F440 Vodafone RU 52F072 Smarts
NO 42F220 Netcom RU 52F073 Astrakhan GSM
NO 42F240 Tele2 RU 52F074 Smarts
NO 42F250 Network Norway RU 52F075 Smarts
NO 42F210 Telenor RU 52F076 Smarts
NZ 35F010 Vodafone RU 52F077 Smarts
NZ 35F020 Telecom RU 52F030 Ulyanovsk GSM
NZ 35F042 2 Degrees RU 52F021 BaikalWestCom
OM 24F212 Nawras RU 52F100 Yaroslav GSM
OM 24F220 Oman Mobile SA 24F010 STC
PA 17F401 Movistar SA 24F030 Mobily
PA 17F402 Cable&Wireless SA 24F040 Zain
PE 17F610 Claro SE 42F010 Telia
PE 17F607 Movistar SE 42F070 Tele2
PH 15F501 Globe GCASH SE 42F080 Telenor
PH 15F520 Globe Telecom SE 42F090 Djuice
PH 15F503 Smart SE 42F020 3
Communications SG 25F530 M1
PH 15F505 Sun Cellular SG 25F510 SingTel
PL 62F020 T-Mobile SG 25F550 Starhub
PL 62F030 Orange SI 92F314 Mobitel
PL 62F060 Play SI 92F304 SiMobil
PL 62F010 Plus GSM SI 92F307 Tusmobil
PS 24F350 Jawwal SK 32F110 Orange
PT 62F860 TMN SK 32F120 T-Mobile
PT 62F830 Optimus SK 32F160 O2
PT 62F810 Vodafone SY 14F710 Syriatel
QA 24F710 Qtel SY 14F720 MTN
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 63 of 64
Network Codes and Names
Country Code Network Code Network Name Country Code Network Code Network Name
TH 25F010 AIS US 13F021 US Cellular
TH 25F081 Dtac US 13F050 Sprint
TH 25F099 TrueMove US 13F001 Virgin
TH 25F088 TrueMove H US 13F040 T-Mobile
TR 82F610 Turkcell US 13F090 Alltel
TR 82F620 Vodafone US 13F024F0 Cincinnati Bell
TR 82F630 Avea VE 37F420 Digitel
TW 64F660 FET VE 37F440 Movistar
TW 64F688 KGT VE 37F460 Movilnet
TW 64F699 TAT VN 54F200 MobiFone
TW 64F639 TCC VN 54F240 Viettel Mobile
TW 64F611 CHT VN 54F289 Vietnamobile
TW 64F629 APBW VN 54F299 EMobile
TW 64F698 Vibo VN 54F202 VinaPhone
UA 52F510 MTS VN 54F230 S-Fone
UA 52F530 Kyivstar VN 54F270 Beeline
UA 52F560 life :) ZA 56F570 Cell C (Pty)
US 13F020 AT&T ZA 56F501 MTN
US 13F030 Verizon Wireless ZA 56F510 Vodacom
US 13F070 Nextel
US 13F080 Boost (Prepay)
US 13F011 Boost Unlimited
©2014 Boku Inc. All rights reserved. • Boku Standard Technical Reference for Developers • 2014-07-02
Confidential information. Do not copy or distribute without prior permission.
Page 64 of 64