Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new payment method: Japan Bank Transfer #3225

Merged
merged 2 commits into from
Sep 13, 2019

Conversation

wiz
Copy link
Contributor

@wiz wiz commented Sep 8, 2019

Japan Bank Transfer 🇯🇵

Summary

This PR adds support for Bisq trades using the Japanese Bankers Association (Zenginkyo) payment processing network, known casually to everyone in Japan as "furikomi".

  • Country Restrictions: Japan only
  • Currency Restrictions: JPY only
  • Chargeback Risks: None, cannot reverse or chargeback
  • Per-Trade Risk Limit: LOW (0.5 BTC * 2.0 multiplier = 1 BTC)
  • Per-Trade Time Limit: DAY (transfers are near-instant, and 24/7/365 for major banks)

Overview

  • In Japan, over 98% of population has a bank account[1].
  • Transfers take minutes to complete, and fees are very low.
  • Almost all major banks are now supporting 24/7/365 transfers.
  • Japan's post office is the world's largest deposit holder[2], and can be used.
  • Security, Privacy, and Freedom of Japanese banking is better than most countries.

Security

Compared to USA style bank accounts or Visa style credit cards, where anyone who knows your routing/account number can initiate fraudulent transfers out of your account, Japan's bank transfer system is secure:

  • Banks give everyone a hardware security token to authorize transfers
  • Bank transfers can only be authorized by the account holder directly
  • Bank transfers are not reversible or chargeback-able (details below)

Privacy

In Japan, your bank account details are not considered sensitive information:

  • Bank account info can be published publicly, like a Bitcoin address
  • Companies publish their bank account info on their website/invoices

Of course, banks and governments can see all transactions that flow through their systems. However, the nature of the transaction, and source of funds, etc. are not requested or recorded, as the transfer is fully electronic and not processed by humans. Because of this, ihe trading parties actually have decent privacy compared to other country's bank transfer methods. Additionally, no tax ID or other personal information are exchanged for the transaction, so it is very unlikely that users of this payment method will have their bank accounts frozen or shut down as a result.

Freedom

Since the system is inheriently secure, banks don't need to police the system:

  • Banks don't generally "freeze" any "suspicious looking" transactions
  • Banks don't generally have restrictions on domestic bank transfers
  • Banks don't generally enforce arbitrary limits or capital controls

The fully automated and electronic system does not censor transactions.

How it works

  • Cost is low ($0 ~ $3)
  • Transfers are fast (0 ~ 5 minutes)
  • Available 24/7/365 with most larger banks

Account Information

To send a Japan Bank Transfer, the sender needs the following information:

  • Bank name/number (4 digits)
  • Branch name/number (3 digits)
  • Account type/number (7 digits)

Sending a Transfer

After the sender inputs the above data into their online banking, the receiving account holder's name is displayed to the sender so they can verify they are sending funds to the correct account before they finalize the transaction.

The transfer is usually completed almost instantly (less than 5 minutes), or on the next business day if the sender's bank does not support 24/7/365 transfers outside of normal banking hours.

Fraud Risks

  1. If you transfer funds to an invalid account (i.e. the destination account is closed or cannot be located), the funds are automatically returned to the sender's account within 24 hours.

  2. If you transfer funds to a valid account, once that accounts receives it (which is usually less than 2 minutes), you can request a chargeback if this transfer was a mistake. However, "The recipient bank will contact the payee and the funds will not be returned without the recipient's consent."[3]

  3. If a stolen or hacked bank account is used to transfer funds to you, the bank will not reverse the transaction just because the account was hacked. The sender would have to go the police and utilize the court system to get refunded, but this is presumably hard to do, and not likely to happen unless transaction amount is very high.

Therefore, the Japan Bank Transfer payment method is requested to be added with "LOW" risk setting, which limits each trade to 0.5 BTC by default, and after multiplying by the current DAO parameter (200%), this means Japan Bank Transfers will be limited to 1 BTC per trade at this time of this PR.

Footnotes

  1. "Japan population (ages 15+) 98.24%"
    Source: World Bank Account ownership at a financial institution
    URL: https://data.worldbank.org/indicator/FX.OWN.TOTL.ZS

  2. "As of November 2008, it was reported as being the world's biggest deposit holder."
    Source: Japan Post Bank, Wikipedia, the free encyclopedia
    URL: https://en.wikipedia.org/wiki/Japan_Post_Bank

  3. "振込先銀行より受取人に連絡し、受取人の了解がないと資金は戻りません。"
    Source: Sumitomo Mitsui Banking Corporation support page on transfer reversals
    URL: https://www.smbc.co.jp/kojin/direct/ib/help/help_kumimodoshi.html

Screenshots

Create Account

Form empty (English)

Screen Shot 2019-09-13 at 11 50 44

Form empty (Japanese)

Screen Shot 2019-09-13 at 11 55 47

Form filled (English)

Screen Shot 2019-09-13 at 11 53 47

Form filled (Japanese)

Screen Shot 2019-09-13 at 11 57 13

Bank search functionality

Screen Shot 2019-09-13 at 11 52 00

String validation for Japanese-only input fields

Screen Shot 2019-09-13 at 12 35 55

Trade limits

Screen Shot 2019-09-13 at 11 56 58

Display Account

Screen Shot 2019-09-13 at 12 29 08

Offer View

Maker view showing full details

Screen Shot 2019-09-13 at 12 00 21

Taker view showing Japan Bank Transfer payment method

Screen Shot 2019-09-13 at 12 42 52

Trade in progress (Japanese)

Screen Shot 2019-09-13 at 13 27 04

Trade requires attention for Buyer (Japanese)

Screen Shot 2019-09-13 at 13 30 10

Trade requires attention for Seller (English)

Screen Shot 2019-09-13 at 13 33 02

Trade information (English)

Screen Shot 2019-09-13 at 13 33 17

Trade information (Japanese)

Screen Shot 2019-09-13 at 13 27 04

Implementation Details

Input Validation

Bank Code: automatically entered from selected bank
Bank Name: must be selected from hard-coded list of 500 banks
Branch Name: must be Japanese characters
Branch Code: must be 3 digits
Account Name: must be Japanese characters
Account Number must be 4 ~ 8 digits
Account Type: radio buttons of 2 choices

Protobuf template

message JapanBankAccountPayload {
    string bank_name = 1;
    string bank_code = 2;                                   
    string bank_branch_name = 3;
    string bank_branch_code = 4;
    string bank_account_type = 5;
    string bank_account_name = 6;
    string bank_account_number = 7;
}

JSON contract payload

  "makerPaymentAccountPayload": {
    "bankName": "三井住友銀行",
    "bankCode": "0009",
    "bankBranchName": "銀座",
    "bankBranchCode": "042",
    "bankAccountType": "普通",
    "bankAccountName": "ナカモト サトシ",
    "bankAccountNumber": "1337",
    "paymentMethodId": "JAPAN_BANK",
    "id": "6d75ef11-2556-40ad-9059-bd73973f19e8",
    "maxTradePeriod": -1
  },
  "takerPaymentAccountPayload": {
    "bankName": "三井住友銀行",
    "bankCode": "0009",
    "bankBranchName": "東京",
    "bankBranchCode": "132",
    "bankAccountType": "普通",
    "bankAccountName": "山田太郎",
    "bankAccountNumber": "8765674",
    "paymentMethodId": "JAPAN_BANK",
    "id": "689185f5-93b7-4e77-a1ef-61ab4acc5a35",
    "maxTradePeriod": -1
  },

@chimp1984
Copy link
Contributor

Wow, the world has to learn a lot from Japan!

@wiz wiz force-pushed the japan-bank-transfer-payment-method branch from 5e19a6b to f2d93fd Compare September 9, 2019 00:51
Copy link
Contributor

@ripcurlx ripcurlx left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NACK - Although it wasn't up for review - here some minor change suggestions. @wiz Do you plan to open this PR for public review soon? utACK - Great work @wiz!

core/src/main/resources/i18n/displayStrings.properties Outdated Show resolved Hide resolved
core/src/main/resources/i18n/displayStrings.properties Outdated Show resolved Hide resolved
core/src/main/resources/i18n/displayStrings.properties Outdated Show resolved Hide resolved
core/src/main/resources/i18n/displayStrings.properties Outdated Show resolved Hide resolved
core/src/main/resources/i18n/displayStrings.properties Outdated Show resolved Hide resolved
core/src/main/resources/i18n/displayStrings.properties Outdated Show resolved Hide resolved
core/src/main/resources/i18n/displayStrings.properties Outdated Show resolved Hide resolved
@wiz wiz force-pushed the japan-bank-transfer-payment-method branch 2 times, most recently from 94f8626 to ea9c98a Compare September 12, 2019 00:29
@wiz wiz force-pushed the japan-bank-transfer-payment-method branch 2 times, most recently from 528afb5 to 888b016 Compare September 13, 2019 01:08
@wiz wiz force-pushed the japan-bank-transfer-payment-method branch from 888b016 to fb385a0 Compare September 13, 2019 02:54
@wiz wiz marked this pull request as ready for review September 13, 2019 04:41
@wiz wiz requested a review from sqrrm as a code owner September 13, 2019 04:41
@wiz wiz changed the title [WIP] Add new payment method: Japan Bank Transfer (furikomi) Add new payment method: Japan Bank Transfer Sep 13, 2019
@wiz wiz requested a review from ripcurlx September 13, 2019 04:41
@ripcurlx ripcurlx merged commit 13f00a9 into bisq-network:master Sep 13, 2019
@wiz wiz deleted the japan-bank-transfer-payment-method branch September 13, 2019 10:09
@tdhr0917
Copy link

I've reviewed now. It seems good.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants