> For the complete documentation index, see [llms.txt](https://docs.up2.money/08.01/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.up2.money/08.01/api-payment-gateway/additional-capabilities.md).

# Additional capabilities

### <mark style="color:blue;">Dynamic descriptor</mark>

{% hint style="success" %}
This is applicable when the acquirer has support for dynamic descriptor.

Dynamic descriptor allows to customize merchant name and location as they shown in cardholder's bank statement and SMS from issuer.

The default merchant name and location associated with MID may be overriden with custom values for each payment request. Dynamic descriptor is supported

in [Authorize](/08.01/api-payment-gateway/actions.md#authorize-post-orders-authorize), [Create](/08.01/api-payment-gateway/actions.md#order-creation-post-orders-create) and [**Rebill**](/08.01/api-payment-gateway/actions.md#repeating-payment-post-orders-id-rebill) requests.

Dynamic descriptor data should be specified within **extra\_fields** block as follows:

Required parameters
{% endhint %}

| Name                | Description                                                | Example       |
| ------------------- | ---------------------------------------------------------- | ------------- |
| dynamic\_descriptor | Dynamic descriptor (<mark style="color:orange;">\*</mark>) | -             |
| \*.merchant         | Merchant name                                              | BOOKSTORE LTD |
| \*.city             | Merchant's city                                            | New york      |
| \*.country          | Merchant's country (ISO 3166-1 alpha-2)                    | US            |

{% hint style="info" %}
Combined length of **\*.merchant** and **\*.city** values should not be more than 37 symbols and length of **\*.merchant** alone should not be greater than 22

symbols. Both parameters may consist of alfanumeric characters and punctuation marks.

According to provided example values, resulting descriptor visible to cardholder may look like this:

BOOKSTORE LTD>New york                US
{% endhint %}

### <mark style="color:blue;">Unique conversion of payments</mark>

{% hint style="success" %}
If a unique identifier is transferred at payment, then all orders having one identifier, are considered one attempt. By identifier calculates a unique conversion of

payments. A unique order ID is supported in [Authorize](/08.01/api-payment-gateway/actions.md#authorize-post-orders-authorize), [Create](/08.01/api-payment-gateway/actions.md#order-creation-post-orders-create) and [Rebill](/08.01/api-payment-gateway/actions.md#repeating-payment-post-orders-id-rebill) requests. For example, there were five attempts of order with the same identifier, one

of which was successful. In this case, the conversion will be 20% (5 attempts, successful - 1), but a unique conversion - 100%, because based on the logic of

counting unique attempts, it was one and ended in success.

A unique identifier is passed in the **extra\_fields** block:
{% endhint %}

| Name           | Description                                        | Example   |
| -------------- | -------------------------------------------------- | --------- |
| attributes     | Parameters (<mark style="color:orange;">\*</mark>) | -         |
| \*.invoice\_id | Unique identifier of payment                       | 741852963 |
|                |                                                    |           |

### <mark style="color:blue;">Payments with 3-D Secure 2.0</mark>

{% hint style="info" %}
Data for 3-D Secure 2.0 authentication is transmitted in the request [Authorize](/08.01/api-payment-gateway/actions.md#authorize-post-orders-authorize) in the parameter secure3d
{% endhint %}

{% tabs %}
{% tab title="Required parameters" %}

<table><thead><tr><th width="278">Name</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td>secure3d</td><td>3-D Secure authentication (<mark style="color:orange;">*</mark>)</td><td>-</td></tr><tr><td>*.browser_details</td><td>Browser details</td><td>-</td></tr><tr><td>*<em>.*</em>.browser_accept_header</td><td>Accepted content types</td><td>text/html</td></tr><tr><td>*<em>.*</em>.browser_color_depth</td><td>Device color depth</td><td>24</td></tr><tr><td>*<em>.*</em>.browser_ip</td><td>User IP</td><td>109.86.86.86</td></tr><tr><td><em>.</em>.browser_language</td><td>Browser language</td><td>en</td></tr><tr><td>.*.browser_screen_height</td><td>Browser area height</td><td>1080</td></tr><tr><td>*<em>.*</em>.browser_screen_width</td><td>Browser area width</td><td>1920</td></tr><tr><td>*<em>.*</em>.browser_timezone</td><td><p>Difference between browser timezone and UTC time in</p><p>minutes</p></td><td>-180</td></tr><tr><td>*<em>.*</em>.browser_user_agent</td><td>Browser user agent</td><td>Mozilla</td></tr><tr><td>*.*browser_java_enabled</td><td>Java enable flag in the browser</td><td>false</td></tr><tr><td>*<em>.*</em>.window_height</td><td>Browser window height</td><td>1080</td></tr><tr><td>*<em>.*</em>.window_width</td><td>Browser window width</td><td>1920</td></tr></tbody></table>
{% endtab %}

{% tab title="Optional parameters" %}

<table><thead><tr><th>Name</th><th width="293">Description</th><th>Example</th></tr></thead><tbody><tr><td>secure3d</td><td>3-D Secure authentication (<mark style="color:orange;">*</mark>)</td><td>-</td></tr><tr><td>*.force_challenge</td><td>Force inclusion cash flow scenario</td><td>1</td></tr><tr><td></td><td></td><td></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

> If the authorization response looks like this:

```graphql
{
"method3d_params": {
"method_url": "https://ds.testcert.testconnect.su/ma",
"method_data": "axJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly8zZHN0ZXN0Lm1kbWJhbmsucnUvY2dpLWJpb
i9jZ2lfbGlua193IiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJkNDI0ZDFjMS02OTUwLTRkNmMtYTMwNy0zMTcxZDgzYjJiN2IifQ"
},
"message": "Method3d required",
"order_id": "60391976929806541"
}
```

> then you need to collect in the user's browser a form that sends data to an invisible **iframe** using for these are the values of the **method\_url** and
>
> method\_data parameters from the authorization response.
>
> After the user's browser has submitted the form to an invisible iframe, you need to do the request which described in the section [Continue 3DS Method URL](/08.01/api-payment-gateway/actions.md#continue-3ds-method-url-of-authentication-post-orders-id-resume)
>
> of authentication.

### <mark style="color:blue;">DSRP</mark>

> The DSRP data is transmitted in the parameter **secure3d**

{% tabs %}
{% tab title="Required parameters" %}

<table><thead><tr><th>Name</th><th width="281">Description</th><th>Example</th></tr></thead><tbody><tr><td>secure3d</td><td>3-D Secure authentication (<mark style="color:orange;">*</mark>)</td><td>-</td></tr><tr><td>*.dsrp</td><td>DSRP</td><td>1</td></tr><tr><td>*.xid</td><td>PaRes transaction identifier (XID)</td><td>8Rg2xYbxLUGsfZlkoh1JxAQFBM=</td></tr><tr><td>*.cavv</td><td>Cardholder Authentication Verification Value from PaRes</td><td>AAABCBVRA2EYZXQBV1EDAAAAAA=</td></tr><tr><td>*.eci</td><td>E-commerce Indicator (ECI)</td><td>05</td></tr></tbody></table>
{% endtab %}

{% tab title="Optional parameters" %}

| Name             | Description                                                                                                                                                                                     | Example    |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
| dsrp\_type       | <p>Type system DSRP. Possible types are: <mark style="color:orange;">masterpass</mark>, <mark style="color:orange;">apple\_pay</mark>,</p><p><mark style="color:orange;">google\_pay</mark></p> | masterpass |
| dsrp\_wallet\_id | ID digital wallet                                                                                                                                                                               | 765        |
| {% endtab %}     |                                                                                                                                                                                                 |            |
| {% endtabs %}    |                                                                                                                                                                                                 |            |

> Parameter **dsrp\_wallet\_id** are applied only for the **dsrp\_type == masterpass**. If the type of payment system is not specified, the default is ApplePay.
>
> When working with DSRP, merchant gets a token, which contains the requisites for payment. Example of filling for the ApplePay:

| Name for ApplePay               | Name for API                       |
| ------------------------------- | ---------------------------------- |
| applicationPrimaryAccountNumber | pan                                |
| applicationExpirationDate       | expiration\_month expiration\_year |
| transactionAmount               | amount                             |
| transactionId                   | xid                                |
| onlinePaymentCryptogram         | cavv                               |
| eciIndicator                    | eci                                |

{% hint style="info" %}
The fields holder andcvv are not transmitted, because they are not contained in the token, dsrp always has the value 1 (true), eci is passed only if it is

contained in a token
{% endhint %}

### <mark style="color:blue;">Binding a payment card (Oneclick)</mark>

{% hint style="warning" %}
When creating a payment can be binding a buyer card. In the future, can be select one of the binded cards on the payment page. For binding the card, must be

specify the alphanumeric identifier of the buyer.

Card binding is performed on the payment page using the card save check box.

The id must not exceed 40 symbols, it is transmitted in the block extra\_fields of the query [Create](/08.01/api-payment-gateway/actions.md#order-creation-post-orders-create):
{% endhint %}

| Name            | Description                                            | Description |
| --------------- | ------------------------------------------------------ | ----------- |
| oneclick        | Binding a card (<mark style="color:orange;">\*</mark>) | -           |
| \*.customer\_id | Buyer id                                               | 0123654789  |
| \*.prechecked   | Flag of filling the checkbox for saving the card       | 1           |

### <mark style="color:blue;">Paged downloads of lists of orders and operations</mark>

{% hint style="info" %}
For a list of orders or operations, you can specify the number of entries on the page. It is also possible to specify the page number to download list of orders

(operations).
{% endhint %}

| Name       | Description                   | Example |
| ---------- | ----------------------------- | ------- |
| page       | Number loadable page          | 2       |
| page\_size | Number of records on the page | 50      |

> If the ***page*** and ***page\_size*** parameters are not specified, the page with the number 1 will be downloaded. She will be contain the number of entries by
>
> default.
>
> For example, if ***page = 2*** and ***page\_size = 50***, then 50 entries will be downloaded, starting from the 51st.
>
> HTTP headers in the response contain in the header Pagination links to subsequent and previous pages of list of orders (operations). If is downloaded first
>
> page, there will only be a link to the next page of list. For example, if is downloaded a second page from the list of orders, the title will contain links of that type:
>
> `'<http://mybox.localhost?foo=bar&page_size=2&page=1>; rel="prev", <http://mybox.localhost?`
>
> `foo=bar&page_size=2&page=3>; rel="next"'`
>
> If an incorrect values of the ***page\_size*** or ***page*** parameters is set, to will be error of validation with that message:
>
> <mark style="background-color:orange;">'message' : 'Invalid page size'</mark> or <mark style="background-color:orange;">'message' => 'Invalid page'</mark>
