Bank transfers

Overview

This payment service uses GMO Aozora Net Bank. It automatically confirms payments, allowing back-office resources to be used more effectively.
It is possible to receive system notifications of payment results by registering a URL in the Webhooks section of the management console.

Status and result

You can check the history of billing requests and deposits from the Transactions section on the management console.
On a transaction details page, you can check the charge status and the result.

  • Status: Awaiting, Result: No deposit
    This is the first step of the process, where the customer deposit hasn’t been received yet.
  • Status: Awaiting, Result: Insufficient deposit
    The customer made a deposit but the amount was lower than the one requested. The customer can still make another deposit before the payment deadline.
  • Status: Success, Result: Exact deposit
    The deposit total amount matches the requested amount.
  • Status: Success, Result: Excess deposit
    The deposit total amount exceeds the requested amount.
    As it’s not possible to refund a bank transfer through the system, you need to deal with the customer directly about the excess amount.
  • Status: Failed, Result: No deposit
    No deposits were received before the payment deadline.
    You can create a new billing request if necessary.
  • Status: Failed, Result: Insufficient deposit
    The customer made a deposit but the amount was lower than the one requested, and it is not possible to make new deposits as the payment deadline has been reached.
    As it’s not possible to refund a bank transfer through the system, you need to deal with the customer directly to refund this amount.

Bank account

Two types of bank accounts can be issued: one-time and recurring.

One-time

This generates a customer information (token) that can only be used once. When a billing request is made for this customer information (token), a new account number will be issued, which can only be used for this specific billing request.
Compared to the recurring type, this allows for more accurate payment management.

Recurring

This generates a customer information (token) that can be reused multiple times. When a billing request is made for this customer information (token), the same account number will be reused.
If there are multiple billing requests awaiting payment for one customer information (token), the oldest billing request will be fulfilled first.

Example
If a ¥10,000 deposit for the following billing requests (charges), the ¥5,000 charge will be fullfill first (as it’s the oldest) and the remaining ¥5,000 will be tied against the ¥10,000 charge.

・Before deposit

Billing dateCharge IDAmountStatusResultDeposit
2022/01/0111ed2a5e-91bd-2b04-be0c-733e06e5b0fd¥5,000AwaitingNo deposit¥0
2022/01/1511ed2a5e-4523-267c-be30-b33ea12033ff¥10,000AwaitingNo deposit¥0

・After deposit

Billing dateCharge IDAmountStatusResultDeposit
2022/01/0111ed2a5e-91bd-2b04-be0c-733e06e5b0fd¥5,000SuccessExact deposit¥5,000
2022/01/1511ed2a5e-4523-267c-be30-b33ea12033ff¥10,000AwaitingInsufficient deposit¥5,000

Payment deadline

You can set up the payment deadline in the management console. If a billing request isn’t fulfilled before the payment deadline is reached, it will failed (new deposits won’t be accepted).

Note: this also applies for Recurring tokens. Once a billing request is successful or failed, it won’t accept any new deposits (but the same bank account can be used for other billing requests).

From the management console, go to Settings > Payment services > Payment methods > Bank transfers > Payment deadlines.

Examples of payment deadlines, if billing request has been made on the 01/01
1 day: payment can be received until 01/02 at 23:59
3 days: payment can be received until 01/04 at 23:59
1 week: payment can be received until 01/08 at 23:59
2 weeks: payment can be received until 01/15 at 23:59
4 weeks: payment can be received until 01/29 at 23:59

Deposits

Settings

In the management console you can choose to prevent excess deposits, to avoid having to manually refund excess money if the customer deposited too much.

From the management console, go to Settings > Payment services > Payment methods > Bank transfer > Accepted transfers

Setting options:

  • All: all deposits will be accepted (no transfer limit)
  • Prevent excess deposits: a transfer limit is set for this account. If a deposit exceeds this limit, it will be automatically and fully refunded to the account from which the money was sent

Note: the transfer limit is updated after each deposit. However depending on the timing of the deposits, it might not be always possible to prevent all excess deposits

Note: In case of a Recurring type, as multiple billing requests exists for the same account, the transfer limit is the sum of all billing application amounts linked to the relevant account.

Result update

Once the deposit to the relevant account has been confirmed, the transaction status and payment result will be updated within approximately one hour, regardless of the time of day or day of the week.

Please note that, depending on the processing of the transferring financial institution, the deposit to the relevant account may not be made until the next business day of the financial institution or later. Please contact the financial institution which transfer was made from to find out the estimated time of payment.

Widget & EC link form

If you are using our Widget or EC link form to avoid having to create and maintain your own checkout payment pages, here is how to implement the Bank transfer payment method.

Widget

For more details, please check the API reference.

Example Widget HTML

<script src="https://widget.univapay.com/client/checkout.js"></script>
<form action="<optional URL>">
 <span data-app-id="<app token ID>"
  data-checkout="payment"
  data-amount="1000"
  data-currency="jpy"
  data-payment-type="bank_transfer"
 ></span>
</form>

Note: if you want all available payment methods to be displayed, please remove the [data-payment-type=”bank_transfer”] line.

EC link form

For more details, please check the API reference.

The following settings are in the “Advanced settings” of the EC link forms.

・Save card details (recurring)
If enabled, the setting will set a “Recurring” type account (fixed account number for one customer token). Disable if you want to use the “One-time” type.

・CVV auth, Authorization, Installment
Those settings are not available for bank transfers, they will be ignored even if enabled.

・Subscription
This setting isn’t available yet for bank transfer so it will be ignore even if enabled for the time being.

API

You will find below details for processing payments through our API, instead of using the Widget or EC link form. This guide is a supplementary explanation of each API process for bank transfers.

1/ Token: Create

To save the customer information in a token.

Request body example:

{
  "payment_type" : "bank_transfer",
  "type" : "one_time",
  "email" : "demo@univapay.com",
  "data" : {
    "brand" : "aozora_bank"
  },
  "metadata": {
    "memberid" : "12345"
  }
}

1/ Charge: Create

To make a charge with an existing token

Request body example:

{
  "transaction_token_id": "11ed00f1-da1b-c4d2-b420-37b91ef1b282",
  "amount": "100",
  "currency": "jpy",
  "metadata": {
    "orderid": "12345"
  }
}

3/ Charge: Get

You can use this to check on the charge status. It’s also possible to get this information using Webhooks*.
If the status is “awaiting”, it means that the charge (billing request) has been successfully created and the customer payment is pending.
*The corresponding Webhook event is “charge_updated”.

Response / Webhook body example:

{
  "id": "11ed07f5-345d-4308-a4c9-9f6b3663e18f",
  "store_id": "11ec9f7f-fb01-2620-af32-af7eb1bedc1a",
  "transaction_token_id": "11ed07f5-2da0-18ce-96f7-9f06340a7a87",
  "transaction_token_type": "one_time",
  "subscription_id": null,
  "merchant_transaction_id": null,
  "requested_amount": 100,
  "requested_currency": "JPY",
  "requested_amount_formatted": 100,
  "charged_amount": 100,
  "charged_currency": "JPY",
  "charged_amount_formatted": 100,
  "only_direct_currency": false,
  "capture_at": null,
  "descriptor": null,
  "descriptor_phone_number": null,
  "status": "awaiting",
  "error": null,
  "metadata": {
    "orderid": 123456
  },
  "mode": "live",
  "created_on": "2022-07-20T06:28:44.521327Z"
}

4/ Token: Get

With this, you can retrieve information on the branch and account number of the account issued after the billing application. (Optional step, please only do so if you need it)

Response body example:

{
  "id": "11ed00f1-da1b-c4d2-b420-37b91ef1b282",
  "store_id": "11ec9f7f-fb01-2620-af32-af7eb1bedc1a",
  "email": "demo@univapay.com",
  "payment_type": "bank_transfer",
  "active": true,
  "mode": "live",
  "type": "recurring",
  "usage_limit": null,
  "confirmed": null,
  "metadata": {
    "customer_id": 12345
  },
  "created_on": "2022-07-11T08:17:06.47037Z",
  "updated_on": "2022-07-26T09:37:05.663521Z",
  "last_used_on": "2022-07-26T09:37:05.666269Z",
  "data": {
    "brand": "aozora_bank",
    "bank_code": "0310",
    "bank_name": "GMOあおぞらネット銀行",
    "branch_name": "アジサイ",
    "branch_code": "123",
    "account_holder_name": "カ)ユニヴア ペイキヤスト",
    "account_number": "1234567"
  }
}

5/ Charge: Get

You can use this to retrieve the payment result after the payment deadline has passed. It’s also possible to get this information using Webhooks*.
*The corresponding webhook event is “charge_finished”.

Response body example:

{
  id: "11ed00f1-f0c4-1ca2-b754-db0d9311d5a0",
  store_id: "11ec9f7f-fb01-2620-af32-af7eb1bedc1a",
  transaction_token_id: "11ed00f1-da1b-c4d2-b420-37b91ef1b282",
  transaction_token_type: "one_time",
  subscription_id: null,
  merchant_transaction_id: null,
  requested_amount: 100,
  requested_currency: "JPY",
  requested_amount_formatted: 100,   //元々の申込金額
  charged_amount: 100,
  charged_currency: "JPY",
  charged_amount_formatted: 100,   //実際の入金額
  only_direct_currency: false,
  capture_at: null,
  descriptor: null,
  descriptor_phone_number: null,
  status: "successful",
  error: null,
  metadata: {
    "orderid": 123456
  },
  mode: "live",
  created_on: "2022-07-11T08:17:44.481834Z"
}

Result notifications

If the results need to be automatically reflected in your own system, you can use the webhooks to receive the results and update the ordering system. It’s also possible to check the results by making a request to the API.
If you’re happy to check the results through the management screen or by receiving emails, you don’t need to set up webhooks.

Examples of results and notifications
・Token creation:
Email / webhook (token_created)

・Charge requested (Status: awaiting, Result: No deposit)
Email / webhook (charge_updated)

・Insufficient deposit (Status: awaiting, Result: Insufficient deposit)
Email only

・Charge success (Status: Failed, Result: Exact or Excess deposit)
Email / webhook (charge_finished)

・Charge failure (Status: Failed, Result: Exact or Insufficient deposit)
Email / webhook (charge_finished)

Testing

If you make a bank transfer billing request in test mode via the Widget or EC link form, the status will be immediately updated to “Successful” and the result to “Exact deposit”.
If you make a bank transfer billing request in test mode via the API, the status will be first set to “Awaiting” and once it’s confirmed with the issuer token, the status will be updated to “Successful” and the result to “Exact deposit”.

With the test mode, you can check email notifications and webhooks (system notifications). However it is not possible to check for failed billing requests due to deadline expiry or excess deposits.

Maintenance

GMO Aozora Net Bank regularly undergoes system maintenance. Please be aware that errors or delays may occur in the processing of billing applications, payment notifications, billing suspensions, account suspensions due to expired transfers, etc. We apologize in advance for any inconvenience this may cause.

FAQ

・Are all issued bank accounts regular (普通) accounts?
Yes, all issued banks accounts are regular accounts.

・Is it possible to refund a deposit made by a customer?入金された金額をお客様に返金できますか。
It is not possible to make a refund through our system. Please make a refund directly to the customer’s bank account.

・I want to cancel a billing request.
It is possible to cancel a billing request if no deposits have been received. From the management console, go to the Transactions list, search for this billing request to access and click on “Cancel invoice” from its page details.

・Is the customer paying the bank transfer fees?
Yes, the customer is responsible for paying the bank transfer fees. For more details on the fees amount, please contact the bank from which the transfer is made.

・The products price changed after the billing request was made. What can I do?
If no deposits have been received, you can click on “Cancel invoice” from the billing request page in the management console, and make a new billing request with the new amount.

・A customer inquired about the bank account details to transfer the money to.
From the management console Transaction list, please search for the billing request and click on it to go to its details page and see the bank account details the money should be transferred to.

・Can customer living outside of Japan pay by bank transfer?
Unfortunately, only Japanese banks transfers can be accepted. Transfers from banks outside of Japan are not supported.