Payout Merchant onboarding
Register a Payout Merchant account for your seller (Marketplace Use Case)
Get started
As a "Platform Merchant (Marketplace Business)" merchant, you'll need to register a "Payout Merchant" account for each seller/user via our APIs to adopt Marketplace Use Case.
To register a Payout Merchant account, you should check the following prerequisites:
- We only accept Japanese entities (including Corporations and Sole Proprietorships) to register a Payout Merchant account.
- Payout Merchant must have a Japanese Bank Account to receive payouts in JPY from KOMOJU.
1. Create a Payout Merchant account
Request Merchant: Create API to create a Payout Merchant account with platform_role
set to payout
.
curl -X POST https://komoju.com/api/v1/merchants \
-u <platform merchant secret key>: \
-d name='New Payout Merchant 1' \
-d platform_role="payout"
Request Attribute | Type | Description |
---|---|---|
name | string | Payout Merchant's name |
platform_role | dropdown | The role of sub-merchant account. Please specify it as payout here. |
2. Query the payout merchant’s live_application for required fields
Request Liveapplication: Show API with payout merchant's uuid
you received from the previous step.
curl -X GET https://komoju.com/api/v1/live_application/{id}?locale=en \
-u platform_merchant_secret_key:
Response example
{
"merchant_id": "5td723eoi9txn8sj545ww2mv1",
"status": "incomplete",
"payouts_enabled": false,
"required_fields": [
{
"field": "company_information.company_phone",
"field_name": "Company Phone",
"field_type": "phone_number",
"field_properties": {
"minLength": 1,
"pattern": "^([() \\-_+]*[0-9]){10}[() \\-_+0-9]*$"
}
},
...
],
"newly_required_fields": [],
"errored_fields": []
}
Within required_fields
array, you'll able to see what kinds of information are required to proceed Payout Merchant registration. Following is the breakdown of each field property.
"field": "company_information.company_phone",
"field_name": "Company Phone",
"field_type": "phone_number",
"field_properties": {
"minLength": 1,
"pattern": "^([() \\-_+]*[0-9]){10}[() \\-_+0-9]*$"
}
field
is the property name that should be used when submitting information for that field.field_name
is the localized name for the field that should be shown to the user.field_type
is the type of component that should be displayed.field_properties
includes information about restrictions on the value of the field.
(1) field_types
Different field_types
are meant to help direct the types of form components shown to the user to help differentiate and format expected values.
Type | Description |
---|---|
string | A string |
dropdown | A dropdown of values. field_properties['enum'] will contain the translation ↔ value pairings |
radio | A radio selection. field_properties['enum'] will contain the translation ↔ value pairings |
checkbox | A true/false checkbox field. |
url | a URL |
text | a text box intended for longer values (ex: descriptions) than string |
an email | |
date | Datepicker that formats the date as “YYYY-MM-DD” |
integer | a non-negative integer field |
file_upload | A field that allows multiple files to be uploaded. The file should be uploaded to the merchant file upload endpoint. The value of the field should then be a list of the id s of the files uploaded. |
single_file_upload | A field that allows one file to be uploaded. The file should be uploaded to the merchant file upload endpoint. The value of the field should then be the id of the file uploaded. |
service_agreement | Should be represented as a checkbox, but will also have an extra external_links field property that links to the actual service agreement(s) |
(2) field_properties
field_properties
provide information on the properties of the field.
Property | Description | Example |
---|---|---|
enum | A dictionary of option ↔ value mapping. The option is localized based on locale | "enum": { "Sole Proprietor": "sole_proprietor", "Corporation": "corporation" } |
minLength | minimum length of the string/text | "minLength": 1 |
minimum | minimum value for fields of integer field_type | "minimum": 0 |
maximum | maximum value for fields of integer field_type | "maximum": 2147483647 |
format | Follows the possible built-in formats as specified by https://json-schema.org/understanding-json-schema/reference/string.html#built-in-formats Currently only date or email | "format": "email" |
pattern | Regex pattern for formatting values | "pattern": "^([() \-_+]_[0-9]){10}\[() \-_+0-9]\_$" |
external_links | a list of URLs linking to hosted service agreements | "external_links": ["https://example.com"] |
3. Uploading files for merchants
Some field_type
s (single_file_upload
, file_upload
) require that files be uploaded via our merchant file API first, then the UUID(s) submitted as the value for the live_application.
Request File: Create API to upload the files for Payout Merchant onboarding.
We only accept jpg, png, and pdf formats. Besides, each file size should be smaller than 10MB.
curl -X POST https://komoju.com/api/v1/merchants/{id}/files \
-u platform_merchant_secret_key: \
-F "paper=/path/to/file"
The response will look like:
{
"id": "6ssx1zxovw3fgmdsdd1zuzr5u",
"resource": "file",
"filename": "blank.png",
"size": 998,
"mime_type": "image/png",
"created_at": "2023-01-10T12:16:00.819+09:00",
"updated_at": "2023-01-10T12:16:01.085+09:00"
}
4. Submitting fields
Based on the required_fields
received in step 2, information can now be submitted for the Payout Merchant via Live Application: Update API.
Here’s an example of submitting company_information.company_name
curl -X PATCH https://komoju.com/api/v1/live_application/{id} \
-u platform_merchant_secret_key: \
-d "company_information.company_name=My Company"
If successful, the response will include any additional fields now required based on what was just submitted. In the case of company_name
, newly_required_fields
will be blank as no additional fields rely on the value company_name
.
An example of newly_required_fields
If you submit sole_proprietor
as the company_information.corporation_type
curl -X PATCH https://komoju.com/api/v1/live_application/{id} \
-u platform_merchant_secret_key: \
-d "company_information.corporation_type=sole_proprietor"
In the response, see that newly_required_fields
now includes sole_proprietor_proofs
.
"newly_required_fields": [
{
"field": "company_information.sole_proprietor_proofs",
"field_name": "Sole proprietor proofs",
"field_type": "file_upload",
"field_properties": {}
}
]
newly_required_fields
are only shown upon update
and return new fields that should be added to the form as a result of the last update to live_application.
5. Completing the live_application
Since the required information can be different based on your user's conditions (eg: corporation, sole proprietorship...etc), our API responses will guide you through the entire onboarding flow step-by-step by providing further fields under required_fields
and newly_required_fields
arrays.
The live_application fields should continue to be filled out until required_fields
, newly_required_fields
, and errored_fields
are all empty. At that point, the application is considered complete.
Overall, there are mainly three main categories of the required information, you can check the comprehensive items under each category.
(1) Company information
Below is the comprehensive list of required company-related information.
Field | Type | Description |
---|---|---|
company_information.company_country | dropdown | Country of company's entity. - Since only a Japanese entity is supported to use our service, you must select JP . |
company_information.corporation_type | radio | The type of company, eithercorporation or sole_proprietor |
company_information.company_phone | phone_number | Company's phone number |
company_information.share_capital_amount | integer | Company's share capital. - This field is required when the company type is corporation . |
company_information.share_capital_currency | dropdown | The currency of the company's share capital. - This field is required when the company type is corporation , . |
company_information.registration_number | string | The corporate number is a 13-digit unique identifier for every Japanese corporation. (reference) - This field is required when the company type is corporation . |
company_information.company_name | string | Company's name |
company_information.company_name_kana | string | Company's Katakana name |
company_information.company_name_alphabet | string | Company's Alphabet name |
company_information.company_postal_code | string | Postal code of company's address |
company_information.company_prefecture_state | string | Prefecture of company's address |
company_information.company_prefecture_state_kana | string | Prefecture of company's address in Katakana |
company_information.company_city | string | City of company's address |
company_information.company_city_kana | string | City of company's address in Katakana |
company_information.company_address | string | Company's address |
company_information.company_address_kana | string | Company's address in Katakana |
company_information.company_url (*) | url | The URL of the company's official site. - If Payout Merchant doesn't have a company site, it's fine to leave it as null. |
(2) Personal Information
Below is the comprehensive list of required Representative Director and Applicant information.
In the case of a corporation:
- It's fine if the Representative Director and Applicant are the same person.
- The Applicant must be the person who has the authority to make decisions on corporate contracts.
In the case of a sole proprietorship:
- Since the Representative Director and the Applicant should be the same person, you only need to fill out
representative_director
related fields.
Field | Type | Description |
---|---|---|
representative_director_information.first_name | string | Representative Director's first name |
representative_director_information.first_name_kana | string | Representative Director's first name in Katakana |
representative_director_information.last_name | string | Representative Director's last name |
representative_director_information.last_name_kana | string | Representative Director's last name in Katakana |
representative_director_information.date_of_birth | date | Representative Director's date of birth |
representative_director_information.gender | radio | Representative Director's gender |
representative_director_information.country | dropdown | Country of Representative Director's residence address |
representative_director_information.postal_code | string | Postal code of Representative Director's residence address |
representative_director_information.prefecture_state | string | Prefecture of Representative Director's residence address |
representative_director_information.prefecture_state_kana | string | Prefecture of Representative Director's residence address in Katakana |
representative_director_information.city | string | City of Representative Director's residence address |
representative_director_information.city_kana | string | City of Representative Director's residence address in Katakana |
representative_director_information.address | string | Address of Representative Director's residence address |
representative_director_information.address_kana | string | Address of Representative Director's residence address in Katakana |
representative_director_building.name_kana (*) | string | The building name of Representative Director's residence address. - If the address doesn't have a building name, it's fine to leave it as null. |
representative_director_building.name_kana (*) | string | The building name in Katakana of Representative Director's residence address. - If the address doesn't have a building name, it's fine to leave it as null. |
representative_director_information.phone | string | Phone number of Representative Director |
applicant_information.country | dropdown | Country of Applicant's residence address - This field is required when the company type is corporation . |
applicant_information.first_name | string | Applicant's first name - This field is required when the company type is corporation . |
applicant_information.first_name_kana | string | Applicant's first name in Katakana - This field is required when the company type is corporation . |
applicant_information.last_name | string | Applicant's last name - This field is required when the company type is corporation . |
applicant_information.last_name_kana | string | Applicant's last name in Katakana - This field is required when the company type is corporation . |
applicant_information.gender | radio | Applicant's gender - This field is required when the company type is corporation . |
applicant_information.date_of_birth | date | Applicant's date of birth - This field is required when the company type is corporation . |
(3) Bank Account information
Below is the comprehensive list of required bank account information.
- If you are a corporation, you can only register an account in the name of the corporation you applied for. If you are a sole proprietor, you can only register an account in the name of the representative or business name.
- Please read this guide first to ensure you provide the bank account information correctly.
Possible payout delay
If the account holder name is incorrect, there may be a delay in receiving the payout. Please make sure to accurately enter the half-width kana name as it appears in your bank passbook.
Field | Type | Description |
---|---|---|
bank_account_information.transfer_type | dropdown | Limited to Japanese bank accounts. Therefore, the option is limited to domestic . |
bank_account_information.default_frequency | dropdown | You can decide the frequency that KOMOJU pays out to your user, either weekly or monthly .- Learn more about payout frequency here |
bank_account_information.zengin_bank_name | string | Bank's name |
bank_account_information.zengin_bank_code | string | Bank's code |
bank_account_information.zengin_branch_name | string | Bank branch's name |
bank_account_information.zengin_branch_code | string | Bank branch's code |
bank_account_information.zengin_account_type | dropdown | The bank account type, either ordinary or checking |
bank_account_information.zengin_account_number | string | The bank account number. - Please refer to this guide before filling out. If the bank of your bank account is under ゆうちょ銀行, please also refer to this guide to see how to convert 8-digit ゆうちょ銀行's account number to 7 digits. |
bank_account_information.zengin_account_holder_kana | string | Account holder's Katakana name. - If the account holder's name is incorrect, there may be a delay in receiving the payout. Please make sure to accurately enter the half-width kana name as it appears in your bank passbook. |
bank_account_information.currency | dropdown | Limited to JPY option since we only support Japanese domestic bank accounts for payout. |
6. Checking submitted information
Querying the Liveapplication: Show again to review all submitted information populated under submitted_fields
array with any previous information provided.
7. Setup the webhook
You can set up Webhook to subscribe to the events so that you'll receive a notification immediately after the review status of a Payout Merchant's application has any update.
- Learn more about Webhook events for Platform Model here
Updated 9 months ago