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

# Pay

APIOperation = <mark style="color:red;">PAY</mark>; require <mark style="color:red;">sourceOfFund</mark> when use Merchant Hosted checkout.

## Integration

See integration detail in [General integration steps](/upc/payment-gateway/payment-solution/general-integration-steps.md)

{% hint style="info" %}
Refer to the [Code Samples and API Playground](https://uat-demo.galaxypay.vn/documents#post-/api/v1/transaction/pay) for detailed sample code and API testing.
{% endhint %}

| Endpoint URL | Route                  |
| ------------ | ---------------------- |
| Base URL     | api/v1/transaction/pay |

Example:

<https://uat-secure.galaxypay.vn/api/v1/transaction/pay>

### Request Message

#### Header

<table><thead><tr><th width="92">Level</th><th>Field Name</th><th>Data Type</th><th>Description</th></tr></thead><tbody><tr><td>1</td><td>apiKey</td><td>Alphanumeric<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Request authenticate</td></tr><tr><td>1</td><td>signature</td><td>Alphanumeric<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Request signature</td></tr></tbody></table>

#### Body

<table><thead><tr><th width="87">Level</th><th width="199">Field Name</th><th width="178">Data Type</th><th>Description</th></tr></thead><tbody><tr><td>1</td><td>requestID<br></td><td>Alphanumeric(50)<br><em><mark style="color:blue;">mandatory</mark></em></td><td><p>Unique ID for each transaction request</p><p></p><p><strong>Recommend</strong>: GUID</p></td></tr><tr><td>1</td><td>requestDateTime</td><td>Numeric(14)<br><em><mark style="color:blue;">mandatory</mark></em></td><td><strong>yyyyMMddHHmmss</strong></td></tr><tr><td>1</td><td>requestData</td><td>JSON Object</td><td></td></tr><tr><td>2</td><td>apiVersion</td><td>Numeric(5)<br><em><mark style="color:blue;">optional</mark></em></td><td>Specify the api version. Current supported version is 2.<br><br>If this field is omitted, the default value of apiVersion is <strong>1</strong></td></tr><tr><td>2</td><td>apiOperation</td><td>Alpha(20)<br><em><mark style="color:blue;">mandatory</mark></em></td><td><strong>PAY</strong></td></tr><tr><td>2</td><td>orderID</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Transaction ID at Merchant</td></tr><tr><td>2</td><td>orderNumber</td><td>Alphanumeric(20)<br><em><mark style="color:blue;">optional</mark></em></td><td>Order Number or Bill Number</td></tr><tr><td>2</td><td>orderAmount</td><td>Numeric(16)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Transaction Amount</td></tr><tr><td>2</td><td>orderCurrency</td><td>Alpha(3)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Send the code in <a href="/pages/9qc6oGrvkG54qieoVRAW">Currencies</a></td></tr><tr><td>2</td><td>orderDateTime</td><td>Numeric(14)<br><em><mark style="color:blue;">mandatory</mark></em></td><td><strong>yyyyMMddHHmmss</strong></td></tr><tr><td>2</td><td>orderDescription</td><td>Alphanumeric(250)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Transaction Description</td></tr><tr><td>2</td><td>paymentMethod</td><td>Alpha(20)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>See <a href="/pages/5cVWW6YgOoegGXIi38eN#payment-methods">Payment Method</a></td></tr><tr><td>2</td><td>sourceType</td><td>Alphanumeric(20)<br><em><mark style="color:blue;">condition</mark></em></td><td><p><strong>NOT Required</strong> <strong>when</strong> paymentMethod = <strong>DOMESTIC</strong> or <strong>INTERNATIONAL</strong> <br></p><p>See <a href="/pages/5cVWW6YgOoegGXIi38eN#payment-methods">Payment Method</a> for more detail</p></td></tr><tr><td>2</td><td>language</td><td>Alpha(2)<br><em><mark style="color:blue;">optional</mark></em></td><td><p>vi or en</p><p></p><p>vi: Vietnamese</p><p>en: English</p></td></tr><tr><td>2</td><td>isAutoCapture</td><td>Alpha(20)<br><em><mark style="color:blue;">optional</mark></em></td><td><p>true or false</p><p></p><p>default: true</p><p>Only apply for <strong>International Card</strong></p><p></p><p><strong>Required</strong> call API <a href="/pages/YODgMw0HIEsYNhZ3kRor">Capture</a> in case <strong>false</strong> to finish transaction</p><p>See <a href="https://docs.galaxypay.vn/upc/payment-gateway/appendix/glossary#isautocapture">isAutoCapture</a> for more detail</p></td></tr><tr><td>2</td><td>successURL</td><td>Alphanumeric(500)<br><em><mark style="color:blue;">optional</mark></em></td><td>Callback URL when Payment is success</td></tr><tr><td>2</td><td>failureURL</td><td>Alphanumeric(500)<br><em><mark style="color:blue;">optional</mark></em></td><td>Callback URL when Payment is failure</td></tr><tr><td>2</td><td>cancelURL</td><td>Alphanumeric(500)<br><em><mark style="color:blue;">optional</mark></em></td><td>Callback URL when Customer cancel payment</td></tr><tr><td>2</td><td>ipnURL</td><td>Alphanumeric(500)<br><em><mark style="color:blue;">optional</mark></em></td><td>IPN URL</td></tr><tr><td>2</td><td>subMerchant</td><td>JSON Object<br><em><mark style="color:blue;">optional</mark></em></td><td>Only use for master merchant scope</td></tr><tr><td>3</td><td>identifier</td><td><p>String(50)</p><p><em><mark style="color:blue;">optional</mark></em></p></td><td>Sub-merchant ID</td></tr><tr><td>2</td><td>sourceOfFund</td><td>Alpha(50)<br><em><mark style="color:blue;">condition</mark></em></td><td><strong>CARD</strong><br><strong>Required</strong> <strong>when</strong> use Merchant Hosted Checkout</td></tr><tr><td>2</td><td>cardNumber</td><td>Numeric(19)<br><em><mark style="color:blue;">condition</mark></em></td><td><strong>Required</strong> <strong>when</strong> use Merchant Hosted Checkout</td></tr><tr><td>2</td><td>cardHolderName</td><td>Alphanumeric(19)<br><em><mark style="color:blue;">condition</mark></em></td><td><strong>Required</strong> <strong>when</strong> use Merchant Hosted Checkout</td></tr><tr><td>2</td><td>cardExpireDate</td><td>Alphanumeric(5)<br><em><mark style="color:blue;">condition</mark></em></td><td><p><strong>Required</strong> <strong>when</strong> use Merchant Hosted Checkout</p><p>Format: MM/YY</p></td></tr><tr><td>2</td><td>cardVerificationValue</td><td>Numeric(3)<br><em><mark style="color:blue;">condition</mark></em></td><td><strong>Required</strong> <strong>when</strong> use Merchant Hosted Checkout<br><br><strong>Only use for International Card</strong></td></tr><tr><td>2</td><td>extraData</td><td>JSON Object<br><em><mark style="color:blue;">optional</mark></em></td><td>Extra data</td></tr><tr><td>3</td><td>customer</td><td>JSON Object<br><em><mark style="color:blue;">optional</mark></em></td><td>Customer information</td></tr><tr><td>4</td><td>firstName</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Customer first name</td></tr><tr><td>4</td><td>lastName</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Customer last name</td></tr><tr><td>4</td><td>identityNumber</td><td>Numeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Customer national ID</td></tr><tr><td>4</td><td>email</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Customer email</td></tr><tr><td>4</td><td>phoneNumber</td><td>Numeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Customer phone number</td></tr><tr><td>4</td><td>phoneType</td><td>Alpha(1)<br><em><mark style="color:blue;">optional</mark></em></td><td><p>Customer phone type</p><p>F: Fixed-line or M: Mobile</p></td></tr><tr><td>4</td><td>gender</td><td>Alpha(1)<br><em><mark style="color:blue;">optional</mark></em></td><td><p>Customer gender</p><p><strong>M</strong>: Male, <strong>F</strong>: Female</p></td></tr><tr><td>4</td><td>dateOfBirth</td><td>Numeric(8)<br><em><mark style="color:blue;">optional</mark></em></td><td><p>Customer birth day</p><p>Format: <strong>yyyyMMdd</strong></p></td></tr><tr><td>4</td><td>title</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Customer title</td></tr><tr><td>3</td><td>device</td><td>JSON Object</td><td>Device information</td></tr><tr><td>4</td><td>browser</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Browser information</td></tr><tr><td>4</td><td>fingerprint</td><td>Alphanumeric(100)<br><em><mark style="color:blue;">optional</mark></em></td><td>Unique identifier for the device</td></tr><tr><td>4</td><td>hostName</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>The name of merchant server</td></tr><tr><td>4</td><td>ipAddress</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>The ip address of merchant server</td></tr><tr><td>4</td><td>deviceID</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Mobile device identifier</td></tr><tr><td>4</td><td>deviceModel</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Mobile device model</td></tr><tr><td>3</td><td>application</td><td>JSON Object</td><td>Application information</td></tr><tr><td>4</td><td>applicationID</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Application Identifier</td></tr><tr><td>4</td><td>applicationChannel</td><td>Alpha(50)<br><em><mark style="color:blue;">optional</mark></em></td><td><p>Application channel</p><p><strong>Mobile</strong>, <strong>Web</strong>, <strong>POS</strong></p></td></tr><tr><td>3</td><td>billing</td><td>JSON Object</td><td>Billing address information</td></tr><tr><td>4</td><td>country</td><td>Alpha(2)<br><em><mark style="color:blue;">optional</mark></em></td><td>Billing country</td></tr><tr><td>4</td><td>state</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Billing state/province</td></tr><tr><td>4</td><td>city</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Billing city</td></tr><tr><td>4</td><td>postalCode</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Billing postal code</td></tr><tr><td>4</td><td>streetNumber</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Billing street number</td></tr><tr><td>4</td><td>address01</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Billing address line 1</td></tr><tr><td>4</td><td>address02</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Billing address line 2</td></tr><tr><td>3</td><td>shipping</td><td>JSON Object</td><td>Shipping address information</td></tr><tr><td>4</td><td>country</td><td>Alpha(2)<br><em><mark style="color:blue;">optional</mark></em></td><td>Shipping country</td></tr><tr><td>4</td><td>state</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Shipping state/province</td></tr><tr><td>4</td><td>city</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Shipping city</td></tr><tr><td>4</td><td>postalCode</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Shipping postal code</td></tr><tr><td>4</td><td>streetNumber</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Shipping street number</td></tr><tr><td>4</td><td>address01</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Shipping address line 1</td></tr><tr><td>4</td><td>address02</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Shipping address line 2</td></tr></tbody></table>

#### Sample request

```
{
  "requestID": "14653fa12f694f4f9d4b240e1bebbdf3",
  "requestDateTime": "20230726172307",
  "requestData": {
    "apiOperation": "PAY",
    "orderID": "2a43e4b9-c5df-49e6-8b18-42af9bcd150e",
    "orderNumber": 205249008064,
    "orderAmount": 100000,
    "orderCurrency": "VND",
    "orderDateTime": 20230726172307,
    "orderDescription": "DEMO TRANSACTION",
    "paymentMethod": "DOMESTIC",
    "sourceType": "",
    "language": "vi",
    "subMerchant": {
        "identifier": "10218"
    },
    "extraData": {
      "device": {
        "browser": "Safari",
        "fingerprint": "hA05iBWrRE",
        "hostName": "Galaxy Pay",
        "ipAddress": "10.192.168.10",
        "deviceID": "NzoBA2ys2y",
        "deviceModel": "IPhone"
      },
      "application": {
        "applicationID": "KbPCc8eSXH",
        "applicationChannel": "Mobile"
      },
      "billing": {
        "country": "vn",
        "state": "",
        "city": "Hồ Chí Minh",
        "postalCode": "70000",
        "streetNumber": "673",
        "address01": "Đường Nguyễn Hữu Thọ",
        "address02": ""
      },
      "shipping": {
        "country": "vn",
        "state": "",
        "city": "Hồ Chí Minh",
        "postalCode": "70000",
        "streetNumber": "673",
        "address01": "Đường Nguyễn Hữu Thọ",
        "address02": ""
      }
    }
  }
}

```

### Response Message

#### Header

<table><thead><tr><th width="101">Level</th><th width="182">Field name</th><th>Data Type</th><th>Description</th></tr></thead><tbody><tr><td>1</td><td>signature</td><td>Alphanumeric<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Response signature</td></tr></tbody></table>

#### Body

<table><thead><tr><th width="99">Level</th><th width="184">Field name</th><th width="188">Data type</th><th>Description</th></tr></thead><tbody><tr><td>1</td><td>requestID</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Original Request ID</td></tr><tr><td>1</td><td>responseDateTime</td><td>Numeric(14)<br><em><mark style="color:blue;">mandatory</mark></em></td><td><strong>yyyyMMddHHmmss</strong></td></tr><tr><td>1</td><td>responseCode</td><td>Numeric(3)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>See <a href="/pages/sBk2eUqKYscTG2fiXwOK">Response Codes</a> for more detail</td></tr><tr><td>1</td><td>responseMessage</td><td>Alphanumeric(250)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Response message</td></tr><tr><td>1</td><td>responseData</td><td>JSON Object<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Response data</td></tr><tr><td>2</td><td>transactionID</td><td>Alphanumeric(38)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>GALAXY PAY transaction ID</td></tr><tr><td>2</td><td>endpoint</td><td>Alphanumeric<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Secure Payment URL (Use for Redirect)</td></tr></tbody></table>

#### Sample response

```
{
    "requestID": "14653fa12f694f4f9d4b240e1bebbdf3",
    "responseDateTime": "20230726172307",
    "responseCode": "200",
    "responseMessage": "Success",
    "responseData": {
        "transactionID": "2307264944869814641620077",
        "endpoint": "https://uat-payment.galaxypay.vn/pay/2307264944869814641620077/20230726172332/993c33d5640b80c4b9ee5f7a0bc6169e6621d032c345b91babb5b2973b75158f"
    }
}
```
