> For the complete documentation index, see [llms.txt](https://docs.pagsmile.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pagsmile.com/reference/payin/submit-a-payin/philippines/banktransfer.md).

# BankTransfer

How to use BankTransfer to submit a payin in Philippines.

<mark style="color:green;">`POST`</mark> `https://gateway-test.pagsmile.com/trade/pay`

This endpoint allows you to submit a payin by BankTransfer in Philippines.

{% hint style="info" %}
Payments are processed in real time after the customer completes the payment.
{% endhint %}

{% hint style="warning" %}
Refunds are not supported for this payment method.
{% endhint %}

#### Headers

| Header          | Required | Description                                               |
| --------------- | -------- | --------------------------------------------------------- |
| `Content-Type`  | Yes      | Fixed value: `application/json; charset=UTF-8`.           |
| `Authorization` | Yes      | Basic authentication using `Base64(app_id:security_key)`. |

#### Request Body

| Parameter        | Type    | Required | Constraints                                                                                      | Description                                                         |
| ---------------- | ------- | -------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------- |
| `app_id`         | string  | Yes      | Maximum length: 32 characters.                                                                   | Merchant application ID assigned by Pagsmile.                       |
| `out_trade_no`   | string  | Yes      | Maximum length: 64 characters. Must be unique for the merchant application.                      | Merchant order number.                                              |
| `method`         | string  | Yes      | Fixed value: `BankTransfer`.                                                                     | Payment method.                                                     |
| `order_amount`   | decimal | Yes      | Supports up to two decimal places. No method-specific minimum or maximum is currently specified. | Payment amount in PHP.                                              |
| `order_currency` | string  | Yes      | Fixed value: `PHP`.                                                                              | Payment currency.                                                   |
| `subject`        | string  | Yes      | Maximum length: 128 characters.                                                                  | Payment subject or order title.                                     |
| `content`        | string  | No       | Maximum length: 255 characters.                                                                  | Payment description or order details.                               |
| `timestamp`      | string  | Yes      | Format: `yyyy-MM-dd HH:mm:ss`. Maximum length: 19 characters.                                    | Time at which the request is sent.                                  |
| `notify_url`     | string  | Yes      | Must be a valid URL. HTTPS is recommended.                                                       | Merchant endpoint that receives asynchronous payment notifications. |
| `buyer_id`       | string  | Yes      | Maximum length: 128 characters.                                                                  | Merchant-side customer ID.                                          |

### Example

#### Request

```json
{
  "app_id": "161***993",
  "out_trade_no": "out_trade_no_882***16",
  "order_currency": "PHP",
  "method": "BankTransfer",
  "order_amount": "1",
  "subject": "pagsmile test",
  "content": "pagsmile test",
  "timestamp": "2026-09-23 13:18:10",
  "notify_url": "https://merchant.example.com/payment/notify",
  "buyer_id": "buyer123"
}
```

#### Response

```json
{
  "code": "10000",
  "msg": "Success",
  "prepay_id": "cVFaSE***ae74",
  "trade_no": "20260***578",
  "out_trade_no": "out_trade_no_88***916",
  "web_url": "",
  "pay_url": "https://checkout-test.pagsmile.com/checkout?prepay_id=cVFaSE***ae74",
  "trade_status": "PROCESSING",
  "reference": "89***017",
  "due_date": "2026-09-23T05:33:23Z"
}
```

### Complete the payment

1. Redirect the customer to the complete `pay_url` returned by Pagsmile.
2. The customer must complete the payment before the returned `due_date`.
3. Use the payment notification or the Payin Detail API to determine the final payment status.

{% hint style="warning" %}
A response with `code=10000` confirms that the payment request was created. `trade_status=PROCESSING` does not mean that the payment has been completed. Confirm the final successful status before delivering goods or services.
{% endhint %}
