forked from paysafecard/api-documentation
-
Notifications
You must be signed in to change notification settings - Fork 59
/
Copy pathrcsapi-apiary.apib
450 lines (373 loc) · 24.1 KB
/
rcsapi-apiary.apib
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
FORMAT: 1A
HOST: https://api.st.paysafecard.com/v1/management/
# RC Request API
The RC Request API is a web service that allows paysafecard and Paysafecash business partners to request new RC (reporting criteria) automatically.
<br><br>
The API is a great choice when the business partner:
- Regularly needs to onboard more sub-merchants (simply said, frequently requests new RC)
- Wants to avoid the hassle of files sent by mail
- Wants to receive real time notifications about the status of your RC requests
- Wants to know in real time which RC requests need additional information
- Wants to know in real time when the RC requested are ready for processing
This document reviews the process of how to integrate RC Request functionality in the business partner application. It is intended for users who have experience with programming and web services.
<br><br>
The API follows <a href="http://en.wikipedia.org/wiki/Representational_state_transfer" target="_blank">*RESTful*</a> design principles making it easy to understand and integrate the API.
Representational State Transfer (REST) is a software architecture style, consisting of guidelines for creating scalable web services.
RESTful systems typically communicate over the Hypertext Transfer Protocol with the same HTTP verbs (GET, POST, PUT, DELETE, etc.) used by web browsers to retrieve web pages and send data to remote servers.
It also facilitates solid and universally accepted foundations like [*http basic authentication*](http://en.wikipedia.org/wiki/Basic_access_authentication), [*http verbs*](http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods), [*JSON*](http://en.wikipedia.org/wiki/JSON) and [*CORS*](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing).
The internet connection (e.g. through firewall) must allow secured HTTP connections (HTTPS).
The necessary API Key for authentication and the callback notification key will be provided by paysafecard.
## Versioning
Every time there is backwards-incompatible change to the API, a new major version will be released. This major version is part of the URL path.
The current major version is *v1*.
Unless informed by our technical support department that we are dropping support for a particular API version, the business partners do not need to switch API versions.
## Prerequisites
A connection to the RC Request API is successful if the following prerequisites are fulfilled:
- API key for request authentication provided by paysafecard
- Authorization of the server IP address performing the requests (if a 403 error is received when trying to access the service, it is likely that the IP address is not yet allowed to access)
- Content-type: Please make sure that the content type in the HTTP header, when submitting requests, is set to Content-Type: application/json
- Character encoding needs to be in UTF-8
## API key authentication
Every request to the API is authenticated using an API key.
- The value of the **API key needs to be base64 encoded** when transmitted in the HTTP header!
- Set the key as the username. [*HTTP basic authentication*](http://en.wikipedia.org/wiki/Basic_access_authentication)
- Your API key may only be used from your backend systems.
- *Please note: Your API key must be kept secured - never expose the API key to anybody!*
```
Authorization: Basic cHNjX2NSc09keTI2eDI1MGhPLWjfgi0VpeUt2YmhudWJsNHA=
Content-Type: application/json
```
## Endpoints
- Production environment: *https://api.paysafecard.com/v1/management/*
# Group RC Request API Process
This section describes in detail the technical process of an RC request.
1. The business partner initiates the RC request: POST call [*request rc*](#request_rc)
1.1. paysafecard validates the request and answers immediately with http 200 and status "received"
1. paysafecard initiates the internal process for a new RC request
1. Once the internal process is completed and the RC is ready to be used, paysafecard updates the business partner with the RC status "approved", using the `callback_url` url provided in the [*request rc*](#request_rc) call
3.1. If paysafecard needs more information before completing the request, paysafecard updates the business partner with the RC status "pending". In this case the business partner must contact [[email protected]]() with the RC name.
1. *(optional)* The business partner checks the status of the RC request with a GET request.
# Group RC Request API Information
The following section provides additional information about the API.
## API limits
- A maximum of 50 RC can be requested in a single call
- Max. 5 products per RC
- Max. 2 features per product
<a name="rc_status"></a>
## RC status
|Value |Description |
|--- |--- |
|`received` |paysafecard successfully received the RC request and will initiate the process for its creation. |
|`pending` |paysafecard needs more information before approving the RC. <br></br> Please contact [[email protected]]() with the RC name.|
|`declined` |The RC has been declined. <br></br> Please contact [[email protected]]() or the Key Account Manager with the RC name to clarify the decline reason. |
|`approved` |The RC has been approved and it is ready to be used.|
## HTTP status codes
| Code | Short Description | Description |
| --- | --- | --- |
| 200 | OK | Everything is OK.|
| 201 | Created | New object was successfully created.|
| 400 | Bad Request | Missing parameter.|
| 401 | Unauthorized | Invalid or expired API key.|
| 404 | Not Found | Not found. This is also returned when you try to retrieve a payment that does not exist.|
| 500 | Internal Server Error | This indicates a general technical error on paysafecard's end.|
| 501 | Not Implemented | Version feature not implemented.|
| 502 | Bad Gateway | Invalid response from upstream system.|
| 503 | Service Unavailable | Server overloaded.|
| 504 | Gateway Timeout | Timeout from upstream system.|
# Group RC Request API Call
<a name="request_rc"></a>
## Requesting RC [/submerchants]
The *request rc* call is used to request new RC.
The headers and payload can be seen in the mock server by clicking in the call name below:
### request rc [POST]
```
POST /submerchants/
```
+ Request
+ Headers
Authorization: Basic cHNjX3BrMGpSdTlndmJ0YXhMVU52R0Q3U0dncUdndGtpYnE=
Content-Type: application/json
+ Body
{
"submerchants": [{
"id": "rc01",
"company_name": "My Company",
"country_of_incorporation": "AT",
"licenses": [{
"country": "AT"
},{
"country": "DE"
}],
"type_of_business": "SPORTSBOOK",
"mcc": "7995",
"webshops": [{
"url": "https://my.test.com"
},{
"url": "https://my.other-test.com"
}],
"products": [{
"name": "PAYSAFECARD",
"features": [
"payout",
"refund"
]
}]
}],
"callback_url": "https://my.test.com"
}
+ Response 200 (application/json)
{
"submerchants": [
{
"id": "rc01",
"status": "received"
}
],
"request_id": "psc_subid_IO7DMI148X183oCcHlS7"
}
## Checking requested RC status [/submerchants/]
The *get rc status* call is used to check the current status of a requested RC.
### get rc status [GET]
```
GET /submerchants/{submerchant_id}
```
+ Request
+ Headers
Authorization: Basic cHNjX3BrMGpSdTlndmJ0YXhMVU52R0Q3U0dncUdndGtpYnE=
Content-Type: application/json
+ Parameters
+ `submerchant_id` (`rc01`) - RC ID.
+ Response 200 (application/json)
{
"id": "rc01",
"status": "pending",
"mids": [
"4786119778"
],
"reason_text": "Item description insufficient"
}
# Group RC Request API Parameters
This section describes all parameters details of the [*request rc*](#request_rc) call and response.
## Call Parameters details
| Parameter | Type | Constraint | Example | Description |
| --- | --- | --- | --- | --- |
| `submerchants` | array | mandatory | - | The array containing all the RC details.
| `id` | string | mandatory | rc01 | The RC id being requested. <br></br> Only alphanumeric characteres allowed (0-9, A-Z and a-z). <br></br> Size between 1 and 8 characters.
| `company_name` | string | mandatory | My Company | The name of the company to wich the RC is being requested for. <br></br> Max. 70 characteres. <br></br> Unicode characters are accpected.
| `country_of_incorporation` | string | mandatory | AT | The RC country of incorporation. <br></br> ISO 3166-1 (2 letter country code).
| `licenses` | array | optional* | - | The licenses array containing all the RC licenses per country. <br></br> *Mandatory, when the type of business is "BINARY_OPTIONS_SPREAD_BETTING", "FOREX", "PREPAID_CARDS_TOPUPS", "WALLETS", "POKER" or "SPORTSBOOK".
| `country` | string | mandatory | AT | The license country. <br></br> ISO 3166-1 (2 letter country code). <br></br> Mandatory as soon as a license object is given.
| `type_of_business` | string | mandatory | SPORTSBOOK | The RC type of business (sub channel). <br></br> Max. 60 characters. <br></br> List of all possible values [here](#type_of_business).
| `mcc` | string | optional | 7995 | The RC MCC (merchant category code) (sub channel). <br></br> Either `type_of_business` OR `mcc` need to be supplied. <br></br> List of all possible values [here](#type_of_business).
| `webshops` | array | mandatory | - | The webshop array contaning all the RC urls. <br></br> Max. 5 urls per RC.
| `url` | string | mandatory | https://my.test.com | The webshop url. <br></br> Max. 80 characters. <br></br> Must be a valid url including protocol (see example).
| `products` | array | mandatory | - | The RC products and features array. <br></br> Max. 5 products per RC.
| `name` | string | mandatory | PAYSAFECARD | The RC product. <br></br> Max. 5 products per RC. <br></br> The possible values are: "PAYSAFECARD", "PAYSAFECASH", "PAGOEFECTIVO", "SAFETYPAY" and "GIFTCARD".
| `features` | string | optional | PAYOUT | The RC feature. <br></br> Max. 2 features per product. <br></br> The possible values are: "PAYOUT" (only if the product is "PAYSAFECARD) and "REFUND" (only if the product is "PAYSAFECARD" or "PAYSAFECASH").
| `callback_url` | string | mandatory | https://notification.com | The callback url to be used by paysafecard to inform about the RC status. <br></br> Max. 1000 characters. <br></br> Must be a valid url including protocol (see example).
## POST Response Parameters details
| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `submerchants` | array | - | The RC array containing all the RC response details.
| `id` | string | rc01 | The id of the RC requested.
| `status` | string | received | The status of the RC requested. <br></br> List of all possible values and description [here](#rc_status).
| `mids` | string | "1000000007", "1000000008" | The mids (merchant ids) to which an RC was activated for.
| `request_id` | string | psc_subid_IO7DMI148X183oCcHlS7 | Request reference.
| `reason_text` | string | "Missing information on domain." | Reason for a pending/declined RC. In case of "pending", please [contact us](#rc_status) with the necessary information to proceed with the onboarding.
## GET Response Parameters details
| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `id` | string | rc01 | The id of the RC requested.
| `status` | string | received | The status of the RC requested. <br></br> List of all possible values and description [here](#rc_status).
# Group RC Request API Error Codes
This section describes all the relevant API error codes.
|Code |Number (optional) |HTTP Status |Description |
|--- |--- |--- |--- |
|`general_technical_error` |10007 |500 |General technical error.|
|`invalid_api_key` |10008 |401 |Authentication failed due to missing or invalid API key. Your key needs to be set to the HTTP auth header.|
|`invalid_request_parameter` |10028 |400 |One of the request parameters failed validation. The `message` and `param` fields contain more detailed information.|
|`duplicate_request` |4001 |400 |Submerchant has already been requested.|
*Below is an example of an error response:*
```
400 Bad Request
{
"code": "invalid_request_parameter",
"message": "size must be between 1 and 8",
"number": 10028,
"param": "submerchants[0].id"
}
```
In case of any technical issues or questions regarding API, [[email protected]]() should be contacted.
# Group Callback notification
<a name="callback_notification"></a> The *callback notification* is an HTTP `POST` request sent to the business partner `callback_url` provided in the [*request rc*](#request_rc) call, immediately and everytime the status of an RC is updated by paysafecard.
The business partner server must respond with *HTTP 200* and the authenticity of the callback notification should be verified.
<br><br>
During the RC Request API integration, the paysafecard team will provide a public key to the business partner which can be used to verifiy the authenticity of the callback notification.
<br><br>
In case of technical errors (e.g. socket timeout) or application errors, the callback notification is resubmitted at a regular interval of 1 minute until one of the following criteria is fulfilled:
- The notification is successfully delivered (i.e. HTTP 200 response from payment server).
- The maximum number of retry attempts has been reached (currently configured to 5 retries).
# Group How to verifiy the Callback notification
The callback notification is signed with "rsa-sha256" and the signature can be found in the HTTP "Authorization" header.
<br><br>
### HTTP headers
```http
Content-Type: application/json
Authorization: keyId="1",algorithm="rsa-sha256",signature="OFPVO1uqac0U18LlEedwfdYaIPuuCIsvSxuDRV+nsU33F2TVYapR/JHR0mvJSAZUJWUTJk60PZXPhGF9eQLeIidxX1yJg8JA0pC0/CAt7JbiF39KsjMYMkCPp51q84s1RqAa23D2sljJuvPQYiDJLPlZ7PRSxYaIfmJ6MWzRq4Ku4XVi6OpqgAkO5V205UsDBmp8mxc00w1Eu5yAPoUjelZfxqHl/G2D0e5hWPuggtx/3hx2szFQDJzfHdRBhrlSqcU2WGzByXhy6A6FzeOQVysQNAR1/i+ztlhfCotY11Usb+Uh4yUVwi/I0pbKL+UJZ2VZlI6++SAO7CoQVkBAiw=="
```
|Parameter |Description |
|--- |--- |
|`keyId` |The signature key version id. It has always the value "1" except if communicated otherwise by the paysafecard integration team. |
|`algorithm` |The algorithm used for the signature. A callback notification from paysafecard will always be signed with "rsa-sha256".|
|`signature` |The signature of the callback notification.|
<br><br>
### payload
```http
{
"submerchants": [
{
"id": "rc01",
"status": "approved",
"mids": [
"1000000007",
"1000000008",
"1000000009"
]
},
{
"id": "rc02",
"status": "pending",
"reason_text": "The merchant needs to add a product description."
},
{
"id": "rc03",
"status": "declined",
"reason_text":"Website is not fully operational."
}
],
"request_id": "psc_subid_e8P1asjSI8Gz4S60RwR6"
}
```
<br><br>
The signature is created as follows:
```
signature = base64encode(rsa_encrypt(sha256(payload), privateKey))
```
And it is verified as follows:
```
rsa_decrypt(base64decode(signature), publicKey) == sha256(payload)
```
<br><br>
### Using the *[openssl dgst](https://www.openssl.org/docs/man1.0.2/man1/dgst.html)* function to verify the signature
The digest functions can be used to verify digital signatures using message digests. The three steps below ilustrate how this can be done:
1. Extract the public key from the rsa key file sent with the data package
```
openssl rsa -RSAPublicKey_in -in webhook_signer_MANXXXXXXXXXX_1.rsa -out webhook_signer_MANXXXXXXXXXX_1_extracted.pem
```
2. Decode the signature of the webhook notification with base64
Linux: ```base64 --decode signature.txt > signature_debase64.txt```
Windows: ```certutil.exe -decode signature.txt signature_debase64.txt```
3. Verify the signature using the *[openssl dgst](https://www.openssl.org/docs/man1.0.2/man1/dgst.html)* function
The generic name, dgst, may be used with an option specifying the algorithm to be used. The default digest is sha256.
```
openssl dgst -sha256 -verify webhook_signer_MANXXXXXXXXXX_1_extracted.pem -signature signature_debase64.txt plaintext_payload.txt
```
|Parameter |Description |
|--- |--- |
|`-verify webhook_signer_MANXXXXXXXXXX_1_extracted.pem` |Verifies the signature using the public key extracted in step 1. The output is either `Verification OK` or `Verification Failure`. |
|`-signature signature_debase64.txt` |The actual signature to verify in plain text, obtained in step 2. |
|`plaintext_payload.txt` |The body of the payload in plain text. |
# Group Annex: Type of business
<a name="type_of_business"></a>
The values allowed for the `type_of_business` (sub channel) parameter are:
| Channel | Subchannel (`type_of_business`) | MCC code (`mcc`) | MCC description |
| --- | --- | --- | --- |
| ENTERTAINMENT | CLOUD_STORAGE_BACKUP_SERVICES | 7299 | FILEHOSTING |
| ENTERTAINMENT | ROYALTY_FREE_IMAGES | 7299 | FILEHOSTING |
| ENTERTAINMENT | SOFTWARE_DOWNLOAD | 5734 | SOFTWARE_DOWNLOAD |
| ENTERTAINMENT | MEDIA_AUDIO_VIDEO | 5815 | MEDIA_AUDIO_VIDEO |
| ENTERTAINMENT | TCOMMERCE | 7299 | FILEHOSTING |
| ENTERTAINMENT | WEBHOSTING | 4816 | WEBHOSTING |
| ENTERTAINMENT | DATING | 7311 | DATING |
| ENTERTAINMENT | FORTUNE_TELLING_CONSULTING | 7996 | FORTUNE_TELLING_CONSULTING |
| ENTERTAINMENT | SOCIAL_NETWORKS_PORTALS | 4816 | WEBHOSTING |
| ENTERTAINMENT | MESSAGING_TELEPHONY | 4814 | MESSAGING_TELEPHONY |
| ENTERTAINMENT | FILEHOSTING | 7299 | FILEHOSTING |
| ENTERTAINMENT | TIPSTER | 7299 | FILEHOSTING |
| ENTERTAINMENT | CLASSIFIEDS | 7311 | DATING |
| ENTERTAINMENT | CHARITY | 8398 | CHARITY |
| GAMES | ONLINE_GAMES | 5818 | ONLINE_GAMES |
| GAMES | SKILL_GAMES | 7994 | SKILL_GAMES |
| GAMES | FANTASY_SPORTS | 7994 | SKILL_GAMES |
| GAMES | VIRTUAL_ITEMS | 5818 | ONLINE_GAMES |
| GAMES | ESPORTS | 7995 | SPORTSBOOK |
| GAMES | GAME_SERVER | 4816 | WEBHOSTING |
| GAMES | GAMES_ERETAIL | 5818 | ONLINE_GAMES |
| GAMES | STREAMING_GAMES | 7299 | FILEHOSTING |
| GAMES | BOXED_VIDEO_GAMES_PHYS_COPIES | 5945 | BOARD_GAMES_TABLETOPS |
| GAMES | GAMES_MERCHANDISE | 5945 | BOARD_GAMES_TABLETOPS |
| GAMES | BOARD_GAMES_TABLETOPS | 5945 | BOARD_GAMES_TABLETOPS |
| GAMES | GAMES_TICKETS | 7922 | GAMES_TICKETS |
| GAMES | GAMES_HARDWARE | 5399 | CONSUMER_GOODS |
| GAMES | COMIC_BOOKS_GAMES_LITERATURE | 5945 | BOARD_GAMES_TABLETOPS |
| GAMES | TOYS | 5945 | BOARD_GAMES_TABLETOPS |
| GAMES | SOCIAL_GAMBLING | 7994 | SKILL_GAMES |
| ERETAIL | CONSUMER_GOODS | 5399 | CONSUMER_GOODS |
| ERETAIL | AUCTIONS | 8999 | AUCTIONS |
| ERETAIL | VOUCHERSHOP | 6012 | WALLETS |
| ERETAIL | FASHION | 5691 | FASHION |
| ERETAIL | ELECTRONICS | 5732 | ELECTRONICS |
| ERETAIL | SPORTS_FITNESS | 5941 | SPORTS_FITNESS |
| ERETAIL | HOME | 5712 | HOME |
| ERETAIL | DIY_HOBBY | 5945 | BOARD_GAMES_TABLETOPS |
| ERETAIL | PERSONAL_CARE | 5977 | PERSONAL_CARE |
| ERETAIL | DRUGS_MEDICATION | 5912 | DRUGS_MEDICATION |
| ERETAIL | LUXURY_GOODS | 5399 | CONSUMER_GOODS |
| ERETAIL | DELIVERY_SERVICE | 4214 | DELIVERY_SERVICE |
| ERETAIL | TICKETING_FOR_EVENTS | 7922 | GAMES_TICKETS |
| ERETAIL | OTHER_ERETAIL | 5999 | OTHER_INDUSTRIES |
| GIFTCARDS | GIFTCARDS | 6012 | WALLETS |
| VOUCHERS | VOUCHERS | 6012 | WALLETS |
| FINANCIAL_SERVICES | BINARY_OPTIONS_SPREAD_BETTING | 6211 | FOREX |
| FINANCIAL_SERVICES | WALLETS | 6012 | WALLETS |
| FINANCIAL_SERVICES | PREPAID_CARDS_TOPUPS | 6012 | WALLETS |
| FINANCIAL_SERVICES | FOREX | 6211 | FOREX |
| FINANCIAL_SERVICES | COLLECTION_SERVICE | 6012 | WALLETS |
| FINANCIAL_SERVICES | ALTERNATIVE_BANKING | 6012 | WALLETS |
| FINANCIAL_SERVICES | BANK_PAYSAFE_LICENSE | 6012 | WALLETS |
| FINANCIAL_SERVICES | BANK_BANK_LICENSE | 6012 | WALLETS |
| FINANCIAL_SERVICES | INSURANCE | 5960 | INSURANCE |
| FINANCIAL_SERVICES | LOAN_PROVIDER | 6012 | WALLETS |
| FINANCIAL_SERVICES | MONEY_REMITTANCE | 6012 | WALLETS |
| POKER | POKER | 7995 | SPORTSBOOK |
| POKER | LOTTERY | 7995 | SPORTSBOOK |
| POKER | CASINO | 7995 | SPORTSBOOK |
| POKER | BINGO | 7995 | SPORTSBOOK |
| SPORTSBOOK | SPORTSBOOK | 7995 | SPORTSBOOK |
| SPORTSBOOK | ESPORTS_BETTING | 7995 | SPORTSBOOK |
| PAYMENT_SERVICE_PROVIDER | MERCHANT_OF_RECORD | 6012 | WALLETS |
| PAYMENT_SERVICE_PROVIDER | PAYMENT_GATEWAY | 6012 | WALLETS |
| PAYMENT_SERVICE_PROVIDER | TECHNICAL_SERVICE_PROVIDER | 6012 | WALLETS |
| PAYMENT_SERVICE_PROVIDER | AGGREGATOR | 6012 | WALLETS |
| PAYMENT_SERVICE_PROVIDER | SHOP_MODULE_ECOMMERCE_PLATFORM | 6012 | WALLETS |
| PAYMENT_SERVICE_PROVIDER | PLATFORM_PROVIDER | 6012 | WALLETS |
| PAYMENT_SERVICE_PROVIDER | OTHER_PSP | 6012 | WALLETS |
| ADULT | ADULT_MEDIA | 5967 | ADULT_MEDIA |
| ADULT | ADULT_ERETAIL | 5967 | ADULT_MEDIA |
| ADULT | ADULT_CLASSIFIEDS | 5967 | ADULT_MEDIA |
| ADULT | ADULT_DATING | 7273 | ADULT_DATING |
| ADULT | ADULT_GAMES | 5967 | ADULT_MEDIA |
| TRAVEL | TRAVEL_PORTAL | 4722 | OTHER_TRAVEL |
| TRAVEL | HOSPITALITY | 4722 | OTHER_TRAVEL |
| TRAVEL | MOBILITY_SERVICES | 4722 | OTHER_TRAVEL |
| TRAVEL | OTHER_TRAVEL | 4722 | OTHER_TRAVEL |
| UTILITIES | UTILITY_BILL_PAYMENT | 6012 | WALLETS |
| UTILITIES | UTILITY_PREPAID | 6012 | WALLETS |
| CRYPTO | CRYPTO_RESELLER | 6051 | CRYPTO_EXCHANGE |
| CRYPTO | CRYPTO_EXCHANGE | 6051 | CRYPTO_EXCHANGE |
| OTHER_INDUSTRIES | OTHER_INDUSTRIES | 5999 | OTHER_INDUSTRIES |
| OTHER_INDUSTRIES | REFERRAL_PARTNER | 7311 | DATING |
| OTHER_INDUSTRIES | EDUCATION | 8299 | EDUCATION |
| OTHER_INDUSTRIES | GOVERNMENT | 9399 | GOVERNMENT |
| OTHER_INDUSTRIES | REAL_ESTATE_HOUSING | 6513 | REAL_ESTATE_HOUSING |
| OTHER_INDUSTRIES | HEALTHCARE | 8099 | HEALTHCARE