Money Forward Kessai API v2
ここに選択した言語タブ向けのコードサンプルや、リクエスト・レスポンス例が表示されます。
本APIはMoney Forward Kessai APIのversion 2となります。
SEIKYU+ powered by Biz Forwardの売り手様も同様にご利用いただけます。
はじめに
本APIはMoney Forward Kessaiのサービスをご利用いただくためのAPIです。 より迅速な請求業務連携を実現することができます。
用語の定義
本ドキュメントで利用する用語について解説します。
項目 | 説明 |
---|---|
Endpoint | 単一の機能を提供するURL。例:POST: /customers |
Object | Money Forward Kessai内に存在する各情報。例: customer |
Property | Objectの各要素。 |
Parameter | APIへのリクエスト時に指定するクエリ引数。 |
Payload | Object登録時に利用するリクエストデータ。 |
基本事項
本APIはでは各情報はObject(もの)として扱い、それに対するシンプルな操作を提供します。 シンプルな操作の組み合わせで柔軟に利用ができるように設計されています。 このような考え方はRESTful指向と呼ばれています。 現在扱っているObjectは以下の通りです。
- 顧客 customer
- 与信枠審査 customer_examination
- 与信枠 credit_facility
- 請求先 destination
- 取引 transaction
- 請求 billing
- 振込 payout
- 振込債権 payout_transaction
これらは、それぞれ固有のIDを持つObject(もの)として考えてください。 各EndpointはそれぞれのObjectに対応した操作をするためにあります。
例えば請求先について登録・取得などの操作をしたい場合は 請求先に対するEndpointを利用します。
次に各Endpointにはそれぞれ操作の種類があります。操作の種別によって利用するHTTPメソッド(GET, POSTなど)が異なります。
- 一覧取得
- 登録
- 更新
- 取得
- 削除
各項目について目的を説明します。
■ 一覧取得 GET
Objectの一覧を取得するためのEndpointです。取得する際に取得条件を指定することができます。 例えば作成日時で絞る、顧客をアラートの有無で絞るということができます。 特定の条件下にあるObjectを取得するときに利用できます。 各Endpointで利用できる条件はリファレンスをご確認ください。
■ 登録 POST
Objectを登録するためのEndpointです。
■ 一部更新 PATCH
Objectを一部更新するためのEndpointです。
■ 更新 PUT
Objectを更新するためのEndpointです。
■ 取得 GET
IDを指定して特定のObjectを1件のみ取得するためのEndpointです。 IDがわかっている特定の1件だけを取得するために利用します。 取得できる情報は一覧取得のものと同様です。
■ 削除 DELETE
IDを指定してObjectを削除またはキャンセルするためのEndpointです。 現在は取引キャンセルのみに対応しています。
各Endpointは対象のObjectへのCRUD ( Create / Retrieve / Update / Delete ) 操作を提供します。但し各Objectに対して CRUD操作のすべてが提供されるわけではありません。特にUD ( Update / Delete ) 操作に関してはほとんどのObjectに対して提供されていません。
HTTPメソッドは各々が以下のようにCRUD操作と対応しています。
メソッド | 操作 |
---|---|
POST | Create |
GET | Retrieve |
PATCH, PUT | Update |
DELETE | Delete |
利用を開始する
Money Forward Kessaiを利用して顧客の与信枠を取得してみましょう。 以下の行程ではSandbox環境利用を前提としています。
与信枠取得までの流れ
以下の手順で本APIを利用し、与信枠を取得していきます。
Step1. apikeyを取得する
APIをご利用頂く場合、事前にその旨をご依頼いただき、Money Forward Kessai側で利用登録する必要があります。 お済みでない場合は、担当へお問い合わせください。
利用登録が完了すると、管理画面上のAPIキーページからapikey
を取得できるようになります。
- APIキーページへ行き「新規発行」ボタンで
apikey
を発行してください。 本番環境であるhttps://s.mfk.jp/developers/apikeyから取得できるapikey
はSandbox環境のものと異なります。 - 発行された
apikey
をコピーしておいてください。
Step2. 顧客登録をする
Step2. 顧客登録をする
curl -X POST "https://sandbox-api.mfkessai.co.jp/v2/customers" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "apikey: [apikey]" \
-d '{
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}'
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => '[apikey]',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array(
"destination" => array(
"address1" => "東京都千代田区1-2-3",
"address2" => "サンプルビル3F",
"cc_emails" => array(
"[email protected]",
"[email protected]"
),
"department" => "経理部",
"email" => "[email protected]",
"name" => "担当 太郎",
"name_kana" => "タントウ タロウ",
"tel" => "03-1234-5678",
"title" => "部長",
"zip_code" => "111-1111"
),
"name" => "サンプル顧客",
"number" => "CUSTOMER0001"
);
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/customers', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customers")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => '[apikey]'
}
req = Net::HTTP::Post.new(uri, headers)
req.body='{
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
p res.body
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': '[apikey]'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/customers', json={
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type CustomerPayloadDestination struct {
Address1 string `json:"address1"`
Address2 string `json:"address2"`
CcEmails []string `json:"cc_emails"`
Department string `json:"department"`
Email string `json:"email"`
Name string `json:"name"`
NameKana string `json:"name_kana"`
Tel string `json:"tel"`
Title string `json:"title"`
ZipCode string `json:"zip_code"`
}
type CustomerPayload struct {
Destination CustomerPayloadDestination `json:"destination"`
Name string `json:"name"`
Number string `json:"number"`
}
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"[apikey]"},
}
payload, err := json.Marshal(CustomerPayload{
Destination: CustomerPayloadDestination{
Address1: "東京都千代田区1-2-3",
Address2: "サンプルビル3F",
CcEmails: []string{
"[email protected]",
"[email protected]",
},
Department: "経理部",
Email: "[email protected]",
Name: "担当 太郎",
NameKana: "タントウ タロウ",
Tel: "03-1234-5678",
Title: "部長",
ZipCode: "111-1111",
},
Name: "サンプル顧客",
Number: "CUSTOMER0001",
})
if err != nil {
// handle error
return
}
data := bytes.NewBuffer(payload)
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/customers", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
fmt.Println(resp)
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
return
}
fmt.Println(string(body))
}
const fetch = require('node-fetch');
const inputBody = `{
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'[apikey]'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customers',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"customer": {
"created_at": "2019-04-01T10:36:43+09:00",
"has_alert": false,
"id": [customer_id],
"name": "サンプル顧客",
"number": "CUSTOMER001",
"object": "customer",
"payment_method": {
"bank_transfer": {
"object": "bank_transfer"
},
"object": "payment_method"
},
"uri": "mfk:customer:[customer_id]"
},
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"created_at": "2019-04-01T10:36:43+09:00",
"customer_id": "[customer_id]",
"department": "経理部",
"email": "[email protected]",
"id": "69M9-3P96",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"object": "destination",
"tel": "03-1234-5678",
"title": "部長",
"uri": "mfk:destination:[destination_id]",
"zip_code": "111-1111"
}
}
顧客登録Endpointを利用して、顧客を登録します。 この際、同時に請求先(Destination)も一件登録されます。
この時レスポンスに含まれるcustomer.id
を顧客ID(customer_id
), destination.id
を請求先ID(destination_id
)として利用していきます。
Step3. 与信枠審査申請をする
Step3. 与信枠審査申請をする
curl -X POST "https://sandbox-api.mfkessai.co.jp/v2/customer_examinations" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "apikey: [apikey]" \
-d '{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "[customer_id]",
"email": "[email protected]",
"end_date": "2019-04-30",
"remark": "__passed__",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}'
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => '[apikey]',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array(
"address1" => "東京都千代田区1-2-3",
"address2" => "サンプルビル3F",
"amount" => 20000,
"business_description" => "クラウド型企業間決済サービス",
"business_type" => "corporate",
"corporate_number" => "1234567890123",
"customer_id" => "[customer_id]",
"email" => "[email protected]",
"end_date" => "2019-04-30",
"remark" => "__passed__",
"representative_name" => "代表太郎",
"tel" => "03-1234-5678",
"website" => "https://mfkessai.co.jp",
"zip_code" => "111-1111"
);
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/customer_examinations', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customer_examinations")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => '[apikey]'
}
req = Net::HTTP::Post.new(uri, headers)
req.body='{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "[customer_id]",
"email": "[email protected]",
"end_date": "2019-04-30",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
p res.body
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': '[apikey]'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations', json={
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "[customer_id]",
"email": "[email protected]",
"end_date": "2019-04-30",
"remark": "__passed__",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type CustomerExaminationPayload struct {
Address1 string `json:"address1"`
Address2 string `json:"address2"`
Amount int `json:"amount"`
BusinessDescription string `json:"business_description"`
BusinessType string `json:"business_type"`
CorporateNumber string `json:"corporate_number"`
CustomerID string `json:"customer_id"`
Email string `json:"email"`
EndDate string `json:"end_date"`
Remark string `json:"remark"`
RepresentativeName string `json:"representative_name"`
Tel string `json:"tel"`
Website string `json:"website"`
ZipCode string `json:"zip_code"`
}
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"[apikey]"},
}
payload, err := json.Marshal(CustomerExaminationPayload{
Address1: "東京都千代田区1-2-3",
Address2: "サンプルビル3F",
Amount: 100001,
BusinessDescription: "クラウド型企業間決済サービス",
BusinessType: "corporate",
CorporateNumber: "1234567890123",
CustomerID: "NG47-R436",
Email: "[email protected]",
EndDate: "2019-09-30",
Remark: "__passed__",
RepresentativeName: "代表太郎",
Tel: "03-1234-5678",
Website: "https://mfkessai.co.jp",
ZipCode: "111-1111",
})
if err != nil {
// handle error
return
}
data := bytes.NewBuffer(payload)
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/customer_examinations", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
fmt.Println(resp)
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
return
}
fmt.Println(string(body))
}
const fetch = require('node-fetch');
const inputBody = `{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "[customer_id]",
"email": "[email protected]",
"end_date": "2019-04-30",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'[apikey]'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"created_at": "2019-04-25T12:50:52+09:00",
"customer_id": "[customer_id]",
"email": "[email protected]",
"end_date": "2019-04-30",
"id": "6V9W-EMYN",
"object": "customer_examination",
"remark": "__passed__",
"representative_name": "代表太郎",
"status": "unexamined",
"tel": "03-1234-5678",
"uri": "mfk:customer_examination:6V9W-EMYN",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}
Step2で作成した顧客に対する与信枠審査申請をします。
end_date
は現在時点で指定可能な日付に入れ替えてください。
remark
に__passed__
を入れているのは、審査結果を指定するためです。
これはsandboxのみで提供されている機能です。審査結果の操作
Step4. 与信枠を確認する
Step4. 与信枠を確認する
curl -X GET "https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=[customer_id]" \
-H "accept: application/json" \
-H "apikey: [apikey]"
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => '[apikey]',
);
$client = new \GuzzleHttp\Client();
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=[customer_id]', array(
'headers' => $headers,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=[customer_id]")
headers = {
'Accept' => 'application/json',
'apikey' => '[apikey]'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
p res.body
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': '[apikey]'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=[customer_id]', headers=headers)
print(r.json())
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"[apikey]"},
}
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=[customer_id]", nil)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
fmt.Println(resp)
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
return
}
fmt.Println(string(body))
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'[apikey]'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=[customer_id]',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"items": [
{
"amount": 200000,
"balance": 100000,
"customer_examination_id": "6V9W-EMYN",
"customer_id": [customer_id],
"end_date": "2019-04-30",
"id": "7679-YW36",
"start_date": "2019-04-25",
"uri": "mfk:credit_facility:7679-YW36"
}
],
"object": "list",
"pagination": {
"end": "7679-YW36",
"has_next": false,
"has_previous": false,
"limit": 20,
"start": "7679-YW36",
"total": 1
}
}
与信枠一覧取得を利用します。 与信枠審査が通過した場合、与信枠が付与されます。 Step3ではマジックナンバーを利用して即時審査通過するように指定したため、与信枠審査申請後すぐに与信枠が付与されたことが確認できます。
Step5. 取引登録をする
Step5. 取引登録をする
curl -X POST "https://sandbox-api.mfkessai.co.jp/v2/transactions" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "apikey: [apikey]" \
-d '{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": [destination_id],
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}'
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => '[apikey]',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array(
"amount" => 5440,
"amounts_per_tax_rate_type" => array(
array(
"amount" => 2200,
"tax_rate_type" => "normal_10"
),
array(
"amount" => 3240,
"tax_rate_type" => "reduced_8"
)
),
"date" => "2019-04-10",
"destination_id" => "[destination_id]",
"due_date" => "2019-04-30",
"invoice_delivery_methods" => array(
"posting",
"email"
),
"issue_date" => "2019-04-20",
"number" => "Transaction-0001",
"transaction_details" => array(
array(
"amount" => 3000,
"description" => "商品名A",
"tax_included_type" => "excluded",
"tax_rate_type" => "normal_10",
"quantity" => 3,
"unit_price" => 1000
),
array(
"amount" => 3000,
"description" => "商品名B",
"tax_included_type" => "excluded",
"tax_rate_type" => "reduced_8",
"quantity" => 3,
"unit_price" => 1000
),
array(
"amount" => -1000,
"description" => "商品名A 返品",
"tax_included_type" => "excluded",
"tax_rate_type" => "normal_10",
"quantity" => 1,
"unit_price" => -1000
)
)
);
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/transactions', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/transactions")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => '[apikey]'
}
req = Net::HTTP::Post.new(uri, headers)
req.body='{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "[destination_id]",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
p res.body
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': '[apikey]'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/transactions', json={
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "[destination_id]",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type TransactionPayload struct {
Amount int `json:"amount"`
AmountsPerTaxRateType []AmountPerTaxRateType `json:"amounts_per_tax_rate_type"`
Date string `json:"date"`
DestinationID string `json:"destination_id"`
DueDate string `json:"due_date"`
InvoiceDeliveryMethods []string `json:"invoice_delivery_methods"`
IssueDate string `json:"issue_date"`
Number string `json:"number"`
TransactionDetails []TransactionDetail `json:"transaction_details"`
}
type AmountPerTaxRateType struct {
Amount int `json:"amount"`
TaxRateType string `json:"tax_rate_type"`
}
type TransactionDetail struct {
Amount int `json:"amount"`
Description string `json:"description"`
TaxIncludedType string `json:"tax_included_type"`
TaxRateType string `json:"tax_rate_type"`
Quantity int `json:"quantity"`
UnitPrice int `json:"unit_price"`
}
func main() {
headers := map[string][]string{
"Content-Type": {"application/json"},
"Accept": {"application/json"},
"apikey": {"[apikey]"},
}
payload, err := json.Marshal(TransactionPayload{
Amount: 5440,
AmountsPerTaxRateType: []AmountPerTaxRateType{
{
Amount: 2200,
TaxRateType: "normal_10",
},
{
Amount: 3240,
TaxRateType: "normal_8",
},
},
Date: "2019-04-10",
DestinationID: "[destination_id]",
DueDate: "2019-04-30",
InvoiceDeliveryMethods: []string{"posting", "email"},
IssueDate: "2019-04-20",
Number: "Transaction-0001",
TransactionDetails: []TransactionDetail{
{
Amount: 3000,
Description: "商品A",
TaxIncludedType: "excluded",
TaxRateType: "normal_10",
Quantity: 3,
UnitPrice: 1000,
},
{
Amount: 3000,
Description: "商品B",
TaxIncludedType: "excluded",
TaxRateType: "normal_8",
Quantity: 3,
UnitPrice: 1000,
},
{
Amount: -1000,
Description: "商品A 返品",
TaxIncludedType: "excluded",
TaxRateType: "normal_10",
Quantity: 1,
UnitPrice: -1000,
},
},
})
if err != nil {
// handle error
return
}
data := bytes.NewBuffer(payload)
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/transactions", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
fmt.Println(resp)
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
return
}
fmt.Println(string(body))
}
const fetch = require('node-fetch');
const inputBody = `{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "[destination_id]",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'[apikey]'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/transactions',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"billing_id": "[billing_id]",
"created_at": "2019-04-01T10:36:43+09:00",
"date": "2019-04-10",
"destination_id": "[destination_id]''",
"due_date": "2019-04-30",
"id": "[transaction_id]",
"invoice_delivery_method": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"object": "transaction",
"status": "passed",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": -1,
"unit_price": 1000
}
],
"uri": "mfk:transaction:[transaction_id]"
}
Step1で作成した顧客・請求先に対して取引登録をします。
date
, due_date
, issue_date
は現在時点で指定可能な日付に入れ替えてください。
Step6. 請求確認をする
Step6. 請求確認をする
curl -X GET "https://sandbox-api.mfkessai.co.jp/v2/billings/[billing_id]" \
-H "accept: application/json" \
-H "apikey: [apikey]"
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => '[apikey]',
);
$client = new \GuzzleHttp\Client();
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/billings/[billing_id]', array(
'headers' => $headers,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/billings/[billing_id]")
headers = {
'Accept' => 'application/json',
'apikey' => '[apikey]'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
p res.body
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': '[apikey]'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/billings/[billing_id]', headers=headers)
print(r.json())
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"[apikey]"},
}
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/billings/[billing_id]", nil)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
fmt.Println(resp)
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
return
}
fmt.Println(string(body))
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'[apikey]'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/billings/[billing_id]',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"customer_id": "[customer_id]",
"destination_id": "[destination_id]",
"due_date": "2019-04-30",
"id": "[billing_id]",
"invoice_delivery_method": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"object": "billing",
"status": "scheduled",
"uri": "mfk:billing:[billing_id]"
}
請求取得を利用します。
与信枠があるため、取引審査は即時通過し請求が作成されます。
Step5で登録した取引の billing_id
を利用して請求を確認します。
Object関連
Money Forward Kessai API内の各Objectの関連は下図のようになっています。
レシピ
ユースケースに応じた利用例をレシピとして紹介します。
- 自動与信枠審査を利用して与信枠を取得する
- 一時的な与信枠取得・増枠を行う
- 与信枠を利用して取引登録を行う
- アラートを持つ顧客に対して情報を集める
- 顧客番号を利用して取引登録をする
- 取引登録時に取引単位で審査を行う
審査型に応じて利用するAPIが異なりますので、以下の審査型と参考レシピの対応表もご確認ください。
審査型 | 概要 | 参考レシピ |
---|---|---|
【1】 与信枠審査 (毎月自動で付与) |
・取引前に事前に与信枠審査(毎月の枠) ・毎月〇万の枠を自動で付与 ・与信枠審査は即時~2営業日 ・取引登録前に残枠を確認して登録 ・付与された枠内であれば、取引審査は即時 |
・自動与信枠審査を利用して与信枠を取得する ・与信枠を利用して取引登録を行う |
【2】 一時与信枠審査 (取引ごとに手動で事前申請) |
・取引前に事前に与信枠審査(都度の枠) ・事前審査で期限付きの枠を付与 ・与信枠審査は即時~2営業日 ・取引登録前に残枠を確認して登録 ・付与された枠内であれば、取引審査は即時 |
・一時的な与信枠取得・増枠を行う ・与信枠を利用して取引登録を行う |
【3】 取引審査 (都度) |
・事前の与信枠審査不要 ・取引単位で審査を実施 ・取引審査は即時~2営業日 ・取引登録(≒ご注文後)の審査不通過あり |
・取引登録時に取引単位で審査を行う |
自動与信枠審査を利用して与信枠を取得する
自動与信枠審査機能をご利用の場合に与信枠を取得するまでの流れを説明します。
Step1. 顧客を登録する
Step1. 顧客を登録する
curl -X POST https://sandbox-api.mfkessai.co.jp/v2/customers \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY' \
-d `{
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"customer_examination": {
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"website": "https://mfkessai.co.jp"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}`
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '{
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"customer_examination": {
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"website": "https://mfkessai.co.jp"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}';
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/customers', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customers")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Post.new(uri, headers)
req.body='{
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"customer_examination": {
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"website": "https://mfkessai.co.jp"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/customers', params={
}, json={
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"customer_examination": {
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"website": "https://mfkessai.co.jp"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{`{
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"customer_examination": {
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"website": "https://mfkessai.co.jp"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}`})
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/customers", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const inputBody = `{
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"customer_examination": {
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"website": "https://mfkessai.co.jp"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customers',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"customer": {
"created_at": "2019-04-01T10:36:43+09:00",
"has_alert": false,
"id": "AY9N-VPN3",
"name": "サンプル顧客",
"number": "CUSTOEMR001",
"object": "customer",
"payment_method": {
"bank_transfer": {
"object": "bank_transfer",
"account_number": "123456789",
"bank_name": "MEKESSAI銀行",
"branch_name": "大手町支店",
"holder_name": "エムエフケツサイ(カ",
"type": "current"
},
"object": "payment_method"
},
"uri": "mfk:customer:7679-YW36"
},
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"created_at": "2019-04-01T10:36:43+09:00",
"customer_id": "AY9N-VPN3",
"department": "経理部",
"email": "[email protected]",
"id": "WNAV-37R6",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"object": "destination",
"tel": "03-1234-5678",
"title": "部長",
"uri": "mfk:destination:WNAV-37R6",
"zip_code": "111-1111"
}
}
顧客登録 POST: /customers
を利用します。
自動与信枠審査なので顧客登録するだけで自動的に月ごとの与信枠審査が申請されます。
まず登録時に与信枠が付与される月数分の与信枠審査申請が自動で行われます。それ以降の与信枠審査申請は月次で行われます。
顧客登録時に、与信枠審査に利用する情報をcustomer_examination
として入力することができます。ここではend_date
の指定は不要です。
情報が多いほど審査時間の短縮や精度の向上が見込まれるため、可能な限り入力することを推奨します。
与信額は基本的に売り手さまごとに一律となります。ここで、customer_examination.amount
を指定することで登録する顧客の与信額を指定することができます。
指定がない場合は売り手さまごとに一律の与信額で審査いたします。
この金額は今後新しく更新されて付与される与信枠にも適用されます。
一時的な増枠をご希望の際は、一時的な与信枠取得・増枠を行うをご利用ください。
Step2. 与信枠審査のステータスを確認する
Step2. 与信枠審査のステータスを確認する
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/customer_examinations?customer_id=AY9N-VPN3 \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/customer_examinations?customer_id=AY9N-VPN3', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customer_examinations?customer_id=AY9N-VPN3")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations?customer_id=AY9N-VPN3', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/customer_examinations?customer_id=AY9N-VPN3", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations?customer_id=AY9N-VPN3',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"items": [
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"created_at": "2019-04-18T10:20:34+09:00",
"customer_id": "AY9N-VPN3",
"email": "[email protected]",
"end_date": "2019-05-31",
"id": "9R6M-VMAN",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"start_date": "2019-05-01",
"status": "passed",
"tel": "03-1234-5678",
"uri": "mfk:customer_examination:9R6M-VMAN",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
},
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"created_at": "2019-04-18T10:20:34+09:00",
"customer_id": "AY9N-VPN3",
"email": "[email protected]",
"end_date": "2019-04-30",
"id": "7679-YW36",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"start_date": "2019-04-01",
"status": "passed",
"tel": "03-1234-5678",
"uri": "mfk:customer_examination:7679-YW36",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}
],
"object": "list",
"pagination": {
"end": "7679-YW36",
"has_next": false,
"has_previous": false,
"limit": 20,
"start": "9R6M-VMAN",
"total": 2
}
}
与信枠審査一覧取得 GET: /credit_facilities
を利用します。
登録した顧客の顧客IDを利用して、その顧客に対する与信枠審査を取得します。
審査が通過した場合、与信枠確認に進みます。
否決になった場合はMoney Forward Kessaiの否決時請求を利用するか、または別の支払方法・サービスの提供停止などを検討するが必要があります。
与信枠審査が否決になった場合も、取引審査を利用することは可能です。 しかしこの場合の取引審査通過率は低くなります。
Step3. 与信枠を確認する
Step3. 与信枠を確認する
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=AY9N-VPN3 \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=AY9N-VPN3', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=AY9N-VPN3")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
mport requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=AY9N-VPN3', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=AY9N-VPN3", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=AY9N-VPN3',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"items": [
{
"amount": 200000,
"balance": 100000,
"customer_examination_id": "9R6M-VMAN",
"customer_id": "9R6M-VMAN",
"end_date": "2019-05-31",
"id": "Y96E-WW6M",
"start_date": "2019-05-01",
"status": "inactive",
"uri": "mfk:credit_facility:Y96E-WW6M"
},
{
"amount": 200000,
"balance": 100000,
"customer_examination_id": "7679-YW36",
"customer_id": "9R6M-VMAN",
"end_date": "2019-04-30",
"id": "796R-G7NY",
"start_date": "2019-04-01",
"status": "inactive",
"uri": "mfk:credit_facility:796R-G7NY"
}
],
"object": "list",
"pagination": {
"end": "Y96E-WW6M",
"has_next": false,
"has_previous": false,
"limit": 20,
"start": "796R-G7NY",
"total": 2
}
}
与信枠一覧取得 GET: /credit_facilities
を利用します。
申請した金額と実際に付与される金額が違うケースが発生する可能性があるため、審査通過後に与信枠を確認します。 これは、Money Forward Kessaiの審査で与信額を下げて審査通過とする場合があるからです。
希望与信枠または許容範囲の金額・期間で付与されていたら、Money Forward Kessaiを利用した請求を行うという流れになります。
一時的な与信枠取得・増枠を行う
単発で発生する初期費用など、一時的に与信枠の取得・増枠が必要になった場合の利用について説明します。
ここで付与される与信枠は自動与信枠審査機能で付与される月ごとの与信枠ではなく、手動与信枠審査申請による与信枠になります。 与信枠取得方法によって与信枠の付与開始日が異なります。手動与信枠審査申請の場合、与信枠の開始日が審査通過日となります。一方、自動与信枠審査申請の場合は毎月初が開始日になります。
ここでは、事前に対象顧客の顧客登録は行われているものとします。
Step1. 与信枠審査登録をする
Step1. 与信枠審査登録をする
curl -X POST https://sandbox-api.mfkessai.co.jp/v2/customer_examinations \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY' \
-d `{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-05-31",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}`
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-05-31",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}';
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/customer_examinations', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customer_examinations")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Post.new(uri, headers)
req.body='{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-05-31",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations', params={
}, json={
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-05-31",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{`{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-05-31",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}`})
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/customer_examinations", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const inputBody = `{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-05-31",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"created_at": "2019-04-18T10:20:34+09:00",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-05-31",
"id": "WNAV-37R6",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"start_date": "",
"status": "passed",
"tel": "03-1234-5678",
"uri": "mfk:customer_examination:WNAV-37R6",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}
与信枠審査申請 POST: /customer_examinations
を利用します。
顧客を指定して与信枠審査を申請します。これは手動与信枠審査申請です。 自動与信枠審査申請を利用している売り手さまも利用可能です。
付与希望期間に既に与信枠がある場合、既存の与信枠は上書きされます。上書きされた与信枠は利用できなくなります。
※対象の顧客に審査中(ステータスがunexamined
)の与信枠審査がある場合は申請できません。
Step2. 与信枠審査のステータスを確認する
Step2. 与信枠審査のステータスを確認する
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/customer_examinations/WNAV-37R6 \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/customer_examinations/WNAV-37R6', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customer_examinations/WNAV-37R6")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations/WNAV-37R6', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/customer_examinations/WNAV-37R6", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations/WNAV-37R6',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"created_at": "2019-02-18T10:20:34+09:00",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-04-30",
"id": "WNAV-37R6",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"start_date": "2019-04-01",
"status": "passed",
"tel": "03-1234-5678",
"uri": "mfk:customer_examination:WNAV-37R6",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}
与信枠審査取得 GET: /customer_examinations/{customer_examination_id}
を利用します。
登録した与信枠審査IDを利用して、与信枠審査を取得しステータスを確認します。
Step3. 与信枠を確認する
Step3. 与信枠を確認する
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_examination_id=WNAV-37R6 \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_examination_id=WNAV-37R6', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_examination_id=WNAV-37R6")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_examination_id=WNAV-37R6', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_examination_id=WNAV-37R6", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_examination_id=WNAV-37R6',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"items": [
{
"amount": 20000,
"balance": 20000,
"customer_examination_id": "WNAV-37R6",
"customer_id": "9R6M-VMAN",
"end_date": "2019-04-30",
"id": "7679-YW36",
"start_date": "2019-02-18",
"status": "active",
"uri": "mfk:credit_facility:7679-YW36"
}
],
"object": "list",
"pagination": {
"end": "7679-YW36",
"has_next": false,
"has_previous": false,
"limit": 20,
"start": "7679-YW36",
"total": 1
}
}
与信枠一覧取得 GET: /credit_facilities
を利用します。
審査通過した場合、与信枠を確認します。この時対象の与信枠は与信枠審査IDを指定することで取得できます。 この際に付与される与信枠の開始日は審査通過日となります。
与信枠を利用して取引登録を行う
与信枠がある顧客に対して与信枠内で取引登録をする方法を説明します。
事前に与信枠を超過することがわかっている場合は、一時的な与信枠取得・増枠を行うで増枠を行うことを推奨します。 事前に増枠申請行われず与信枠を超過する取引登録がなされた場合には与信枠残高の消費は行われず、自動的に取引審査を行います。
Step1. 現在有効な与信枠を確認する
Step1. 現在有効な与信枠を確認する
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=9R6M-VMAN&start_date_to=2019-04-05&end_date_from=2019-04-05 \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=9R6M-VMAN&start_date_to=2019-04-05&end_date_from=2019-04-05', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=9R6M-VMAN&start_date_to=2019-04-05&end_date_from=2019-04-05")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=9R6M-VMAN&start_date_to=2019-04-05&end_date_from=2019-04-05', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=9R6M-VMAN&start_date_to=2019-04-05&end_date_from=2019-04-05", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/credit_facilities?customer_id=9R6M-VMAN&start_date_to=2019-04-05&end_date_from=2019-04-05',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"items": [
{
"amount": 20000,
"balance": 20000,
"customer_examination_id": "WNAV-37R6",
"customer_id": "9R6M-VMAN",
"end_date": "2019-04-30",
"id": "7679-YW36",
"start_date": "2019-04-01",
"status": "active",
"uri": "mfk:credit_facility:7679-YW36"
}
],
"object": "list",
"pagination": {
"end": "7679-YW36",
"has_next": false,
"has_previous": false,
"limit": 20,
"start": "7679-YW36",
"total": 1
}
}
与信枠一覧取得 GET: /credit_facilities
を利用します。
現在有効な与信枠を取得し、登録しようとしている取引が残高以下の金額であるかを確認します。
取引登録時点で有効な与信枠取得をするためには start_date_to={取引登録日}&end_date_from={取引登録日}
のようにパラメーターを指定します。
Step2. 取引を登録する
Step2. 取引を登録する
curl -X POST https://sandbox-api.mfkessai.co.jp/v2/transactions \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY' \
-d `{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}`
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}';
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/transactions', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/transactions")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Post.new(uri, headers)
req.body='{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/transactions', params={
}, json={
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{`{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}`})
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/transactions", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const inputBody = `{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/transactions',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"billing_id": "9R6M-VMAN",
"canceled_at": "2019-04-22T10:36:43+09:00",
"created_at": "2019-04-01T10:36:43+09:00",
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"id": "7679-YW36",
"invoice_delivery_method": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"object": "transaction",
"status": "passed",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": -1,
"unit_price": 1000
}
],
"uri": "mfk:transaction:7679-YW36"
}
取引登録 POST: /transactions
を利用します。
残高を確認したのち取引登録を行います。
与信枠残高以下の取引であれば審査通過となり、即時に結果が返却されます。 残高より取引金額が大きい場合、通常の取引審査を行うので与信審査の結果返却まで最長2営業日かかる場合があります。
Step3. 取引を確認する
Step3. 取引を確認する
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/transactions/7679-YW36 \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/transactions/7679-YW36', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/transactions/7679-YW36")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/transactions/7679-YW36', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/transactions/7679-YW36", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/transactions/7679-YW36',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"billing_id": "9R6M-VMAN",
"canceled_at": "2019-04-22T10:36:43+09:00",
"created_at": "2019-04-01T10:36:43+09:00",
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"id": "7679-YW36",
"invoice_delivery_method": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"object": "transaction",
"status": "passed",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": -1,
"unit_price": 1000
}
],
"uri": "mfk:transaction:7679-YW36"
}
取引取得 GET: /transactions/{transaction_id}
を利用します。
登録した取引の取引IDを指定して取引審査結果を確認します。 審査否決となった場合にはMoney Forward Kessaiを利用しない請求方法に切り替えるなどの対応が必要になります。
アラートを持つ顧客に対して情報を集める
自動与信枠審査機能をご利用の場合、請求に対する未入金などの理由で顧客の与信枠を更新できなくなった際に顧客に対してアラートがあがります。 アラートの理由に関する情報を取得する方法を説明します。
Step1. アラートありの顧客を確認
Step1. アラートありの顧客を確認
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/customers?has_alert=true \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/customers?has_alert=true', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customers?has_alert=true")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/customers?has_alert=true', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/customers?has_alert=true", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customers?has_alert=true',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"items": [
{
"created_at": "2019-01-01T10:36:43+09:00",
"has_alert": true,
"id": "7679-YW36",
"name": "サンプル顧客",
"number": "CUSTOEMR001",
"object": "customer",
"payment_method": {
"bank_transfer": {
"object": "bank_transfer",
"account_number": "123456789",
"bank_name": "MEKESSAI銀行",
"branch_name": "大手町支店",
"holder_name": "エムエフケツサイ(カ",
"type": "current"
},
"object": "payment_method"
},
"uri": "mfk:customer:7679-YW36"
}
],
"object": "list",
"pagination": {
"end": "7679-YW36",
"has_next": false,
"has_previous": false,
"limit": 20,
"start": "7679-YW36",
"total": 1
}
}
顧客一覧取得 GET: /customers
を利用します。
アラートが出ている顧客を取得します。ここで得られる顧客は未入金などが原因で次回の与信枠付与が停止されている顧客です。 現在付与されている与信枠はそのまま利用できます。
アラートがある顧客を絞り込むためにhas_alert=true
を指定します。
Step2. アラートありの顧客に未入金の請求がないか確認
Step2. アラートありの顧客に未入金の請求がないか確認
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/billings?customer_id=7679-YW36&unpaid=true \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/billings?customer_id=7679-YW36&unpaid=true', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/billings?customer_id=7679-YW36&unpaid=true")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/billings?customer_id=7679-YW36&unpaid=true', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/billings?customer_id=7679-YW36&unpaid=true", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/billings?customer_id=7679-YW36&unpaid=true',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"items": [
{
"amount": 21800,
"amounts_per_tax_rate_type": [
{
"amount": 11000,
"tax_rate_type": "normal_10"
},
{
"amount": 10800,
"tax_rate_type": "reduced_8"
}
],
"customer_id": "WNAV-37R6",
"destination_id": "7679-YW36",
"due_date": "2019-04-30",
"id": "9R6M-VMAN",
"invoice_delivery_method": [
"posting",
"email"
],
"issue_date": "2019-04-01",
"object": "billing",
"status": "scheduled",
"unpaid": {
"shortage_amount": 12000,
"updated_date": "2019-04-30"
},
"uri": "mfk:billing:9R6M-VMAN"
}
],
"object": "list",
"pagination": {
"end": "9R6M-VMAN",
"has_next": false,
"has_previous": false,
"limit": 20,
"start": "9R6M-VMAN",
"total": 1
}
}
請求一覧取得 GET: /billings
を利用します。
対象顧客に未入金の請求がある場合、未入金の請求情報を取得できます。
支払期限(due_date
)と未入金情報(unpaid
)を照らし合わせることで、遅延期間や不足金額を確認できます。
未入金の請求を絞り込むために unpaid=true
を指定します。
顧客番号を利用して取引登録をする
Money Forward Kessaiへ取引登録をする際に、請求先を指定します。 売り手さま側で請求先の管理を行っておらず請求先IDを保持していない場合、顧客番号から請求先IDを取得できます。
利用するEndpoint
Step1. 顧客に紐づく請求先取得
Step1. 顧客に紐づく請求先取得
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/destinations?customer_number=CUSTOMER_0001 \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/destinations?customer_number=CUSTOMER_0001', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/destination?customer_number=CUSTOMER_0001")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/destinations?customer_number=CUSTOMER_0001', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/destinations?customer_number=CUSTOMER_0001", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/destinations?customer_number=CUSTOMER_0001',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"items": [
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"created_at": "2019-04-01T10:36:43+09:00",
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"id": "WNAV-37R6",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"object": "destination",
"tel": "03-1234-5678",
"title": "部長",
"uri": "mfk:destination:WNAV-37R6",
"zip_code": "111-1111"
}
],
"object": "list",
"pagination": {
"end": "7679-YW36",
"has_next": true,
"has_previous": false,
"limit": 20,
"start": "9R6M-VMAN",
"total": 143
}
}
利用例: GET: /destinations?customer_number=CUSTOMER_0001
請求先を顧客番号で絞り込み取得します。請求対象の顧客に紐づく請求先一覧が取得できます。 取得した請求先リストから適切なものを選んでください。リストの順番は作成日降順になっていますので、先頭のものが最新の請求先です。
Step2. 取引登録
Step2. 取引登録
curl -X POST https://sandbox-api.mfkessai.co.jp/v2/transactions \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY' \
-d `{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}`
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}';
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/transactions', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/transactions")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Post.new(uri, headers)
req.body='{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/transactions', params={
}, json={
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{`{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}`})
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/transactions", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const inputBody = `{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/transactions',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"billing_id": "9R6M-VMAN",
"canceled_at": "2019-04-22T10:36:43+09:00",
"created_at": "2019-04-01T10:36:43+09:00",
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"id": "7679-YW36",
"invoice_delivery_method": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"object": "transaction",
"status": "passed",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": -1,
"unit_price": 1000
}
],
"uri": "mfk:transaction:7679-YW36"
}
利用例: POST: /transactions
取得した請求先のIDを利用して取引登録をします。
取引登録時に取引単位で審査を行う
与信枠の取得を行わずに取引登録をする流れを説明します。
この場合、事前の与信枠審査がない代わりに取引登録の都度、取引審査が行われます。
Step1. 顧客を登録する
Step1. 顧客を登録する
curl -X POST https://sandbox-api.mfkessai.co.jp/v2/customers \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY' \
-d `{
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}`
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '{
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}';
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/customers', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customers")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Post.new(uri, headers)
req.body='{
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/customers', params={
}, json={
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{`{
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}`})
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/customers", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const inputBody = `{
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"name": "サンプル顧客",
"number": "CUSTOMER0001"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customers',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"customer": {
"created_at": "2019-04-01T10:36:43+09:00",
"has_alert": false,
"id": "AY9N-VPN3",
"name": "サンプル顧客",
"number": "CUSTOEMR001",
"object": "customer",
"payment_method": {
"bank_transfer": {
"object": "bank_transfer",
"account_number": "123456789",
"bank_name": "MEKESSAI銀行",
"branch_name": "大手町支店",
"holder_name": "エムエフケツサイ(カ",
"type": "current"
},
"object": "payment_method"
},
"uri": "mfk:customer:7679-YW36"
},
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"created_at": "2019-04-01T10:36:43+09:00",
"customer_id": "AY9N-VPN3",
"department": "経理部",
"email": "[email protected]",
"id": "WNAV-37R6",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"object": "destination",
"tel": "03-1234-5678",
"title": "部長",
"uri": "mfk:destination:WNAV-37R6",
"zip_code": "111-1111"
}
}
顧客登録 POST: /customers
を利用します。
取引先の顧客を登録します。
ここでは与信枠を取得しない場合を想定してcustomer_examination
は入力しません。
Step2. 取引を登録する
Step2. 取引を登録する
curl -X POST https://sandbox-api.mfkessai.co.jp/v2/transactions \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY' \
-d `{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}`
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}';
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/transactions', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/transactions")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Post.new(uri, headers)
req.body='{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/transactions', params={
}, json={
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{`{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}`})
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/transactions", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const inputBody = `{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"invoice_delivery_methods": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 1,
"unit_price": -1000
}
]
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/transactions',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"billing_id": "9R6M-VMAN",
"canceled_at": "2019-04-22T10:36:43+09:00",
"created_at": "2019-04-01T10:36:43+09:00",
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"id": "7679-YW36",
"invoice_delivery_method": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"object": "transaction",
"status": "passed",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": -1,
"unit_price": 1000
}
],
"uri": "mfk:transaction:7679-YW36"
}
取引登録 POST: /transactions
を利用します。
顧客登録時のレスポンスにあるdestination_id
を使って取引を登録します。
取引単位で都度審査が実施されるため、即時〜2営業日かかります。
(与信枠を利用して取引登録を行う場合は、与信枠内であれば即時通過となります。)
Step3. 取引を確認する
Step3. 取引を確認する
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/transactions/7679-YW36 \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/transactions/7679-YW36', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/transactions/7679-YW36")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/transactions/7679-YW36', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/transactions/7679-YW36", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/transactions/7679-YW36',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
レスポンス
{
"amount": 5440,
"amounts_per_tax_rate_type": [
{
"amount": 2200,
"tax_rate_type": "normal_10"
},
{
"amount": 3240,
"tax_rate_type": "reduced_8"
}
],
"billing_id": "9R6M-VMAN",
"canceled_at": "2019-04-22T10:36:43+09:00",
"created_at": "2019-04-01T10:36:43+09:00",
"date": "2019-04-10",
"destination_id": "WNAV-37R6",
"due_date": "2019-04-30",
"id": "7679-YW36",
"invoice_delivery_method": [
"posting",
"email"
],
"issue_date": "2019-04-20",
"number": "Transaction-0001",
"object": "transaction",
"status": "passed",
"transaction_details": [
{
"amount": 3000,
"description": "商品名A",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": 3,
"unit_price": 1000
},
{
"amount": 3000,
"description": "商品名B",
"tax_included_type": "excluded",
"tax_rate_type": "reduced_8",
"quantity": 3,
"unit_price": 1000
},
{
"amount": -1000,
"description": "商品名A 返品",
"tax_included_type": "excluded",
"tax_rate_type": "normal_10",
"quantity": -1,
"unit_price": 1000
}
],
"uri": "mfk:transaction:7679-YW36"
}
取引取得 GET: /transactions/{transaction_id}
を利用します。
登録した取引の取引IDを指定して取引審査結果を確認します。 審査否決となった場合にはMoney Forward Kessaiを利用しない請求方法に切り替えるなどの対応が必要になります。
与信枠と審査
取引登録に先んじて顧客の与信枠を取得できます。 取引後に与信がとれず本サービスを利用した請求ができないなどのリスクを、与信枠を利用することで回避することができます。
与信枠
Money Forward Kessaiにおける与信枠は顧客(Customer
)に対して付与されます。
以下の2つの要素を持っています。
- 有効期間・・・対象の与信枠を利用して取引登録ができる期間
- 与信額・・・有効期間内に登録できる取引金額上限
与信枠の有効期間内・与信残高内での取引登録であれば、取引審査は即時通過します。
与信枠の有効期間内に取引登録をすると、与信枠を利用した取引審査が行われます。 取引金額が与信残高以下であれば取引審査は即時通過し、与信残高が消費されます。 取引金額が与信残高を超過していた場合は、通常の取引審査を行います。この時与信残高は消費されません。
また、同一顧客に対する各与信枠の有効期間が重なることはありません。ある時点で有効な与信枠は必ず一つになります。 ※具体例として、増枠申請のスケジュールを参照ください。
クレジットカードとの違い
クレジットカードの与信枠とは有効期間・与信残高の扱いにおいて違いがあります。
一般的なクレジットカードは事前に付与された一つの与信枠を利用します。 取引登録によって与信残高が消費され、後に支払いがなされると与信残高は支払われた金額分だけ回復する仕組みになっています。
一方でMoney Forward Kessaiの与信枠には期間ごとにそれぞれ独立した複数の与信枠となります。 取引登録によって対象期間の与信残高が消費されますが、別の期間の与信枠へは影響しません。 その代わり、支払いがなされても与信残高は戻りません。
Money Forward Kessai | クレジットカード | |
---|---|---|
期間 | ○ | × |
残高の回復 | × | ○ |
与信枠審査
Money Forward Kessaiでは与信枠審査を提供しております。 自動で毎月審査を行い与信枠を取得するサービスです。 ご利用されたい場合はお問い合わせください。お問い合わせ先: [email protected]
与信枠審査のご利用の有無によって、与信枠確保のための審査申請や与信枠のパターンが異なります。
与信枠審査ご利用の場合
与信枠申請(自動)
顧客登録(POST: /customers
)時に自動で与信枠審査申請を行います。また、与信枠の更新も自動で毎月行われます。
顧客登録から請求までの流れは下図のようになります。
この方法によって付与される与信枠は月ごとの有効期間をもちます。
ご契約前に当社と合意の上で以下の二点を決定します。
- 与信枠を付与する月数(基本2ヶ月)
- 希望与信金額の基本値(基本10万円)
この二点をもとに自動で与信枠審査申請を行います。 例えば、2ヶ月分・X円という設定下で3月中に顧客登録をした場合、下図のように与信枠が付与されます。
また、月次で新たに申請を行います。上記の設定下では4月中頃に 5/1~5/31・X円の与信枠審査申請を行います。
この審査が否決された場合、顧客にアラートがあがりcustomer.has_alert
というPropertyが true
に変わります。
アラートは今後の与信枠の更新が止まることを意味しています。
アラートはあくまで今後の付与の停止を意味するので、付与済みの与信枠については無効になることはありません。
特定の顧客との取引金額が他の顧客と大幅に異なる場合や、顧客ごとに取引金額がまちまちである場合には、顧客ごとに与信希望金額の基本値を指定していただくこともできます。
こちらは顧客登録時にcustomer_exmination.amount
の値にて指定できます。
与信枠申請(手動)
対象の顧客に与信枠がない場合、顧客登録とは別に、POST: /customer_examinations
を利用して手動で与信枠申請を行います。
この時希望取引登録期間終了日(end_date
)と希望与信額(amount
)を指定します。
例えば、~3/31・Y円で申請した場合、3/23に審査通過したとすると以下の与信枠が付与されます。
顧客アラートがtrue
となっている顧客に対して与信枠申請(手動)の審査が通過した場合、以下のようになります。
- 顧客アラートは
false
になる - 自動付与が再開される
- 停止中に自動付与されるはずだった期間にも与信枠が付与される
増枠申請
既に与信枠がある期間に対する与信枠審査申請は増枠申請になります。与信枠申請と同様にPOST: /customer_examinations
を利用します。
増枠審査が通過した場合、有効期限が重複している古い方の与信枠は上書きされ無効となります。
また、今後有効な与信枠についても増枠された金額が反映されます。
増枠による与信枠の有効期間が次回の与信枠付与期間を含んでいる場合は月次の与信枠申請(自動)はスキップされます。
顧客アラートがtrue
となっている顧客に対して増枠申請の審査が通過した場合、以下のようになります。
- 顧客アラートは
false
になる - 自動付与が再開される
- 付与済みの期間の与信枠も増枠される
- 停止中に自動付与されるはずだった期間にも与信枠が付与される
与信枠審査ご利用でない場合
与信枠審査をご利用でない場合も、一時的な与信枠の取得が可能です。
一時与信枠申請
対象の顧客に与信枠がない場合、顧客登録とは別に、POST: /customer_examinations
を利用して手動で一時与信枠申請を行います。
この時希望取引登録期間終了日(end_date
)と希望与信額(amount
)を指定します。
この方法によって付与される与信枠は審査通過日からこの時希望取引登録期間終了日までの有効期間を持ちます。
例えば、~5/31・Y円で申請した場合、3/23に審査通過したとすると以下の与信枠が付与されます。
増枠申請
既に与信枠がある期間に対する与信枠審査申請は増枠申請になります。一時与信枠申請と同様にPOST: /customer_examinations
を利用します。
増枠審査が通過した場合、有効期限が重複している古い方の与信枠は上書きされ無効となります。
税計算について
請求書に記載される税額の計算方法について説明します。
基本事項
まずMoney Forward Kessaiにおいて税率計算に関わる請求(billing)・取引(transaction)・取引明細(transaction_detail)の関係性について確認します。
これらは 請求>取引>取引明細
という親子関係になっています。
Money Forward Kessaiへは、取引単位でご登録いただきます。同じ顧客への同条件(請求先・支払期限・請求書発行日・取引登録方式が同一)の取引をまとめ、一つの請求書として発行しています。
税率種別毎の合計税込金額
"amounts_per_tax_rate_type": [
{
"amount": 11000, // 合計税込金額
"tax_rate_type": "normal_10" // 税率種別
},
{
"amount": 10800,
"tax_rate_type": "normal_8"
},
]
取引明細
"transaction_details": [
{
"amount": 10000, // 金額
"tax_rate_type": "normal_10", // 税率種別
"tax_included_type": "exclude", // 税込 or 税抜
...
},
{
"amount": 10800,
"tax_rate_type": "normal_8",
"tax_included_type": "include",
...
}
]
次に取引登録の際に必要な項目の中で税額計算に関連するものを確認します。 リクエスト中では右サンプルのようになります。
- 税率種別毎の合計税込金額 ※売り手さま側で計算した税込金額
- 合計税込金額
- 税率種別
- 取引明細
- 金額(税込 or 税抜)
- 税率種別
- 税込種別
「税率種別毎の合計税込金額」には、「取引明細から算出される税率種別毎の合計税込金額」を任意の方法で整数にまるめた値を利用します。 これらの差は1円未満である必要があります。
請求単位での税額計算
2019年10月より開始された軽減税率制度に伴い、Money Forward Kessaiでも軽減税率対応を行いました。 これにより、税額計算を請求単位で行うようになりました。
軽減税率制度下の請求書では以下が求められます。
- 税額を請求書毎に計算
- 税率種別毎の税額を記載
参考:
請求書毎に税額を計算する必要があるので取引単位では税額は決定されません。
Money Forward Kessaiへの取引登録では取引明細において税率種別(tax_rate_type)を指定します。 取引を請求書にまとめる際に、この税率種別を利用して税額を計算して記載しています。
請求での税額は、請求に含まれる取引の税率種別毎の合計金額を合算し、税率で割り戻して計算しております。 端数が出た場合は売り手毎の端数処理設定が適用されます。
この処理によって請求金額にずれは生じません。しかし一方で、「取引毎に計算した税額の合計」と「請求の税額」はずれる可能性がございます。
例えば、消費税の端数処理設定を四捨五入にしている場合は下図のように、「取引毎に計算した税額の合計」と「請求の税額」にずれが生じることがあります。
税込金額の整合性確認
請求金額が意図しない金額にならないために、取引登録時に税率種別毎の税込金額と取引明細の整合性を確認しています。
税込金額の整合性確認には具体的には以下の2つを比較しています。
- 取引明細の税率種別毎の税込合計金額 (transaction_detail.amountの税率毎の税込合計金額)
- 税率種別毎の税込合計金額 (amounts_per_tax_rate_typeの税率毎の金額)
※取引明細が税抜指定の場合(tax_included_type=excluded)は税率を乗じて税込金額を算出しています。
端数処理を考慮し、この2つの差が1円未満であるかを確認しています。
請求代行プランについて
請求代行プランにてAPIをご利用される場合、審査に係るものなど、いくつかの機能がご利用いただけません。 ご利用いただけない機能は以下の通りです。
- 取引審査
- 与信枠審査
オーソリゼーション
取引審査
請求条件
取引登録の際、請求条件 billing_condition に「審査通過のみ passed」を指定することができません。
何も指定しないか、「すべて請求 all」を指定してください。オーソリゼーションID
オーソリゼーション機能をご利用いただけないため何も指定せずフィールドごと省略してください。
オーソリゼーションを指定した場合でも審査はされず、債権譲渡もされません。
- 与信枠審査
顧客登録時の審査情報
顧客登録時に与信枠審査情報 customer_examination を付与できますが指定しても無視され与信枠審査は行われません。与信枠審査申請
与信枠申請および与信枠はご利用いただけないため、以下のエンドポイントで提供しているAPIはご利用いただけません。
■ 与信枠の申請 /customer_examinations
■ 与信枠の参照 /credit_facilities
■ オーソリゼーション /authorizations
よくあるご質問
Q.API v1からv2に変更するには手続き・契約更新などが必要でしょうか?
A.変更の際に必要な手続きや契約更新はありません。またAPIキーも共通でご利用いただけるので、新たにv2用のAPIキーを発行する必要もございません。
Q.自動与信枠審査申請が更新されるタイミングを教えて下さい。
A.前後する可能性もありますが、基本的に毎月15日~25日に対応しております。
Q.自動与信枠審査申請がされないケースはありますか?
A.基本的には未入金などの与信枠付与を継続できない状態であると判断した顧客に対して、アラートとして Customer.has_alert
をtrue
に設定しております。
このアラートを持つ顧客に関しましては与信枠の更新が行われません。
Q.自動与信枠審査申請を利用する場合に費用はかかりますか?
A.別途費用はかかりません。
Q.自動与信枠審査申請を停止することはできますか?
A.可能です。ご希望の際は、以下メールアドレスにお問い合わせください。
Q.与信枠審査にはどのくらい時間がかかりますか?
A.最大で2営業日いただいております。
Q.与信枠審査の結果はどのように取得できますか?
A.結果の取得にはいくつか方法がございます。
- WebHookによる通知を受け取る
GET: /customer_examinations
またはGET: /customer_examinations/{id}
から取得する- メール通知によって受け取る
※自動与信枠審査機能をご利用の場合、審査結果メールが送付されるのは初回時・付与停止通知時・増枠申請時のみとなり 通常の継続付与に際しては審査結果メールは送付されません。
Q.請求先の追加では審査されますか?
A.顧客に対する請求先追加では審査はいたしません。
Q.取引審査にはどのくらい時間がかかりますか?
A.最大で2営業日いただいております。与信枠をご利用の場合は金額が与信枠内であれば即時に結果が返却されます。
Q.Sandbox環境で顧客・取引審査結果を操作することはできますか?
A.可能です。詳しくは審査結果の操作を参照ください。
Q.与信枠がない・もしくは与信枠を超過する場合にも取引登録は可能ですか?
A.可能です。与信枠がない、または与信枠を超過する場合は取引審査となります。
Q.顧客と請求先の関係について教えて下さい。
A.顧客は取引先企業で、請求先は取引担当者という位置づけの親子関係になっており、顧客一件に対して請求先を複数件登録することができます。
Q.顧客登録時に請求先も登録されますか?
A.はい。POST: /customers
をご利用の場合、顧客登録時に請求先が一件のみ登録されます。
Q.顧客名を変更したいです。
A.顧客名変更申請登録 POST: /customer_name_updates
をご利用ください。
Q.登録済み取引の請求先を変更したいです。
A.請求書未発送の場合は、一度対象の取引をキャンセルしていただき、再度ご登録をお願いいたします。 請求書発送済みの場合は、請求書再発行時に修正後の請求先を指定してください。
Q.取引が請求にまとまる条件を教えて下さい。
A.以下の4つの条件が同一の取引が一つの請求にまとまります。
- 請求先
- 支払期限
- 請求書発行日
- 取引登録方式
取引登録方式には、取引登録時に税率を指定しない旧方式と軽減税率対応の新方式があります。 API v2を利用した取引登録では常に新方式となります。 一方で以下の方式で取引登録をいた場合は旧方式となります。
- API v1
- 管理画面の旧フォーム
- 旧フォーマットのCSV
Q.端数処理設定がAPIによる取引登録時も利用されますか。
A.利用されません。端数処理設定についてはこちらのサポートページをご覧ください。
Q.請求の送付方法の決定方法を教えて下さい。
A.同一の請求内で少なくとも1つの取引がその送付方法を指定していた場合は、その送付方法を利用して請求書を送付します。
例:取引①と取引②が同一の請求にまとまっている場合、取引登録時に指定した送付方法の組み合わせによって以下のようになります。
取引① | 取引② | 送付方法 |
---|---|---|
メール | メール | メール |
郵送 | 郵送 | 郵送 |
メール | 郵送 | メール・郵送 |
メール | メール・郵送 | メール・郵送 |
Q.Money Forward Kessaiから売り手さまへ振込後に取引キャンセルした場合、返金方法を教えて下さい。
A.Money Forward Kessaiから売り手さまへ振込後に取引キャンセルが発生した場合、次回の振込より控除いたしますので売り手様側でのご返金手続きは必要ございません。
Q.キャンセルした取引番号は使い回せますか?
A.ご利用いただけません。別途取引番号をご用意いただく必要があります。
Q.キャンセル期限はありますか?
A.キャンセル期限はありません。
Q.取引登録の締めはありますか?
A.取引登録の締めはございません。取引毎に請求書発行日をご指定いただければ、その日付に沿って請求書を発行いたします。
Q.特定の請求書フォーマットに対応できますか?
A.現在対応しておりません。
Q.買い手がMFK口座ではなく、売り手口座に誤って入金した場合はどうすればよいでしょうか?
A.ご登録いただいた取引をキャンセルしていただいています。
Q.メンテナンス時間はいつですか?
A.不定期メンテナンスを実施しています。実施の際は、事前に管理画面にご登録いただいているメールアドレス宛に実施内容及び対応方法を通知いたします。お客様にはご不便をおかけいたしますが、何卒ご了承ください。
移行ガイド
API v1 のサポート終了に伴い、スムーズにAPI v2へ移行するためのガイドです。
できなくなること
v1とv2の大きな違いとして以下があります。
- 請求先登録するためには事前に顧客登録が必要
- 取引登録するためには事前に請求先登録が必要
これにより次の操作が利用できなくなっています。
- 請求先追加時における顧客情報での顧客指定する
- 取引登録時における請求先情報での請求先指定する
- 取引登録時における顧客情報での顧客指定する
上記を利用していない場合はエンドポイント対応表をもとに、現在ご利用のエンドポイントをv2のものに置き換えることで移行可能です。
顧客情報での顧客指定とは?
v1のリクエストボディ例
{
"address1": "千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"customer": {
"office_name": "サンプル1株式会社",
"user_defined_id": "customer000001"
},
"department": "経理部",
"email": "[email protected]",
"name": "請求先氏名",
"name_kana": "セイキュウサキ シメイ",
"prefecture": "東京都",
"tel": "03-1234-5678",
"title": "",
"zip_code": "111-1111"
}
具体例は右記のようなリクエストで請求先追加を行っている場合です。
請求先登録API(POST: /v1/destinations
)のpayloadの中で customer_id
ではなくcustomer
を利用しています。
v2では customer
を利用した請求先登録はできません。
解決策
売り手さま側で顧客IDを保持している場合は、そちらの顧客IDを利用してください。
顧客IDを保持していない場合は、下記顧客IDがわからない場合を参照ください。
請求先情報での請求先指定とは?
v1のリクエストボディ例
{
"amount": 2160,
"date": "2019-05-14T00:00:00+09:00",
"destination": {
"address1": "千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"customer": {
"office_name": "サンプル1株式会社",
"user_defined_id": "customer000001"
},
"department": "経理部",
"email": "[email protected]",
"name": "請求先氏名",
"name_kana": "セイキュウサキ シメイ",
"prefecture": "東京都",
"tel": "03-1234-5678",
"title": "",
"zip_code": "111-1111"
},
"due_date": "2019-06-30T00:00:00+09:00",
"email_flag": true,
"issue_date": "2019-06-13T00:00:00+09:00",
"posting_flag": false,
"transaction_details": [
{
"amount": 2000,
"description": "商品名A",
"quantity": 2,
"unit_price": 1000
},
{
"amount": 160,
"description": "消費税",
"quantity": 1,
"unit_price": 160
}
],
"user_defined_id": "transaction00000001"
}
具体例は下記のようなリクエストで取引登録を行っている場合です。
請求先登録API(POST: /v1/transactions
)のpayloadの中で destination_id
ではなくdestination
を利用しています。
右の例では、destination
内の顧客指定でcustomer_id
ではなくcustomer
を利用しています。
v2では destination
を利用した取引登録はできません。
解決策
請求先IDを売り手さま側で保持している場合は、そちらの請求先IDを利用してください。
請求先IDを保持していない場合は、請求先IDがわからない場合を参照ください。
顧客IDがわからない場合
顧客一覧取得(GET: /v2/customers
)で顧客番号から顧客IDを取得できます。
クエリパラメータnumber
を指定することで、顧客番号により一致する顧客を一件取得できます。
※この時レスポンスは対象顧客一件だけが含まれる顧客リストとして返却されます。
請求先IDがわからない場合
[
{
"code": "already_exists",
"message": "destination already exists",
"param": "9R6M-VMAN"
}
]
請求先登録(POST: /v2/destinations
)を利用してください。
未登録の請求先の場合、登録された請求先が返却されますので、請求先IDが取得できます。
登録済みの請求先の場合エラーコード 409
が返却されます。
このエラーレスポンスのparam
から登録済みの請求先IDが取得できます。
エンドポイント対応表
操作 | v1 | v2 |
---|---|---|
顧客登録 | POST: /v1/destinations (POST: /v1/transactions) |
POST: /v2/customers |
請求先追加 | POST: /v1/destinations (POST: /v1/transactions) |
POST: /v2/destinations |
顧客一覧取得 | GET: /v1/customers | GET: /v2/customers |
顧客取得 | GET: /v1/customers/id | GET: /v2/customers/id |
与信枠審査申請 | POST: /v1/customers/id/customer_examinations | POST: /v2/customer_examinations |
顧客ごとの与信枠審査取得 | GET: /v1/customers/id/examination | GET: /v2/customer_examinations?customer_id=id (※1) |
顧客ごとの与信枠取得 | GET: /v1/customers/id/credit_facility | GET: /v2/credit_facilities?customer_id=id (※2) |
取引登録 | POST: /v1/transactions | POST: /v2/transactions |
取引一覧取得 | GET: /v1/transactions | GET: /v2/transactions |
取引取得 | GET: /v1/transactions/id | GET: /v2/transactions/id |
取引キャンセル | POST: /v1/transactions/id/cancel | DELETE: /v2/transactions/id |
事前審査登録 | POST: /v1/examinations | (※3) |
事前審査一覧取得 | GET: /v1/examinations | (※3) |
事前審査取得 | GET: /v1/examinations/id | (※3) |
事前審査を利用した取引登録 | POST: /v1/examinations/id/transaction | (※3) |
※1...v1では最新の与信枠審査一件のみの取得でしたが、v2では対象顧客に対する与信枠審査がすべて取得できます。
※2...v1では現在適用中の与信枠一件のみの取得でしたが、v2では対象顧客に対する与信枠がすべて取得できます。
※3...v2では事前審査系APIを提供しておりません。代替として与信枠審査をご利用ください。
バージョン
Money Forward Kessaiが提供しているAPIには現在 v1,v2が存在します。
本APIはv2であり、v1との互換性はありません。
但し、apikey
に関しては両APIで共通で利用できます。
新しいPropertyについて
機能改善により、既存のObjectに新たなPropertyが追加されることがあります。 Client側では未知のPropertyは無視するようにしてください。
提供終了について
提供が終了する予定のEndpoint、またはPropertyはDeprecated
と表示されます。
Deprecated
となっているEndpointまたはPropertyは将来削除予定のものなので、利用を控えてください。
Deprecated
である期間は1年間で、それを過ぎると提供終了します。
リリースについて
新機能や提供終了の連絡はリリースノートと売り手様向けのお知らせメールで行います。
定期的に確認するようにしてください。
リリースノート
新機能のリリースや機能改善・非推奨機能・機能削除の情報を随時更新していきます。
2024.07.30
新機能
- 顧客登録において、顧客与信枠審査に用いる情報を指定できるようになりました。
examinee
をご利用ください。
ドキュメントの修正
- 与信枠審査申請情報Objectにおいて、amountの説明を修正しました。
2024.02.08
新機能
- 口座振替依頼申請において、顧客IDを指定して口座振替依頼を申請することができるようになりました。
2023.09.12
新機能
- 顧客一覧取得において、顧客IDを複数指定して取得できるようになりました。
ids
をご利用ください。
2023.09.11
新機能
- 取引一覧取得において、指定された金額の範囲で取引を取得できるようになりました。
amount_from
,amount_to
をご利用ください。
2023.08.18
新機能
インボイスモード(取引単位)に対応した取引登録、請求取得ができるようになりました。
- 取引登録において、インボイスモード(取引単位)での登録時は取引登録情報Objectのamount、amounts_per_tax_rate_typeを必須項目として処理します。
- 区分記載請求書モードの場合、取引登録情報Objectのamount、amounts_per_tax_rate_typeはこれまで通り必須項目となります。
- インボイスモード(請求単位)の場合、取引登録情報Objectのamount、amounts_per_tax_rate_typeはこれまで通り任意項目となります。
- インボイスモード(取引単位)で作成した請求がインボイス請求一覧取得で取得できるようになりました。
- 区分記載請求書モードの請求一覧取得はこれまで通り請求一覧取得をご利用ください。
- インボイスモード(請求単位)の請求一覧取得はこれまで通りインボイス請求一覧取得をご利用ください。
- 単体の請求取得は区分記載請求書モード、インボイスモードともに請求取得をご利用ください。
ドキュメントの修正
- 取引Objectにおいて、amount、amounts_per_tax_rate_typeの説明を修正しました。
- 取引登録情報Objectにおいて、amount、amounts_per_tax_rate_typeの説明を修正しました。
2023.08.09
ドキュメントの修正
以下のエラーコードを追加しました
invalid_transaction_details_amount_total
2023.07.13
ドキュメントの修正
- 顧客名変更申請において、誤字の修正しました。
2023.07.12
新機能
- ファイルダウンロード機能をリリースしました。
- 発行済請求情報一覧取得を追加しました。
- ファイルダウンロード用URL発行を追加しました。
2023.06.15
新機能
- 顧客名変更申請キャンセルAPIをリリース
2023.04.19
変更
- 銀行振込Objectにおいて、以下のプロパティを追加しました。
- bank_code
- bank_name_kana
- branch_code
- branch_name_kana
2023.03.31
新機能
- 顧客名変更申請のWebHook通知機能をリリース
2023.01.31
新機能
インボイス(適格請求書)モードに対応した取引登録、請求取得ができるようになりました。
- 取引登録において、インボイスモードでの登録時は取引登録情報Objectのamount、amounts_per_tax_rate_typeを任意項目として処理するように変更しました。
- 区分記載請求書モードの場合、取引登録情報Objectのamount、amounts_per_tax_rate_typeはこれまで通り必須項目となります。
- インボイス(適格請求書)請求一覧取得を追加しました。
ドキュメント修正
- 請求一覧取得において、説明を追記しました。
- 請求取得において、説明を追記しました。
- 請求書・口座振替通知書兼請求書再発行において、説明を追記しました。
- 取引Objectにおいて、amount、amounts_per_tax_rate_typeの説明を修正しました。
- 取引登録情報Objectにおいて、amount、amounts_per_tax_rate_typeの説明を修正しました。
- 請求Objectにおいて、amount、amounts_per_tax_rate_type、statusの説明を修正しました。
2022.09.16
ドキュメント修正
以下のエラーコードの説明が欠損していたため追加しました。
seller_setting_required
invalid_credit_facility_status
invalid_transaction_multiple_inheritable_options
以下のエラーコードの説明に誤りがあったため修正しました。
invalid_customer_examination_amount
- 説明の上限値を修正しました。
invalid_destination_name
- 説明の最大値を修正しました。
2022.08.10
変更
取引登録時にcanceled_transaction_id
を指定した際に、その取引IDが与信枠に紐付いていない場合に、
エラーコードinvalid_canceled_transaction_not_related_to_credit_facility
を返していましたが、
このケースを許容するよう変更し、エラーコードを削除しました。
2021.12.07
新機能
- 請求先更新を追加しました。
2021.11.11
新機能
- 顧客名変更申請一覧取得を追加しました。
- 顧客名変更申請取得を追加しました。
2021.06.23
新機能
- 顧客を指定して、顧客名変更申請を登録できるようになりました。
- 顧客名変更申請登録を追加しました。
2021.06.21
新機能
- 請求を指定することで、請求書もしくは口座振替通知書兼請求書を再発行できるようになりました。
- 請求書・口座振替通知書兼請求書再発行を追加しました。
2021.06.01
新機能
- 取引登録時にキャンセル済み取引を指定することで、キャンセル済み取引の取得済み与信枠を利用できるようになりました。
2021.05.11
新機能
- 与信枠審査一覧取得において、
CustomerExamination
に申請理由type
を追加しました。 - 与信枠審査申請において、
CustomerExamination
に申請理由type
を追加しました。 - 与信枠審査取得において、
CustomerExamination
に申請理由type
を追加しました。 - 請求一覧取得において、
Billing
に請求書IDinvoice_ids
、口座振替通知書IDaccount_transfer_notification_ids
を追加しました。 - 請求取得において、
Billing
に請求書IDinvoice_ids
、口座振替通知書IDaccount_transfer_notification_ids
を追加しました。 - 請求一覧取得において、請求書ID、口座振替通知書IDで絞り込みができるようになりました。
invoice_id
,account_transfer_notification_id
をご利用ください。
- 請求取得において、請求書ID、口座振替通知書IDで絞り込みができるようになりました。
invoice_id
,account_transfer_notification_id
をご利用ください。
2021.04.26
新機能
- オーソリゼーション機能をリリースしました。
- オーソリゼーション一覧取得を追加しました。
- オーソリゼーション登録を追加しました。
- オーソリゼーション取得を追加しました。
- オーソリゼーションキャンセルを追加しました。
- 取引登録に
authorization_id
を追加しました。
2021.02.12
新機能
- 取引一覧取得において、
Transaction
に顧客IDcustomer_id
を追加しました。 - 取引登録において、
Transaction
に顧客IDcustomer_id
を追加しました。 - 取引取得において、
Transaction
に顧客IDcustomer_id
を追加しました。 - 取引キャンセルにおいて、
Transaction
に顧客IDcustomer_id
を追加しました。
変更
2020.12.18
新機能
- 取引一覧取得において、債権譲受された期間で絞り込みができるようになりました。
accepted_at_from
,accepted_at_to
をご利用ください。
- 取引一覧取得において、請求依頼を受領した期間で絞り込みができるようになりました。
billing_accepted_at_from
,billing_accepted_at_to
をご利用ください。
2020.12.04
2020.12.03
新機能
- 取引一覧取得において、キャンセルされた期間で絞り込みができるようになりました。
canceled_at_from
,canceled_at_to
をご利用ください。
- 取引に請求受領日時(
billing_accepted_at
)が追加されました。- 請求対象としてMoney Forward Kessaiが請求を受領した日時になります。※買い手さまが請求を受領した日時ではありません。
変更
- BETA版として提供されていたWebhookが正式版となりました。
2020.12.02
変更
2020.10.27
新機能
- 取引登録において、
TransactionPayload
に債権譲受日時accepted_at
を追加しました。
2020.09.30
新機能
- 取引登録において、
TransactionDetailPayload
にamount_str
,unit_price_str
,quantity_str
が追加されました。amount
,unit_price
,quantity
の代替として数値を文字列入力できます。
2020.04.21
変更
- 請求先登録におけるステータスコード
409
のalready_exists
エラーにおいて重複している請求先のIDがparam
として返却されるようになりました。
2020.04.03
新機能
- 振込先口座割り当てにて振込先口座を未割り当ての顧客に対して割り当てられるようになりました。
- 与信枠審査完了イベント通知WebHookにて顧客ID
customer_id
が取得できるようになりました。 - WebHook通知のリクエストHTTP Headerに
x-mfkessai-event-id
を追加しました。
2020.03.24
新機能
2020.03.09
新機能
債権譲渡の対象とならない取引についても請求対象とする機能を追加しました。
参考: プレスリリース
- 取引登録で請求条件
billing_condition
を指定して登録できるようになりました。- 請求条件指定について詳しくはこちらを御覧ください。
- 取引一覧取得で請求対象
billing
で検索できるようになりました。 - 取引Objectに請求対象
billing
・請求条件billing_condition
を追加しました。 - 振込Objectに以下の項目を追加しました。
- 回収金額
collected_amount
- 入金消込の解除による回収金額の返金額
deduction.canceled_reconciliation_amount
- 付随請求業務手数料とその内訳
deduction.billing_charge
- 回収金額
2020.02.05
変更
- 取引明細金額(
TransactionDetail.amount
)のバリデーションを修正
2020.01.27
新機能
2019.12.06
新機能
- 顧客更新
- 現在は顧客番号(
number
)のみ変更可能です。
- 現在は顧客番号(
2019.11.25
変更
- 請求先登録におけるバグを修正しました。
- 同一の情報をもつ請求先が存在する際に
200 OK
で返却してしまっていた。 409 Conflicted
が返却されるように修正しました。
- 同一の情報をもつ請求先が存在する際に
2019.11.14
新機能
- 請求書発行のWebHook通知機能をベータリリース
2019.11.06
新機能
- WebHook機能をベータリリース
- 与信枠審査結果通知
- 取引審査結果通知
変更
- 請求先担当者名カナの文字数制限を30文字から60文字に変更
2019.10.23
変更
- 取引一覧の絞り込み条件に顧客番号を追加 取引一覧取得
- 与信枠審査一覧の絞り込み条件に顧客番号を追加 与信枠審査一覧取得
- 与信枠一覧の絞り込み条件に顧客番号を追加 与信枠一覧取得
- 与信枠一覧の絞り込み条件に与信枠審査IDを追加 与信枠一覧取得
- Emailのチェック条件を強化
- その他細かいバグを修正
2019.09.26
変更
- クライアント生成時にレスポンス型が自動生成されるようswagger.yaml(json)においてレスポンスを定義
- 税率種別をクライアントで扱いやすいように
8
->normal_8
,10
->normal_10
に変更 - 顧客登録 (POST: /customers)において、同時登録された請求先もレスポンスで返却するように変更
- その他細かいバグを修正
2019.09.03
新機能
- 振込一覧取得 (GET: /payouts)
- 振込取得 (POST: /payouts)
- 振込債権一覧取得(GET: /payout_transactions)
- 振込債権取得(GET: /payout_transactions/{payout_transaction_id})
- 税率種別に対象外
inapplicable
を追加 - 取引明細の上限を500件に制限
2019.08.22
新機能
- 取引一覧取得 (GET: /transactions)
- 取引登録 (POST: /transactions)
- 取引取得 (GET: /transactions/{transaction_id})
- 取引キャンセル(DELETE: /transactions/{transaction_id})
- 請求一覧取得(GET: /billings)
- 請求取得(GET: /billings/{billing_id})
2019.07.23
新機能
- 顧客登録 (POST: /customers)
- 請求先登録(POST: /destinations)
- 与信枠審査一覧取得(GET: /customer_examinations)
- 与信枠審査申請(POST: /customer_examinations)
- 与信枠審査取得(GET: /customer_examinations/{customer_examination_id})
- 与信枠一覧取得(GET: /credit_facilities)
- 与信枠取得(GET: /credit_facilities/{credit_facility_id})
2019.06.25
新機能
- 顧客一覧取得 (GET: /customers)
- 顧客取得(GET: /customers/{customer_id})
- 請求先一覧取得(GET: /destinations)
- 請求先取得(GET: /destinations/{destination_id})
クライアント
本APIではAPIのインタフェース定義にOpenAPI Specification(以下OAS)を利用しています。 バージョンはSwaggerとして知られているOpenAPI2.0です。
OAS定義ファイルを利用して本APIのクライアントコードを生成できます。 コード生成ツールが以下のサイトにまとめられていますので、ご利用ください。
APIクライアントの生成
docker run --rm -v ${PWD}:/local openapitools/openapi-generator-cli generate \
-i https://developer.mfkessai.co.jp/docs/v2/swagger.yaml \
-g go \
-o /local/out/go
swagger.jsonを提供しておりますので、openapi-generatorをご利用いただくことで、APIクライアントを生成することができます。
openapi-generatorの導入方法、使い方はhttps://openapi-generator.tech/をご参照ください。 右はDockerを用いてGoクライアントを生成する例です。他の言語も同様に生成することができます。
ダウンロード
以下のリンクからswagger.yamlをダウンロードしてください。
認証
本APIではHTTP Headerを利用したapikey
方式で認可を行っています。
apikey
はお問い合わせ頂いた後にMoney Forward Kessai側で利用登録を行います。その後、管理画面上から発行・取得ができるようになります。
また、apikey
はAPIの旧バージョンであるv1
と共通で利用できます。既に発行済みの場合は、再度発行する必要はありません。
漏洩リスク
apikey
は漏洩リスクが高いため、安全に保管するようにしてください。
Github,Bitbucketなどのサードパーティーのホスティングサービスや、フロントエンドのコード内など、外部に公開される場所には絶対に置かないようにしてください。
利用方法
ヘッダー設定例
apikey: abcfc38888b419215612146c427f34637eb05e340e55b68664d81c37276357ba
API利用をご希望される売り手様は、Money Forward Kessaiへお問い合わせください。API利用登録を行います。
- APIキーページへ行き「新規発行」ボタンで
apikey
を発行してください。 ※本番URLはこちらです。本番APIキーページ - 発行された
apikey
をコピーしておいてください。 - 取得した
apikey
を利用して各Endpointへアクセスします。 HTTPヘッダーに右のように設定してください。
環境
本APIではProduction環境とテスト用のSandbox環境を提供しています。
環境名 | URL |
---|---|
Production | https://api.mfkessai.co.jp/v2/ |
Sandbox | https://sandbox-api.mfkessai.co.jp/v2/ |
Sandbox環境
Sandbox環境では一部機能が制限されています。 また、Sandbox環境ではテストのために審査結果などを指定することができます。
機能の制限
制限されている機能は以下の通りです。
- メール送信
- 請求書の郵送
- 振込
- 実際のデータを利用した与信審査
審査結果の操作
取引審査・与信枠審査などで特定の結果を指定してテストを行いたい場合、 Sandbox環境に限りマジックナンバーを利用して期待する結果を得ることができます。
取引審査
対象の取引の取引明細(TransactionDetailPayload
)のdescription
をすべて以下に示す結果と対応する文字列にすると、取引の審査結果を指定することができます。
参考:TransactionDetailPayload
結果 | 対応する文字列 |
---|---|
審査通過 | __passed__ |
審査否決 | __rejected__ |
未審査 | __unexamined__ |
与信枠審査
与信枠申請時に申請情報(CustomerExaminationPayload
)のremark
を以下に示す結果と対応する文字列にすると与信枠審査結果を指定することができます。
参考:CustomerExaminationPayload
また、与信枠審査利用されている場合、顧客登録時にの与信枠審査申請情報(CustomerPayload.customer_examination
)のremark
に対しても同様の文字列にすることで
自動で申請される与信枠申請の審査結果を指定することができます。
結果 | 対応する文字列 |
---|---|
審査通過 | __passed__ |
審査否決 | __rejected__ |
未審査 | __unexamined__ |
文字コードとデータ形式
文字コード
本APIではリクエスト/レスポンスともに文字コードとしてUTF-8
を使用しています。
他の文字コードでの利用はできません。
日時・日付
本APIでの日時・日付を表すデータ形式はRFC3339に準拠しています。
GET
メソッドを使用したエンドポイントで、URLにクエリとして含める場合にはURLエンコードしてください。+
はURLではスペースとして扱われてしまうので、%2B
とする必要があります。
データ型 | フォーマット | 凡例 |
---|---|---|
日時 | RFC3339 date-time |
2019-04-22T15:04:05+09:00 URLに含める場合 2019-04-22T15:04:05%2B09:00 |
日付 | RFC3339 full-date |
2019-04-22 |
小数
小数を表すデータ形式として小数点以下4桁までのdecimal型を利用しています。 小数点以下5桁以上の入力を行うとエラーが返却されます。
エラー
レスポンスコード
本APIは一般的なHTTPレスポンスコードを利用しています。
2xx
の範囲のステータスコードは正常処理を表します。
4xx
の範囲はリクエストのParameterなどの入力に起因するエラーで、リクエストが受付られない状態を表します。
5xx
の範囲はMoney Forward Kessai内部で正常に処理が行われなかった状態を表します。
ステータスコード | 内容 |
---|---|
200 - OK | 成功 |
400 - Bad Request | Parameterの不備などでリクエストを受付られない。 |
401 - Unauthorized | 認証・認可できない。apikey が不正である。 |
404 - Not Found | 指定したリソースが存在しない。 |
405 - Method Not Allowed | 不正なメソッドが利用された。 |
409 - Conflict | 作成しようとしたリソースが既に存在する。 |
412 - Precondition Failed | リソースへのアクセスが拒否された。 |
429 - Too Many Requests | レートリミットを超えてリクエストがされた。 |
499 - Client Canceled | クライアントが接続を遮断した。 |
500, 502, 503, 504 - Server Errors | Money Forward Kessai内で処理が正常に行われなかった。 |
タイムアウト
本APIはリクエストの処理時間が一定時間以上になった場合にTimeout
となることがあります。
指定したレスポンスを返しません。
エラー
レスポンス例
[
{
"code": "invalid_parameter",
"message": "parameter must be a valid one.",
"param": "9R6M-VMAN"
}
]
エラー発生時にはエラーレスポンスコードと共にエラーObjectを返却します。
項目 | 型 | 内容 |
---|---|---|
code |
string | エラーコード文字列。発生したエラーに対応したエラーコード。 |
message |
string | エラー発生原因に関する情報。 |
param |
string | 何らかの値に関するエラーの場合、その値がはいります。 |
エラーコード
4xx
の範囲のエラー時に返却されるエラーコードとその説明の一覧です。
unavailable_seller
現在ご利用できません。
param:-
seller_setting_required
売り手さまの初期設定が不足しています。担当者までお問い合わせください。
param:-
not_found
指定されたObjectが見つかりませんでした。
param:指定されたリソースのID
request_canceled
リクエストがキャンセルされました。処理が正常に完了していない可能性があります。
param:-
invalid_json_format
POSTデータのjsonが不正なフォーマットになっています。
param:-
invalid_after
ページネーションで指定されたafter
の値が不正です。after
は存在するリソースのIDで指定してください。
param:指定されたafter
の値
invalid_before
ページネーションで指定されたbefore
の値が不正です。before
は存在するリソースのIDで指定してください。
param:指定されたbefore
の値
invalid_limit
ページネーションで指定されたlimit
の値が不正です。limit
は1~200までの整数で指定してください。
param:指定されたlimit
の値
out_of_range_by_after
ページネーションで指定されたafter
の値が範囲外を指しています。
param:指定されたafter
の値
out_of_range_by_before
ページネーションで指定されたbefore
の値が範囲外を指しています。
param:指定されたbefore
の値
invalid_amount_per_tax_rate_type_amount
指定された各税率種別毎の合計金額amount
の値が不正です。
param:指定されたamount
の値
invalid_amount_per_tax_rate_type_tax_rate_type
指定された税率種別tax_rate_type
の値が不正です。取引明細に指定した税率種別をもつ明細が存在することも確認してください。
param:指定されたtax_rate_type
の値
invalid_created_at_from
指定されたcreated_at_from
の形式または値が不正です。例:2019-04-02T07:00:00+09:00
param:指定されたcreated_at_from
の値
invalid_created_at_to
指定されたcreated_at_to
の形式または値が不正です。例:2019-04-02T07:00:00+09:00
param:指定されたcreated_at_to
の値
invalid_canceled_at_from
指定されたcanceled_at_from
の形式または値が不正です。例:2019-04-02T07:00:00+09:00
param:指定されたcanceled_at_from
の値
invalid_canceled_at_to
指定されたcanceled_at_to
の形式または値が不正です。例:2019-04-02T07:00:00+09:00
param:指定されたcanceled_at_to
の値
invalid_accepted_at_from
指定されたaccepted_at_from
の形式または値が不正です。例:2019-04-02T07:00:00+09:00
param:指定されたaccepted_at_from
の値
invalid_accepted_at_to
指定されたaccepted_at_to
の形式または値が不正です。例:2019-04-02T07:00:00+09:00
param:指定されたaccepted_at_to
の値
invalid_account_transfer_notification_id
指定されたaccount_transfer_notification_id
の形式または値が不正です。例:GY9N-EWNM
param:指定されたaccount_transfer_notification_id
の値
invalid_authorization_amount
指定されたamount
の形式または値が不正です。
param:指定されたamount
の値
invalid_authorization_canceled
指定されたオーソリゼーションはキャンセル済みのため利用できません。
param:指定されたauthorization_id
の値
invalid_authorization_captured
指定されたオーソリゼーションは確定済みのため利用できません。
param:指定されたauthorization_id
の値
invalid_authorization_credit_facility_balance_shortage
指定されたオーソリゼーションは与信残高不足のため作成できません。
param:指定されたamount
の値
invalid_authorization_expired
指定されたオーソリゼーションは期限切れで利用できません。
param:指定されたauthorization_id
の値
invalid_authorization_id
指定されたauthorization_id
の形式または値が不正です。例:9R6M-VMAN
param:指定されたauthorization_id
の値
invalid_authorization_not_available
指定されたオーソリゼーションは利用できません。
param:指定されたauthorization_id
の値
invalid_authorization_not_found
指定されたオーソリゼーションがみつかりませんでした。
param:指定されたauthorization_id
の値
invalid_authorization_not_matched
指定されたauthorization_id
とdestination_id
の顧客が一致しません。
param:指定されたauthorization_id
の値
invalid_authorization_number
指定されたnumber
の形式または値が不正です。100字以内で指定してください。
param:指定されたnumber
の値
invalid_authorization_over_amount
指定されたamount
がオーソリゼーションの金額を超過しています。
param:指定されたauthorization_id
の値
invalid_authorization_over_due_date
指定されたdue_date
がオーソリゼーションのmax_due_date
を超過しています。
param:指定されたauthorization_id
の値
invalid_authorization_status
指定されたstatus
の形式または値が不正です。active
,expired
,captured
,canceled
から指定してください。
param:指定されたstatus
の値
invalid_billing_accepted_at_from
指定されたbilling_accepted_at_from
の形式または値が不正です。例:2019-04-02T07:00:00+09:00
param:指定されたbilling_accepted_at_from
の値
invalid_billing_accepted_at_to
指定されたbilling_accepted_at_to
の形式または値が不正です。例:2019-04-02T07:00:00+09:00
param:指定されたbilling_accepted_at_to
の値
invalid_canceled_transaction_already_used
指定されたキャンセル済み取引canceled_transaction_id
はすでに利用されています。
param:指定されたcanceled_transaction_id
の値
invalid_canceled_transaction_canceled_in_effective_period
指定されたキャンセル済み取引canceled_transaction_id
は消費した与信枠の有効期間中にキャンセルされています。
param:指定されたcanceled_transaction_id
の値
invalid_canceled_transaction_customer_not_matched
指定されたキャンセル済み取引canceled_transaction_id
の顧客と取引の顧客が一致しません。
param:指定されたcanceled_transaction_id
の値
invalid_canceled_transaction_expired
指定されたキャンセル済み取引canceled_transaction_id
は期限切れです。
param:指定されたcanceled_transaction_id
の値
invalid_canceled_transaction_id
指定されたキャンセル済み取引canceled_transaction_id
の形式または値が不正です。例:9R6M-VMAN
param:指定されたcanceled_transaction_id
の値
invalid_canceled_transaction_inherited
指定されたキャンセル済み取引canceled_transaction_id
は別のキャンセル済み取引の与信を利用して登録された取引です。
param:指定されたcanceled_transaction_id
の値
invalid_canceled_transaction_not_found
指定されたキャンセル済み取引canceled_transaction_id
は見つかりません。
param:指定されたcanceled_transaction_id
の値
invalid_canceled_transaction_not_accepted
指定されたキャンセル済み取引canceled_transaction_id
は債権譲渡されていません。
param:指定されたcanceled_transaction_id
の値
invalid_canceled_transaction_not_available
キャンセル済み取引を利用した取引登録は利用出来ません。
param:指定されたcanceled_transaction_id
の値
invalid_canceled_transaction_not_canceled
指定されたキャンセル済み取引canceled_transaction_id
はキャンセルされていません。
param:指定されたcanceled_transaction_id
の値
invalid_canceled_transaction_over_amount
指定された顧客名canceled_transaction_id
の金額を超過しています。
param:指定されたcanceled_transaction_id
の値
invalid_customer_name
指定された顧客名name
の値が不正です。1~50文字の文字列で指定してください。
param:指定されたname
の値
invalid_customer_number
指定された顧客番号number
の値が不正です。100文字以内の文字列で指定してください。
param:指定されたnumber
の値
invalid_customer_destination
指定された請求先情報destination
の値が不正です。
param:-
invalid_customer_has_alert
指定されたhas_alert
の値が不正です。アラートありtrue
またはアラートなしfalse
で指定してください。
param:指定されたhas_alert
の値
invalid_customer_id
指定されたcustomer_id
の形式または値が不正です。例:9R6M-VMAN
param:指定されたcustomer_id
の値
invalid_customer_ids
指定されたcustomer_id
が指定可能な件数を超えています。同時に指定するIDは200件以内にしてください。
param:指定されたids
の値
invalid_customer_payment_method
指定された支払方法payment_method
の値が不正です。口座振替account_transfer
または銀行振込bank_transfer
で指定してください。
param:指定されたpayment_method
の値
invalid_destination_address1
指定されたaddress1
の値が不正です。1~100文字の文字列で指定してください。
param:指定されたaddress1
の値
invalid_destination_address2
指定されたaddress1
の値が不正です。100文字以内の文字列で指定してください。
param:指定されたaddress2
の値
invalid_destination_cc_emails
指定されたcc_emails
の値が不正です。それぞれメールアドレス形式で指定し、4件以内としてください。
param:指定されたcc_emails
の値
invalid_destination_department
指定されたdepartment
の値が不正です。50字以内の文字列で指定してください。
param:指定されたdepartment
の値
invalid_destination_email
指定されたemail
の値が不正です。メールアドレス形式で指定してください。
param:指定されたemail
の値
invalid_destination_id
指定されたdestination_id
の形式または値が不正です。例:9R6M-VMAN
param:指定されたdestination_id
の値
invalid_destination_name
指定されたname
の値が不正です。30文字以内の文字列で指定してください。
param:指定されたname
の値
invalid_destination_name_kana
指定されたname_kana
の値が不正です。60文字以内のカタカナで指定してください。
param:指定されたname_kana
の値
invalid_destination_tel
指定されたtel
の値が不正です。有効な電話番号を指定してください。
param:指定されたtel
の値
invalid_destination_title
指定されたtitle
の値が不正です。30文字以内の文字列で指定してください。
param:指定されたtitle
の値
invalid_destination_zip_code
指定されたzip_code
の値が不正です。有効な郵便番号を指定してください。
param:指定されたzip_code
の値
invalid_customer_examination_amount
指定されたamount
の値が不正です。150,000,000円以下かつ現在適用中の与信額残高以上の金額を指定してください。
param:指定されたamount
の値
invalid_customer_examination_amount_with_balance
指定されたamount
の値が現在適用中の与信額残高以下になっています。150,000,000円以下かつ現在適用中の与信額残高よりも大きな金額を指定してください。
param:現在適用中の与信額残高balance
の値
invalid_customer_examination_business_description
指定されたbusiness_description
の値が不正です。500文字以下で指定してください。
param:指定されたbusiness_description
の値
invalid_customer_examination_business_type
指定されたbusiness_type
の値が不正です。個人事業主individual
, 法人corporate
のうちから指定してください。不明な場合は空で指定してください。
param:指定されたbusiness_type
の値
invalid_customer_examination_address1
指定されたaddress1
の値が不正です。1~100文字の文字列で指定してください。
param:指定されたaddress1
の値
invalid_customer_examination_address2
指定されたaddress1
の値が不正です。100文字以内の文字列で指定してください。
param:指定されたaddress2
の値
invalid_customer_examination_corporate_number
指定されたcorporate_number
の値が不正です。13文字の数字を文字列として指定してください。
param:指定されたcorporate_number
の値
invalid_customer_examination_email
指定されたemail
の値が不正です。メールアドレス形式で指定してください。
param:指定されたemail
の値
invalid_customer_examination_end_date
指定されたend_date
の値が不正です。利用可能な日付を指定してください。例:2019-04-30
param:有効な候補日のリスト
invalid_customer_examination_id
指定されたcustomer_examination_id
の形式または値が不正です。例:9R6M-VMAN
param:指定されたcustomer_examination_id
の値
invalid_customer_examination_remark
指定されたremark
の値が不正です。500文字以内で指定してください。
param:指定されたremark
の値
invalid_customer_examination_representative_name
指定されたrepresentative_name
の値が不正です。30文字以内で指定してください。
param:指定されたrepresentative_name
の値
invalid_customer_examination_status
指定されたstatus
の値が不正です。未審査unexamined
, 審査通過passed
, 審査否決rejected
のうちから指定してください。
param:指定されたstatus
の値
invalid_customer_examination_tel
指定されたtel
の値が不正です。有効な電話番号を指定してください。
param:指定されたtel
の値
invalid_customer_examination_website
指定されたwebsite
の値が不正です。500文字以内で有効なURLを指定してください。
param:指定されたwebsite
の値
invalid_customer_examination_zip_code
指定されたzip_code
の値が不正です。有効な郵便番号を指定してください。
param:指定されたzip_code
の値
invalid_credit_facility_status
指定されたstatus
の形式または値が不正です。expired
,active
,inactive
のから指定してください。
param:指定されたstatus
の値
invalid_credit_facility_end_date_from
指定されたend_date_from
の形式または値が不正です。日付形式で指定してください。例:2019-04-02
param:指定されたend_date_from
の値
invalid_credit_facility_end_date_to
指定されたend_date_to
の形式または値が不正です。日付形式で指定してください。例:2019-04-02
param:指定されたend_date_to
の値
invalid_credit_facility_id
指定されたcredit_facility_id
の形式または値が不正です。例:9R6M-VMAN
param:指定されたcredit_facility_id
の値
invalid_credit_facility_start_date_from
指定されたstart_date_from
の形式または値が不正です。日付形式で指定してください。例:2019-04-02
param:指定されたstart_date_from
の値
invalid_credit_facility_start_date_to
指定されたstart_date_to
の形式または値が不正です。日付形式で指定してください。例:2019-04-02
param:指定されたstart_date_to
の値
invalid_transaction_amount
指定されたamount
の値が不正です。1~2,147,483,647円の間で指定してください。
param:指定されたamount
の値
invalid_customer_name_update_name
指定されたname
の値が不正です。50字以内の文字列で指定してください。
param:指定されたname
の値
invalid_customer_name_update_reason
指定されたreason
の値が不正です。500文字以内の文字列で指定してください。
param:指定されたreason
の値
invalid_customer_name_update_under_examination
指定されたcustomer_id
は顧客名変更申請中です。
param:指定されたcustomer_id
の値
invalid_customer_name_update_id
指定されたcustomer_name_update_id
の形式または値が不正です。例:9R6M-VMAN
param:指定されたcustomer_name_update_id
の値
invalid_customer_name_update_not_found
指定された顧客名変更申請がみつかりませんでした。
param:指定されたcustomer_name_update_id
の値
invalid_customer_name_update_status
指定されたstatus
の形式または値が不正です。unexamined
,passed
,rejected
から指定してください
param:指定されたstatus
の値
invalid_invoice_id
指定されたinvoice_id
の形式または値が不正です。例:GY9N-EWNM
param:指定されたinvoice_id
の値
invalid_transaction_amounts_per_tax_rate_type
指定されたamounts_per_tax_rate_type
の値が不正です。
param:指定されたamounts_per_tax_rate_type
の値
invalid_transaction_billing
指定されたbilling
の値が不正です。請求対象true
, 請求対象外false
のいずれかで指定してください。
param:指定されたbilling
の値
invalid_transaction_billing_condition
指定されたbilling_condition
の値が不正です。審査結果に関わらずすべて請求するall
、審査通過の取引のみ請求するpassed
のいずれかで指定してください。
param:指定されたbilling_condition
の値
invalid_transaction_details
指定されたdetails
の値が不正です。
param:-
invalid_transaction_details_amount_total
取引明細の小計を合計した値が1未満です。
param:-
invalid_transaction_detail_amount
指定されたamount
の値が不正です。-2147483648~2147483647の間で小数点以下4桁以内の値を指定してください。また、単価×数量の値と一致するようにしてください。
param:指定されたamount
の値
invalid_transaction_detail_description
指定されたdescription
の値が不正です。1~250文字の文字列で指定してください。
param:指定されたdescription
の値
invalid_transaction_detail_quantity
指定されたquantity
の値が不正です。0~2147483647の間で小数点以下4桁以内の値を指定してください。
param:指定されたquantity
の値
invalid_transaction_detail_tax_included_type
指定されたtax_included_type
の値が不正です。税込included
, 税抜excluded
のうちから指定してください。
param:指定されたtax_included_type
の値
invalid_transaction_detail_tax_rate_type
指定されたtax_rate_type
の値が不正です。非課税non_taxable
、消費税8%normal_8
、消費税10%normal_10
、軽減税率8%reduced_8
、経過措置8%transitional_measures_8
、対象外inapplicable
のうちいずれかを指定してください。
param:指定されたtax_rate_type
の値
invalid_transaction_detail_unit_price
指定されたunit_price
の値が不正です。-2147483648~2147483647の間で小数点以下4桁以内の値を指定してください。
param:指定されたunit_price
の値
invalid_transaction_date
指定されたdate
の形式または値が不正です。日付形式で指定してください。例:2019-04-02
param:指定されたdate
の値
invalid_transaction_date_from
指定されたdate_from
の形式または値が不正です。日付形式で指定してください。例:2019-04-02
param:指定されたdate_from
の値
invalid_transaction_date_to
指定されたdate_to
の形式または値が不正です。日付形式で指定してください。例:2019-04-02
param:指定されたdate_to
の値
invalid_transaction_due_date
指定されたdue_date
の形式または値が不正です。日付形式で利用可能な日付を指定してください。例:2019-04-30
param:指定されたdue_date
の値
invalid_transaction_duplicate_invoice_delivery_method
指定されたinvoice_delivery_methods
で送付方法が重複しています。
param:重複している送付方法の値
invalid_transaction_invoice_delivery_methods
指定されたinvoice_delivery_methods
の値が不正です。
param:指定されたinvoice_delivery_methods
の値
invalid_transaction_issue_date
指定されたissue_date
の形式または値が不正です。日付形式で利用可能な日付を指定してください。例:2019-04-30
param:指定されたissue_date
の値
invalid_transaction_id
指定されたtransaction_id
の形式または値が不正です。例:9R6M-VMAN
param:指定されたtransaction_id
の値
invalid_transaction_multiple_inheritable_options
authorization_id
, canceled_transaction_id
は同時に指定できません。
param:指定されたnumber
の値
invalid_transaction_number
指定されたnumber
の値が不正です。1~100文字の文字列で指定してください。また、他の取引と重複しないようにしてください。
param:指定されたnumber
の値
invalid_transaction_status
指定されたstatus
の値が不正です。審査中unexamined
、審査通過passed
、審査否決rejected
、キャンセル済canceled
のいずれかで指定してください。
param:指定されたstatus
の値
not_cancelable_transaction_status
指定された取引はキャンセル不可の状態です。
param:指定されたtransaction_id
invalid_billing_due_date_from
指定されたdue_date_from
の形式または値が不正です。日付形式で指定してください。例:2019-04-02
param:指定されたdue_date_from
の値
invalid_billing_due_date_to
指定されたdue_date_to
の形式または値が不正です。日付形式で指定してください。例:2019-04-02
param:指定されたdue_date_to
の値
invalid_billing_id
指定されたbilling_id
の形式または値が不正です。例:9R6M-VMAN
param:指定されたbilling_id
の値
invalid_billing_issue_date_from
指定されたissue_date_from
の形式または値が不正です。日付形式で指定してください。例:2019-04-02
param:指定されたissue_date_from
の値
invalid_billing_issue_date_to
指定されたissue_date_to
の形式または値が不正です。日付形式で指定してください。例:2019-04-02
param:指定されたissue_date_to
の値
invalid_billing_unpaid
指定されたunpaid
の値が不正です。未入金ありtrue
, 未入金なしfalse
のいずれかで指定してください。
param:指定されたunpaid
の値
invalid_billing_status
指定されたstatus
の値が不正です。請求予定scheduled
、請求書発行済invoice_issued
、口座振替通知済account_transfer_notified
のいずれかで指定してください。
param:指定されたstatus
の値
invalid_payout_date_from
指定されたpayout_date_from
の形式または値が不正です。日付形式で指定してください。例:2019-04-02
param:指定されたpayout_date_from
の値
invalid_payout_date_to
指定されたpayout_date_to
の形式または値が不正です。日付形式で指定してください。例:2019-04-02
param:指定されたpayout_date_to
の値
invalid_payout_id
指定されたpayout_id
の形式または値が不正です。例:9R6M-VMAN
param:指定されたpayout_id
の値
invalid_payout_status
指定されたstatus
の値が不正です。振込手続中in_progress
、振込完了completed
のいずれかで指定してください。
param:指定されたstatus
の値
invalid_payout_transaction_id
指定されたpayout_transaction_id
の形式または値が不正です。例:9R6M-VMAN
param:指定されたpayout_transaction_id
の値
invalid_reissuing_billing_canceled
指定されたbilling_id
がキャンセルされています。
param:指定されたbilling_id
の値
invalid_reissuing_billing_not_issued
指定されたbilling_id
は発行済みではありません。既に請求書もしくは口座振替通知書兼請求書が発行されている請求を指定してください。
param:指定されたbilling_id
の値
invalid_reissuing_payload_customer_not_matched
指定されたdestination_id
の値が不正です。指定されたbilling_id
に紐づく顧客の請求先を指定してください。
param:指定されたdestination_id
の値
invalid_reissuing_payload_destination_not_found
指定されたdestination_id
の値が見つかりませんでした。
param:指定されたdestination_id
の値
invalid_reissuing_payload_duplicated_invoice_delivery_methods
指定されたinvoice_delivery_methods
の値が重複して指定されています。郵送posting
, メールemail
のうちから重複せずに指定してください。
param:指定されたinvoice_delivery_methods
の値
invalid_reissuing_payload_invoice_delivery_methods
指定されたinvoice_delivery_methods
の形式または値が不正です。郵送posting
, メールemail
のうちから指定してください。
param:指定されたinvoice_delivery_methods
の値
invalid_reissuing_unavailable
指定されたbilling_id
は発行中か再発行できない請求です。
param:指定されたbilling_id
の値
ページネーション
Cursor Based Paginationについて
本APIのページング方式はCursorBasedを採用しています。
ページ番号やoffsetを指定する方式ではなく、起点となるCursorであるafter
(本APIでは各ObjectのID)からlimit
の件数だけ取得する方式です。
before
は前ページの取得になります。after
とbefore
のどちらも指定された場合、before
が利用されます。
本APIではObjectの作成日時降順でObjectの一覧を返却しています。
ページネーションレスポンス
本APIではページネーションが発生するEndpointではlist
Objectが返却されます。この場合のlist
Objectには以下のobject
、items
、pagination
のPropertyが含まれます。
一部ページネーションが発生しないEndpointでもlist
Objectが返却されますが、この場合のlist
Objectには以下のobject
、items
のPropertyが含まれます。
ページネーションのあるEndpointのレスポンス
{
"object": "list",
"items": [
{
...
}
],
"pagination": {
"end": "7679-YW36",
"has_next": true,
"has_previous": true,
"limit": 20,
"start": "9R6M-VMAN",
"total": 143
}
}
項目名 | 内容 |
---|---|
object |
Objectのタイプ識別子。ここでは必ずlist が入ります。各Objectには必ずこのAttributeがあります。 |
items |
目的のObjectのリスト。array形式になっています。 |
pagination |
ページング情報が含まれるObjectです。 |
ページネーションObject
ページ繰り
次ページ
次ページのリクエスト例
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/customers?after=7679-YW36 \
-H 'Accept: application/json' \
-H 'apikey: [apikey]'
次のページを取得したい場合には、after
に pagination.end
の値を入れてリクエストします。
この時、after
で指定したObjectは次のページには含まれません。
また、pagination.has_next
がfalse
の場合に同じリクエストを行うと範囲外指定のエラー(out_of_range
)が返却されます。
前ページ
前ページのリクエスト例
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/customers?before=9R6M-VMAN \
-H 'Accept: application/json' \
-H 'apikey: [apikey]'
逆に前ページを取得したい場合には、before
にpagination.start
の値を入れてリクエストします。
ステータス
Objectの中にはステータスを持つものがあります。各ステータスがどのように遷移するのかを説明します。
与信枠審査
与信枠
取引
請求
振込
レートリミット
本APIではレートリミットを設定しています。 ある一定の頻度を超えてリクエストが行われた際には 単位時間あたりの利用回数を制限させていただく場合があります。
レートリミットを超えた場合には429 Too Many Requests
というエラーコードが返却されはじめます。
その際には利用頻度を抑えるようにしてください。
またこの時正しく処理は行われていないので、リトライするようにしてください。
Customer 顧客
Customer Object
Customer
{
"created_at": "2019-04-01T10:36:43+09:00",
"has_alert": false,
"id": "7679-YW36",
"name": "サンプル顧客",
"number": "CUSTOEMR001",
"object": "customer",
"payment_method": {
"bank_transfer": {
"object": "bank_transfer",
"account_number": "123456789",
"bank_name": "MEKESSAI銀行",
"branch_name": "大手町支店",
"holder_name": "マネ-フオワ-ドケツサイ(カ",
"type": "current"
},
"object": "payment_method"
},
"uri": "mfk:customer:7679-YW36"
}
顧客です。取引登録や与信枠取得などあらゆる機能を利用する起点となります。
Property
項目名 | 型 | 説明 |
---|---|---|
created_at | string(date-time) | 顧客が登録された日時を示します。 |
has_alert | boolean | アラートの有無を示します。アラートがある場合はtrue 、ない場合はfalse を返します。アラートがあると、自動で毎月付与されている与信枠が停止します。 |
id | string | 顧客IDです。 Money Forward Kessaiによって発番される一意の識別子です。 |
name | string | 顧客名です。 |
number | string | 顧客に付与できる任意の顧客番号です。自動で付与される顧客IDとは別に、売り手様が独自に管理する識別子を登録することができます。ただし、売り手様の管理される顧客間で一意でなければなりません。 |
object | string | このObjectの種別を示します。ここでは必ずcustomer が入ります。 |
payment_method | PaymentMethod | 顧客の支払方法です。口座振替(AccountTransfer )もしくは銀行振込(BankTransfer )のいずれかです。顧客の支払方法に応じたObjectが返却されます。 デフォルトでは銀行振込になっています。ただし、初回請求前には振込先口座が指定されていない場合があります。 口座振替に変更する場合には別途書面でのお手続きが必要であるため、サポートセンターへお問い合わせください。 |
uri | string | 顧客URIです。すべてのリソースで一意の識別子として自動で付与されます。 |
顧客一覧取得
コードサンプル
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/customers \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/customers', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customers")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/customers', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/customers", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customers',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/customers
顧客の一覧を取得することができます。顧客番号や支払方法、未入金の有無で絞り込んで取得することもできます。
QueryParameters
項目名 | 型 | 説明 |
---|---|---|
number | string | 任意の顧客の number を指定します。該当する顧客がいる場合、その一件のみが返却されます。 |
ids | array[string] | 任意の顧客の id を指定します。最大で200件まで指定できます。 複数指定する場合は?ids=ABCD-XXXX&ids=ABCD-YYYY のように指定してください。 |
payment_method | array[string] | 支払方法を指定します。該当する支払方法の顧客が返却されます。指定できる値は bank_transfer (銀行振込), account_transfer (口座振替)の2種類のみです。支払方法は複数指定することができます。 複数指定する場合は?payment_method=bank_transfer&payment_method=account_transfer のように指定してください。 値は以下のうちの一つになります。
|
has_alert | boolean | アラートの有無をboolean値で指定します。true の場合アラート有り、false の場合はアラート無しを表します。 |
created_at_from | string(date-time) | 指定された日時以降に作成された顧客を取得します。指定された日時に作成されたものも含まれます。 RFC3339のdate-time (2019-04-01T10:36:43%2B09:00)で指定してください。 |
created_at_to | string(date-time) | 指定された日時以前に作成された顧客を取得します。指定された日時に作成されたものも含まれます。 RFC3339のdate-time (2019-04-01T10:36:43%2B09:00)で指定してください。 |
after | string | 任意のリソースIDを指定します。追加日時の降順でこのIDのリソースよりも後のリソースを取得します。この時after で指定したIDのリソースは結果に含まれません。 |
before | string | 任意のリソースIDを指定します。追加日時の降順でこのIDのリソースよりも前のリソースを取得します。この時before で指定したIDのリソースは結果に含まれません。 |
limit | integer(int32) | 取得したいリソースの最大件数を指定します。1~200の間の整数で指定してください。指定がない場合は20になります。 |
レスポンス例
200 Response
{
"items": [
{
"created_at": "2019-04-01T10:36:43+09:00",
"has_alert": false,
"id": "7679-YW36",
"name": "サンプル顧客",
"number": "CUSTOEMR001",
"object": "customer",
"payment_method": {
"bank_transfer": {
"object": "bank_transfer",
"account_number": "123456789",
"bank_name": "MEKESSAI銀行",
"branch_name": "大手町支店",
"holder_name": "マネ-フオワ-ドケツサイ(カ",
"type": "current"
},
"object": "payment_method"
},
"uri": "mfk:customer:7679-YW36"
}
],
"object": "list",
"pagination": {
"end": "7679-YW36",
"has_next": true,
"has_previous": false,
"limit": 20,
"start": "9R6M-VMAN",
"total": 143
}
}
Responses
ステータス | 説明 |
---|---|
200 | 顧客一覧とページネーション情報です。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
items | [Customer] | 条件に該当する顧客の一覧です。 |
object | string | このObjectの種別を示します。ここでは必ず list が設定されます。 |
pagination | Pagination | ページネーション情報です。各Objectの一覧取得の際にリストとともに返却されます。この情報をもとにページ繰りを行うことができます。 |
顧客登録
コードサンプル
curl -X POST https://sandbox-api.mfkessai.co.jp/v2/customers \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY' \
-d `{
"name": "サンプル顧客",
"number": "CUSTOMER0001",
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"customer_examination": {
"amount": 20000,
"initial_amount": 50000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"website": "https://mfkessai.co.jp",
"examinee": {
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"email": "[email protected]",
"tel": "03-1234-5678"
}
}
}`
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '{
"name": "サンプル顧客",
"number": "CUSTOMER0001",
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"customer_examination": {
"amount": 20000,
"initial_amount": 50000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"website": "https://mfkessai.co.jp",
"examinee": {
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"email": "[email protected]",
"tel": "03-1234-5678"
}
}
}';
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/customers', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customers")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Post.new(uri, headers)
req.body='{
"name": "サンプル顧客",
"number": "CUSTOMER0001",
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"customer_examination": {
"amount": 20000,
"initial_amount": 50000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"website": "https://mfkessai.co.jp",
"examinee": {
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"email": "[email protected]",
"tel": "03-1234-5678"
}
}
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/customers', params={
}, json={
"name": "サンプル顧客",
"number": "CUSTOMER0001",
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"customer_examination": {
"amount": 20000,
"initial_amount": 50000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"website": "https://mfkessai.co.jp",
"examinee": {
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"email": "[email protected]",
"tel": "03-1234-5678"
}
}
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{`{
"name": "サンプル顧客",
"number": "CUSTOMER0001",
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"customer_examination": {
"amount": 20000,
"initial_amount": 50000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"website": "https://mfkessai.co.jp",
"examinee": {
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"email": "[email protected]",
"tel": "03-1234-5678"
}
}
}`})
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/customers", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const inputBody = `{
"name": "サンプル顧客",
"number": "CUSTOMER0001",
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"customer_examination": {
"amount": 20000,
"initial_amount": 50000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"website": "https://mfkessai.co.jp",
"examinee": {
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"email": "[email protected]",
"tel": "03-1234-5678"
}
}
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customers',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/customers
顧客を登録することができます。顧客には必ず一つの請求先が必要であるため同時に請求先一件も登録します。
Body parameter
{
"name": "サンプル顧客",
"number": "CUSTOMER0001",
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
},
"customer_examination": {
"amount": 20000,
"initial_amount": 50000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"website": "https://mfkessai.co.jp",
"examinee": {
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"email": "[email protected]",
"tel": "03-1234-5678"
}
}
}
BodyParameters
項目名 | 型 | 説明 |
---|---|---|
body required |
CustomerPayload | 顧客登録情報です。請求先情報も含まれています。 |
レスポンス例
200 Response
{
"customer": {
"created_at": "2019-04-01T10:36:43+09:00",
"has_alert": false,
"id": "7679-YW36",
"name": "サンプル顧客",
"number": "CUSTOEMR001",
"object": "customer",
"payment_method": {
"bank_transfer": {
"object": "bank_transfer",
"account_number": "123456789",
"bank_name": "MEKESSAI銀行",
"branch_name": "大手町支店",
"holder_name": "マネ-フオワ-ドケツサイ(カ",
"type": "current"
},
"object": "payment_method"
},
"uri": "mfk:customer:7679-YW36"
},
"destination": {
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"created_at": "2019-04-01T10:36:43+09:00",
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"id": "WNAV-37R6",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"object": "destination",
"tel": "03-1234-5678",
"title": "部長",
"uri": "mfk:destination:WNAV-37R6",
"zip_code": "111-1111"
}
}
Responses
ステータス | 説明 |
---|---|
200 | 作成された顧客が返却されます。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
409 | 登録しようとした顧客と一致する顧客が既に登録されている場合のエラーです。指定したnumber や、その他住所・電話番号などが既に登録済みでないか確認してください。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
customer | Customer | 顧客です。取引登録や与信枠取得などあらゆる機能を利用する起点となります。 |
destination | Destination | 請求先です。一つの顧客に対して複数作成することができます。請求先の情報を利用して請求書送付を行います。 請求書の印字との対照についてはサポートページを確認してください。 |
顧客取得
コードサンプル
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id} \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/customers/{customer_id}
顧客IDを指定して対象顧客1件を取得することができます。
PathParameters
項目名 | 型 | 説明 |
---|---|---|
customer_id required |
string | 対象の顧客IDを指定してください。 |
レスポンス例
200 Response
{
"created_at": "2019-04-01T10:36:43+09:00",
"has_alert": false,
"id": "7679-YW36",
"name": "サンプル顧客",
"number": "CUSTOEMR001",
"object": "customer",
"payment_method": {
"bank_transfer": {
"object": "bank_transfer",
"account_number": "123456789",
"bank_name": "MEKESSAI銀行",
"branch_name": "大手町支店",
"holder_name": "マネ-フオワ-ドケツサイ(カ",
"type": "current"
},
"object": "payment_method"
},
"uri": "mfk:customer:7679-YW36"
}
Responses
ステータス | 説明 |
---|---|
200 | 指定した顧客が返却されます。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
404 | 顧客IDで指定した顧客が存在しない場合のエラーです。Errorのparamには指定した顧客IDが入ります。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
created_at | string(date-time) | 顧客が登録された日時を示します。 |
has_alert | boolean | アラートの有無を示します。アラートがある場合はtrue 、ない場合はfalse を返します。アラートがあると、自動で毎月付与されている与信枠が停止します。 |
id | string | 顧客IDです。 Money Forward Kessaiによって発番される一意の識別子です。 |
name | string | 顧客名です。 |
number | string | 顧客に付与できる任意の顧客番号です。自動で付与される顧客IDとは別に、売り手様が独自に管理する識別子を登録することができます。ただし、売り手様の管理される顧客間で一意でなければなりません。 |
object | string | このObjectの種別を示します。ここでは必ずcustomer が入ります。 |
payment_method | PaymentMethod | 顧客の支払方法です。口座振替(AccountTransfer )もしくは銀行振込(BankTransfer )のいずれかです。顧客の支払方法に応じたObjectが返却されます。 デフォルトでは銀行振込になっています。ただし、初回請求前には振込先口座が指定されていない場合があります。 口座振替に変更する場合には別途書面でのお手続きが必要であるため、サポートセンターへお問い合わせください。 |
uri | string | 顧客URIです。すべてのリソースで一意の識別子として自動で付与されます。 |
顧客更新
コードサンプル
curl -X PATCH https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY' \
-d `{
"number": "CUSTOMER0001"
}`
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '{
"number": "CUSTOMER0001"
}';
try {
$response = $client->request('PATCH','https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Patch.new(uri, headers)
req.body='{
"number": "CUSTOMER0001"
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.patch('https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}', params={
}, json={
"number": "CUSTOMER0001"
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{`{
"number": "CUSTOMER0001"
}`})
req, err := http.NewRequest("PATCH", "https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const inputBody = `{
"number": "CUSTOMER0001"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}',
{
method: 'PATCH',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/customers/{customer_id}
顧客の情報を更新することができます。
Body parameter
{
"number": "CUSTOMER0001"
}
PathParameters
項目名 | 型 | 説明 |
---|---|---|
customer_id required |
string | 対象の顧客IDを指定してください。 |
BodyParameters
項目名 | 型 | 説明 |
---|---|---|
body required |
CustomerUpdatePayload | 顧客更新情報です。 |
レスポンス例
200 Response
{
"created_at": "2019-04-01T10:36:43+09:00",
"has_alert": false,
"id": "7679-YW36",
"name": "サンプル顧客",
"number": "CUSTOEMR001",
"object": "customer",
"payment_method": {
"bank_transfer": {
"object": "bank_transfer",
"account_number": "123456789",
"bank_name": "MEKESSAI銀行",
"branch_name": "大手町支店",
"holder_name": "マネ-フオワ-ドケツサイ(カ",
"type": "current"
},
"object": "payment_method"
},
"uri": "mfk:customer:7679-YW36"
}
Responses
ステータス | 説明 |
---|---|
200 | 更新した顧客が返却されます。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
404 | 顧客IDで指定した顧客が存在しない場合のエラーです。Errorのparamには指定した顧客IDが入ります。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
created_at | string(date-time) | 顧客が登録された日時を示します。 |
has_alert | boolean | アラートの有無を示します。アラートがある場合はtrue 、ない場合はfalse を返します。アラートがあると、自動で毎月付与されている与信枠が停止します。 |
id | string | 顧客IDです。 Money Forward Kessaiによって発番される一意の識別子です。 |
name | string | 顧客名です。 |
number | string | 顧客に付与できる任意の顧客番号です。自動で付与される顧客IDとは別に、売り手様が独自に管理する識別子を登録することができます。ただし、売り手様の管理される顧客間で一意でなければなりません。 |
object | string | このObjectの種別を示します。ここでは必ずcustomer が入ります。 |
payment_method | PaymentMethod | 顧客の支払方法です。口座振替(AccountTransfer )もしくは銀行振込(BankTransfer )のいずれかです。顧客の支払方法に応じたObjectが返却されます。 デフォルトでは銀行振込になっています。ただし、初回請求前には振込先口座が指定されていない場合があります。 口座振替に変更する場合には別途書面でのお手続きが必要であるため、サポートセンターへお問い合わせください。 |
uri | string | 顧客URIです。すべてのリソースで一意の識別子として自動で付与されます。 |
振込先口座割り当て
コードサンプル
curl -X POST https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}/bank_transfer \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}/bank_transfer', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}/bank_transfer")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Post.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}/bank_transfer', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}/bank_transfer", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}/bank_transfer',
{
method: 'POST',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/customers/{customer_id}/bank_transfer
対象顧客1件に振込先口座番号を未割り当ての場合、割り当てます。
PathParameters
項目名 | 型 | 説明 |
---|---|---|
customer_id required |
string | 対象の顧客IDを指定してください。 |
レスポンス例
200 Response
{
"account_number": "12345678",
"bank_code": "0001",
"bank_name": "MFKESSSAI銀行",
"bank_name_kana": "エムエフケツサイ",
"branch_code": "001",
"branch_name": "大手町支店",
"branch_name_kana": "オオテマチ",
"object": "bank_transfer",
"type": "current",
"holder_name": "マネ-フオワ-ドケツサイ(カ"
}
Responses
ステータス | 説明 |
---|---|
200 | 割り当てられた振込先口座情報が返却されます。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
404 | 顧客IDで指定した顧客が存在しない場合のエラーです。Errorのparamには指定した顧客IDが入ります。 |
409 | 振込先口座を割り当てようとした顧客がすでに割り当て済みの場合のエラーです。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
account_number | string | 振込先口座番号です。未割当の場合は空で返却されます。 |
bank_code | string | 振込先銀行コードです。未割当の場合は空で返却されます。 |
bank_name | string | 振込先銀行名です。未割当の場合は空で返却されます。 |
bank_name_kana | string | 振込先銀行名フリガナです。未割当の場合は空で返却されます。 |
branch_code | string | 振込先銀行支店コードです。未割当の場合は空で返却されます。 |
branch_name | string | 振込先銀行支店名です。未割当の場合は空で返却されます。 |
branch_name_kana | string | 振込先銀行支店名フリガナです。未割当の場合は空で返却されます。 |
object | string | このObjectの種別を示します。ここでは必ずbank_transfer が入ります。 |
type | string | 振込先口座種別です。current (当座)、saving (普通)の2種類のうちどちらかになります。未割当の場合は空で返却されます。 値は以下のうちの一つになります。
|
holder_name | string | 振込先口座名義です。必ずマネ-フオワ-ドケツサイ(カ になります。未割当の場合は空で返却されます。 |
口座振替依頼申請
コードサンプル
curl -X POST https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}/account_transfer_request \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY' \
-d `{
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"department": "経理部",
"title": "部長",
"name": "担当 太郎",
"tel": "03-1234-5678",
"email": "[email protected]"
}`
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '{
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"department": "経理部",
"title": "部長",
"name": "担当 太郎",
"tel": "03-1234-5678",
"email": "[email protected]"
}';
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}/account_transfer_request', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}/account_transfer_request")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Post.new(uri, headers)
req.body='{
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"department": "経理部",
"title": "部長",
"name": "担当 太郎",
"tel": "03-1234-5678",
"email": "[email protected]"
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}/account_transfer_request', params={
}, json={
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"department": "経理部",
"title": "部長",
"name": "担当 太郎",
"tel": "03-1234-5678",
"email": "[email protected]"
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{`{
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"department": "経理部",
"title": "部長",
"name": "担当 太郎",
"tel": "03-1234-5678",
"email": "[email protected]"
}`})
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}/account_transfer_request", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const inputBody = `{
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"department": "経理部",
"title": "部長",
"name": "担当 太郎",
"tel": "03-1234-5678",
"email": "[email protected]"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customers/{customer_id}/account_transfer_request',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/customers/{customer_id}/account_transfer_request
顧客IDを指定して、口座振替依頼を申請することができます。弊社から顧客に口座振替依頼に必要な書類を送付 (無料) します。
Body parameter
{
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"department": "経理部",
"title": "部長",
"name": "担当 太郎",
"tel": "03-1234-5678",
"email": "[email protected]"
}
PathParameters
項目名 | 型 | 説明 |
---|---|---|
customer_id required |
string | 対象の顧客IDを指定してください。 |
BodyParameters
項目名 | 型 | 説明 |
---|---|---|
body required |
AccountTransferRequestPayload | 口座振替依頼申請に用いる送付先情報です。 |
レスポンス例
200 Response
{
"zip_code": "111-1111",
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"email": "[email protected]",
"tel": "03-1234-5678",
"department": "経理部",
"title": "部長",
"name": "担当 太郎",
"object": "account_transfer_request"
}
Responses
ステータス | 説明 |
---|---|
200 | 登録された口座振替申請情報が返却されます。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
404 | 顧客IDで指定した顧客が存在しない場合のエラーです。Errorのparamには指定した顧客IDが入ります。 |
409 | 指定した顧客IDで、前回の口座振替依頼の申請から1時間以上時間が経っていない場合のエラーです。 |
412 | 口座振替依頼の申請が現在利用できない場合のエラーです。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
zip_code | ZipCode | 郵便番号です。ハイフン有無は任意になります。但しハイフン無しで登録されますと、請求書にもハイフン無しで記載されます。 |
address1 | Address1 | 都道府県・市区町村・番地です。必ず都道府県名から始めてください。 |
address2 | Address2 | 建物名・部屋番号などです。 |
メールアドレスです。email形式で指定してください。 | ||
tel | Tel | 電話番号です。ハイフン有無は任意になります。一部の形式は許容していません。(例:0570-XXX-XXX、0800-XXX-XXXXなど) |
department | string | 担当者の部署名です。 |
title | string | 担当者の役職です。 |
name | string | 担当者名です。 |
object | string | このObjectの種別を示します。ここでは必ずaccount_transfer_request が入ります。 |
Destination 請求先
Destination Object
Destination
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"created_at": "2019-04-01T10:36:43+09:00",
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"id": "WNAV-37R6",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"object": "destination",
"tel": "03-1234-5678",
"title": "部長",
"uri": "mfk:destination:WNAV-37R6",
"zip_code": "111-1111"
}
請求先です。一つの顧客に対して複数作成することができます。請求先の情報を利用して請求書送付を行います。
請求書の印字との対照についてはサポートページを確認してください。
Property
項目名 | 型 | 説明 |
---|---|---|
address1 | Address1 | 都道府県・市区町村・番地です。必ず都道府県名から始めてください。 |
address2 | Address2 | 建物名・部屋番号などです。 |
cc_emails | [Email] | CCメールアドレスです。最大4件まで登録できます。 |
created_at | string(date-time) | 請求先が登録された日時を示します。 |
customer_id | string | 顧客IDです。一意の識別子として自動で付与されます。 |
department | string | 担当者の部署名です。 |
メールアドレスです。email形式で指定してください。 | ||
id | string | 請求先IDです。一意の識別子として自動で付与されます。 |
name | string | 担当者名です。 |
name_kana | string | 担当者名カナです。全角カタカナで入力してください。 |
object | string | このObjectの種別を示します。ここでは必ずdestination が入ります。 |
tel | Tel | 電話番号です。ハイフン有無は任意になります。一部の形式は許容していません。(例:0570-XXX-XXX、0800-XXX-XXXXなど) |
title | string | 担当者の役職です。 |
uri | string | 請求先URIです。すべてのリソースで一意の識別子として自動で付与されます。 |
zip_code | ZipCode | 郵便番号です。ハイフン有無は任意になります。但しハイフン無しで登録されますと、請求書にもハイフン無しで記載されます。 |
請求先一覧取得
コードサンプル
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/destinations \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/destinations', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/destinations")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/destinations', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/destinations", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/destinations',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/destinations
請求先の一覧を取得します。顧客IDや顧客番号で特定の顧客に紐づく請求先に絞り込んで取得することもできます。
QueryParameters
項目名 | 型 | 説明 |
---|---|---|
customer_id | string | 顧客IDを指定します。指定された顧客の請求先を取得します。customer_number に別の顧客の顧客番号を指定した場合には該当請求先は0件になります。 |
customer_number | string | 顧客番号を指定します。指定された顧客の請求先を取得します。customer_id に別の顧客の顧客IDを指定した場合には該当請求先は0件になります。 |
created_at_from | string(date-time) | 指定された日時以降に作成された請求先を取得します。指定された日時に作成されたものも含まれます。 RFC3339のdate-time (2019-04-01T10:36:43%2B09:00)で指定してください。 |
created_at_to | string(date-time) | 指定された日時以前に作成された請求先を取得します。指定された日時に作成されたものも含まれます。 RFC3339のdate-time (2019-04-01T10:36:43%2B09:00)で指定してください。 |
after | string | 任意のリソースIDを指定します。追加日時の降順でこのIDのリソースよりも後のリソースを取得します。この時after で指定したIDのリソースは結果に含まれません。 |
before | string | 任意のリソースIDを指定します。追加日時の降順でこのIDのリソースよりも前のリソースを取得します。この時before で指定したIDのリソースは結果に含まれません。 |
limit | integer(int32) | 取得したいリソースの最大件数を指定します。1~200の間の整数で指定してください。指定がない場合は20になります。 |
レスポンス例
200 Response
{
"items": [
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"created_at": "2019-04-01T10:36:43+09:00",
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"id": "WNAV-37R6",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"object": "destination",
"tel": "03-1234-5678",
"title": "部長",
"uri": "mfk:destination:WNAV-37R6",
"zip_code": "111-1111"
}
],
"object": "list",
"pagination": {
"end": "7679-YW36",
"has_next": true,
"has_previous": false,
"limit": 20,
"start": "9R6M-VMAN",
"total": 143
}
}
Responses
ステータス | 説明 |
---|---|
200 | 請求先一覧とページネーション情報です。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
items | [Destination] | 請求先一覧です。 |
object | string | このObjectの種別を示します。ここでは必ず list が設定されます。 |
pagination | Pagination | ページネーション情報です。各Objectの一覧取得の際にリストとともに返却されます。この情報をもとにページ繰りを行うことができます。 |
請求先登録
コードサンプル
curl -X POST https://sandbox-api.mfkessai.co.jp/v2/destinations \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY' \
-d `{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}`
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}';
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/destinations', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/destinations")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Post.new(uri, headers)
req.body='{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/destinations', params={
}, json={
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{`{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}`})
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/destinations", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const inputBody = `{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/destinations',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/destinations
顧客を指定して請求先を登録することができます。
Body parameter
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}
BodyParameters
項目名 | 型 | 説明 |
---|---|---|
body required |
DestinationPayload | 請求先登録情報です。 |
レスポンス例
200 Response
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"created_at": "2019-04-01T10:36:43+09:00",
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"id": "WNAV-37R6",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"object": "destination",
"tel": "03-1234-5678",
"title": "部長",
"uri": "mfk:destination:WNAV-37R6",
"zip_code": "111-1111"
}
Responses
ステータス | 説明 |
---|---|
200 | 登録した請求先が返却されます。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
404 | 顧客IDで指定した顧客が存在しない場合のエラーです。Errorのparamには指定した顧客IDが入ります。 |
409 | 登録しようとした請求先と一致する請求先が既に登録されている場合のエラーです。住所・電話番号などが既に登録済みでないか確認してください。Errorのparamには登録済みの請求先IDが入ります。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
address1 | Address1 | 都道府県・市区町村・番地です。必ず都道府県名から始めてください。 |
address2 | Address2 | 建物名・部屋番号などです。 |
cc_emails | [Email] | CCメールアドレスです。最大4件まで登録できます。 |
created_at | string(date-time) | 請求先が登録された日時を示します。 |
customer_id | string | 顧客IDです。一意の識別子として自動で付与されます。 |
department | string | 担当者の部署名です。 |
メールアドレスです。email形式で指定してください。 | ||
id | string | 請求先IDです。一意の識別子として自動で付与されます。 |
name | string | 担当者名です。 |
name_kana | string | 担当者名カナです。全角カタカナで入力してください。 |
object | string | このObjectの種別を示します。ここでは必ずdestination が入ります。 |
tel | Tel | 電話番号です。ハイフン有無は任意になります。一部の形式は許容していません。(例:0570-XXX-XXX、0800-XXX-XXXXなど) |
title | string | 担当者の役職です。 |
uri | string | 請求先URIです。すべてのリソースで一意の識別子として自動で付与されます。 |
zip_code | ZipCode | 郵便番号です。ハイフン有無は任意になります。但しハイフン無しで登録されますと、請求書にもハイフン無しで記載されます。 |
請求先取得
コードサンプル
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/destinations/{destination_id} \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/destinations/{destination_id}', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/destinations/{destination_id}")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/destinations/{destination_id}', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/destinations/{destination_id}", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/destinations/{destination_id}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/destinations/{destination_id}
請求先IDを指定して対象請求先1件を取得することができます。
PathParameters
項目名 | 型 | 説明 |
---|---|---|
destination_id required |
string | 対象の請求先IDを指定してください。 |
レスポンス例
200 Response
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"created_at": "2019-04-01T10:36:43+09:00",
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"id": "WNAV-37R6",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"object": "destination",
"tel": "03-1234-5678",
"title": "部長",
"uri": "mfk:destination:WNAV-37R6",
"zip_code": "111-1111"
}
Responses
ステータス | 説明 |
---|---|
200 | 指定した請求先が返却されます。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
404 | 請求先IDで指定した請求先が存在しない場合のエラーです。Errorのparamには指定した請求先IDが入ります。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
address1 | Address1 | 都道府県・市区町村・番地です。必ず都道府県名から始めてください。 |
address2 | Address2 | 建物名・部屋番号などです。 |
cc_emails | [Email] | CCメールアドレスです。最大4件まで登録できます。 |
created_at | string(date-time) | 請求先が登録された日時を示します。 |
customer_id | string | 顧客IDです。一意の識別子として自動で付与されます。 |
department | string | 担当者の部署名です。 |
メールアドレスです。email形式で指定してください。 | ||
id | string | 請求先IDです。一意の識別子として自動で付与されます。 |
name | string | 担当者名です。 |
name_kana | string | 担当者名カナです。全角カタカナで入力してください。 |
object | string | このObjectの種別を示します。ここでは必ずdestination が入ります。 |
tel | Tel | 電話番号です。ハイフン有無は任意になります。一部の形式は許容していません。(例:0570-XXX-XXX、0800-XXX-XXXXなど) |
title | string | 担当者の役職です。 |
uri | string | 請求先URIです。すべてのリソースで一意の識別子として自動で付与されます。 |
zip_code | ZipCode | 郵便番号です。ハイフン有無は任意になります。但しハイフン無しで登録されますと、請求書にもハイフン無しで記載されます。 |
請求先更新
コードサンプル
curl -X PUT https://sandbox-api.mfkessai.co.jp/v2/destinations/{destination_id} \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY' \
-d `{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}`
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}';
try {
$response = $client->request('PUT','https://sandbox-api.mfkessai.co.jp/v2/destinations/{destination_id}', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/destinations/{destination_id}")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Put.new(uri, headers)
req.body='{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.put('https://sandbox-api.mfkessai.co.jp/v2/destinations/{destination_id}', params={
}, json={
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{`{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}`})
req, err := http.NewRequest("PUT", "https://sandbox-api.mfkessai.co.jp/v2/destinations/{destination_id}", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const inputBody = `{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/destinations/{destination_id}',
{
method: 'PUT',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/destinations/{destination_id}
請求先の情報を更新することができます。
Body parameter
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"department": "経理部",
"email": "[email protected]",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"tel": "03-1234-5678",
"title": "部長",
"zip_code": "111-1111"
}
PathParameters
項目名 | 型 | 説明 |
---|---|---|
destination_id required |
string | 対象の請求先IDを指定してください。 |
BodyParameters
項目名 | 型 | 説明 |
---|---|---|
body required |
DestinationUpdatePayload | 請求先更新情報です。 |
レスポンス例
200 Response
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"cc_emails": [
"[email protected]",
"[email protected]"
],
"created_at": "2019-04-01T10:36:43+09:00",
"customer_id": "7679-YW36",
"department": "経理部",
"email": "[email protected]",
"id": "WNAV-37R6",
"name": "担当 太郎",
"name_kana": "タントウ タロウ",
"object": "destination",
"tel": "03-1234-5678",
"title": "部長",
"uri": "mfk:destination:WNAV-37R6",
"zip_code": "111-1111"
}
Responses
ステータス | 説明 |
---|---|
200 | 更新した請求先が返却されます。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
404 | 請求先IDで指定した顧客が存在しない場合のエラーです。Errorのparamには指定した請求先IDが入ります。 |
409 | 更新しようとした請求先と一致する請求先が既に登録されている場合のエラーです。住所・電話番号などが既に登録済みでないか確認してください。Errorのparamには登録済みの請求先IDが入ります。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
address1 | Address1 | 都道府県・市区町村・番地です。必ず都道府県名から始めてください。 |
address2 | Address2 | 建物名・部屋番号などです。 |
cc_emails | [Email] | CCメールアドレスです。最大4件まで登録できます。 |
created_at | string(date-time) | 請求先が登録された日時を示します。 |
customer_id | string | 顧客IDです。一意の識別子として自動で付与されます。 |
department | string | 担当者の部署名です。 |
メールアドレスです。email形式で指定してください。 | ||
id | string | 請求先IDです。一意の識別子として自動で付与されます。 |
name | string | 担当者名です。 |
name_kana | string | 担当者名カナです。全角カタカナで入力してください。 |
object | string | このObjectの種別を示します。ここでは必ずdestination が入ります。 |
tel | Tel | 電話番号です。ハイフン有無は任意になります。一部の形式は許容していません。(例:0570-XXX-XXX、0800-XXX-XXXXなど) |
title | string | 担当者の役職です。 |
uri | string | 請求先URIです。すべてのリソースで一意の識別子として自動で付与されます。 |
zip_code | ZipCode | 郵便番号です。ハイフン有無は任意になります。但しハイフン無しで登録されますと、請求書にもハイフン無しで記載されます。 |
CustomerExamination 与信枠審査
CustomerExamination Object
CustomerExamination
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"created_at": "2019-02-18T10:20:34+09:00",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-04-30",
"id": "WNAV-37R6",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"start_date": "2019-04-01",
"status": "passed",
"tel": "03-1234-5678",
"type": "auto",
"uri": "mfk:customer_examination:WNAV-37R6",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}
与信枠審査です。顧客に対する与信枠取得のために利用します。申請後2営業日以内に審査いたします。 自動与信枠審査を利用している場合は顧客登録と同時に与信枠審査も申請されます。
Property
項目名 | 型 | 説明 |
---|---|---|
address1 | Address1 | 都道府県・市区町村・番地です。必ず都道府県名から始めてください。 |
address2 | Address2 | 建物名・部屋番号などです。 |
amount | integer | 希望与信額です。審査通過の場合に付与される与信枠の希望金額になります。審査の結果減額されて与信枠付与されることもあります。 |
business_description | string | 事業内容です。顧客の主なサービス、商材などです。 |
business_type | string | 事業所区分です。法人(corporate )または、個人(individual )で指定されます。不明な場合は空になります。 値は以下のうちの一つになります。
|
corporate_number | string | 法人番号です。事業所区分(business_type )が法人(corporate )の場合にのみ利用されます。 |
created_at | string(date-time) | 与信枠審査の申請日時です。 |
customer_id | string | 顧客IDです。一意の識別子として自動で付与されます。 |
メールアドレスです。email形式で指定してください。 | ||
end_date | string(date) | 希望取引登録期間終了日です。この日付まで対象の与信枠を利用して取引登録ができます。 |
id | string | 与信枠審査IDです。一意の識別子として自動で付与されます。 |
remark | string | その他情報です。審査に利用できる情報を記載できます。 |
representative_name | string | 代表者名です。 |
start_date | string(date) | 希望取引登録期間開始日。この日付から対象の与信枠を利用して取引登録ができます。 手動での申請の場合、審査通過日となるため空で返却されます。自動与信枠審査による申請の場合は、月次での与信枠付与になり対象月の月初日となります。 |
status | string | 与信枠審査ステータスです。審査中(unexamined )、審査通過(passed )、審査否決(rejected )があります。審査通過の場合には与信枠が付与されています。 値は以下のうちの一つになります。
|
tel | Tel | 電話番号です。ハイフン有無は任意になります。一部の形式は許容していません。(例:0570-XXX-XXX、0800-XXX-XXXXなど) |
type | string | 申請理由の種別です。手動(manual )、自動(auto )、回復(recovery )があります。手動(manual)には増枠申請と手動回復審査申請が含まれます。 値は以下のうちの一つになります。
|
object | string | このObjectの種別を示します。ここでは必ずcustomer_examination が入ります。 |
uri | string | 与信枠審査URIです。すべてのリソースで一意の識別子として自動で付与されます。 |
website | string | 顧客企業のwebサイトです。 |
zip_code | ZipCode | 郵便番号です。ハイフン有無は任意になります。但しハイフン無しで登録されますと、請求書にもハイフン無しで記載されます。 |
与信枠審査一覧取得
コードサンプル
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/customer_examinations \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/customer_examinations', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customer_examinations")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/customer_examinations", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/customer_examinations
与信枠審査の一覧を取得します。顧客IDやステータスで絞り込んで取得することもできます。
QueryParameters
項目名 | 型 | 説明 |
---|---|---|
customer_id | string | 顧客IDを指定します。指定された顧客に対する与信枠審査を取得します。 |
customer_number | string | 顧客番号を指定します。 |
status | string | 与信枠審査のステータスを指定します。未審査(unexamined )、審査通過(passed )、審査否決(rejected )のいずれかを指定してください。 値は以下のうちの一つになります。
|
created_at_from | string(date-time) | 指定された日時以降に作成された与信枠審査を取得します。指定された日時に作成されたものも含まれます。 RFC3339のdate-time (2019-04-01T10:36:43%2B09:00)で指定してください。 |
created_at_to | string(date-time) | 指定された日時以前に作成された与信枠審査を取得します。指定された日時に作成されたものも含まれます。 RFC3339のdate-time (2019-04-01T10:36:43%2B09:00)で指定してください。 |
after | string | 任意のリソースIDを指定します。追加日時の降順でこのIDのリソースよりも後のリソースを取得します。この時after で指定したIDのリソースは結果に含まれません。 |
before | string | 任意のリソースIDを指定します。追加日時の降順でこのIDのリソースよりも前のリソースを取得します。この時before で指定したIDのリソースは結果に含まれません。 |
limit | integer(int32) | 取得したいリソースの最大件数を指定します。1~200の間の整数で指定してください。指定がない場合は20になります。 |
レスポンス例
200 Response
{
"items": [
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"created_at": "2019-02-18T10:20:34+09:00",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-04-30",
"id": "WNAV-37R6",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"start_date": "2019-04-01",
"status": "passed",
"tel": "03-1234-5678",
"type": "auto",
"uri": "mfk:customer_examination:WNAV-37R6",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}
],
"object": "list",
"pagination": {
"end": "7679-YW36",
"has_next": true,
"has_previous": false,
"limit": 20,
"start": "9R6M-VMAN",
"total": 143
}
}
Responses
ステータス | 説明 |
---|---|
200 | 与信枠審査一覧とページネーション情報です。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
items | [CustomerExamination] | 与信枠審査一覧です。 |
object | string | このObjectの種別を示します。ここでは必ず list が設定されます。 |
pagination | Pagination | ページネーション情報です。各Objectの一覧取得の際にリストとともに返却されます。この情報をもとにページ繰りを行うことができます。 |
与信枠審査申請
コードサンプル
curl -X POST https://sandbox-api.mfkessai.co.jp/v2/customer_examinations \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'apikey: API_KEY' \
-d `{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-04-30",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}`
<?php
require 'vendor/autoload.php';
$headers = array(
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-04-30",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}';
try {
$response = $client->request('POST','https://sandbox-api.mfkessai.co.jp/v2/customer_examinations', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customer_examinations")
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Post.new(uri, headers)
req.body='{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-04-30",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}'
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.post('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations', params={
}, json={
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-04-30",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{`{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-04-30",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}`})
req, err := http.NewRequest("POST", "https://sandbox-api.mfkessai.co.jp/v2/customer_examinations", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const inputBody = `{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-04-30",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}`;
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations',
{
method: 'POST',
body: inputBody,
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/customer_examinations
顧客を指定して与信枠審査を申請することができます。最長で申請後2営業日以内に審査いたします。
自動与信枠審査をご利用の場合、こちらで増枠した金額は今後の与信枠付与に継続して利用されます。また、対象顧客のアラートは解消されます。
Sandbox環境では動作テストのため、任意の審査結果を指定することができます。審査結果の操作を参照してください。
Body parameter
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-04-30",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"tel": "03-1234-5678",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}
BodyParameters
項目名 | 型 | 説明 |
---|---|---|
body required |
CustomerExaminationPayload | 与信枠審査申請情報です。 |
レスポンス例
200 Response
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"created_at": "2019-02-18T10:20:34+09:00",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-04-30",
"id": "WNAV-37R6",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"start_date": "2019-04-01",
"status": "passed",
"tel": "03-1234-5678",
"type": "auto",
"uri": "mfk:customer_examination:WNAV-37R6",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}
Responses
ステータス | 説明 |
---|---|
200 | 登録した与信枠審査が返却されます。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
404 | 顧客IDで指定した顧客が存在しない場合のエラーです。Errorのparamには指定した顧客IDが入ります。 |
409 | 審査中の与信枠審査が存在している場合のエラーです。審査中は与信枠審査を登録できません。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
address1 | Address1 | 都道府県・市区町村・番地です。必ず都道府県名から始めてください。 |
address2 | Address2 | 建物名・部屋番号などです。 |
amount | integer | 希望与信額です。審査通過の場合に付与される与信枠の希望金額になります。審査の結果減額されて与信枠付与されることもあります。 |
business_description | string | 事業内容です。顧客の主なサービス、商材などです。 |
business_type | string | 事業所区分です。法人(corporate )または、個人(individual )で指定されます。不明な場合は空になります。 値は以下のうちの一つになります。
|
corporate_number | string | 法人番号です。事業所区分(business_type )が法人(corporate )の場合にのみ利用されます。 |
created_at | string(date-time) | 与信枠審査の申請日時です。 |
customer_id | string | 顧客IDです。一意の識別子として自動で付与されます。 |
メールアドレスです。email形式で指定してください。 | ||
end_date | string(date) | 希望取引登録期間終了日です。この日付まで対象の与信枠を利用して取引登録ができます。 |
id | string | 与信枠審査IDです。一意の識別子として自動で付与されます。 |
remark | string | その他情報です。審査に利用できる情報を記載できます。 |
representative_name | string | 代表者名です。 |
start_date | string(date) | 希望取引登録期間開始日。この日付から対象の与信枠を利用して取引登録ができます。 手動での申請の場合、審査通過日となるため空で返却されます。自動与信枠審査による申請の場合は、月次での与信枠付与になり対象月の月初日となります。 |
status | string | 与信枠審査ステータスです。審査中(unexamined )、審査通過(passed )、審査否決(rejected )があります。審査通過の場合には与信枠が付与されています。 値は以下のうちの一つになります。
|
tel | Tel | 電話番号です。ハイフン有無は任意になります。一部の形式は許容していません。(例:0570-XXX-XXX、0800-XXX-XXXXなど) |
type | string | 申請理由の種別です。手動(manual )、自動(auto )、回復(recovery )があります。手動(manual)には増枠申請と手動回復審査申請が含まれます。 値は以下のうちの一つになります。
|
object | string | このObjectの種別を示します。ここでは必ずcustomer_examination が入ります。 |
uri | string | 与信枠審査URIです。すべてのリソースで一意の識別子として自動で付与されます。 |
website | string | 顧客企業のwebサイトです。 |
zip_code | ZipCode | 郵便番号です。ハイフン有無は任意になります。但しハイフン無しで登録されますと、請求書にもハイフン無しで記載されます。 |
与信枠審査取得
コードサンプル
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/customer_examinations/{customer_examination_id} \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/customer_examinations/{customer_examination_id}', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/customer_examinations/{customer_examination_id}")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations/{customer_examination_id}', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/customer_examinations/{customer_examination_id}", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/customer_examinations/{customer_examination_id}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/customer_examinations/{customer_examination_id}
与信枠審査IDを指定して対象与信枠審査1件を取得することができます。
PathParameters
項目名 | 型 | 説明 |
---|---|---|
customer_examination_id required |
string | 対象の与信枠審査IDを指定してください。 |
レスポンス例
200 Response
{
"address1": "東京都千代田区1-2-3",
"address2": "サンプルビル3F",
"amount": 20000,
"business_description": "クラウド型企業間決済サービス",
"business_type": "corporate",
"corporate_number": "1234567890123",
"created_at": "2019-02-18T10:20:34+09:00",
"customer_id": "7679-YW36",
"email": "[email protected]",
"end_date": "2019-04-30",
"id": "WNAV-37R6",
"remark": "一部上場企業です。",
"representative_name": "代表太郎",
"start_date": "2019-04-01",
"status": "passed",
"tel": "03-1234-5678",
"type": "auto",
"uri": "mfk:customer_examination:WNAV-37R6",
"website": "https://mfkessai.co.jp",
"zip_code": "111-1111"
}
Responses
ステータス | 説明 |
---|---|
200 | 指定した与信枠審査が返却されます。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
404 | 与信枠審査IDで指定した与信枠審査が存在しない場合のエラーです。Errorのparamには指定した与信枠審査IDが入ります。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
address1 | Address1 | 都道府県・市区町村・番地です。必ず都道府県名から始めてください。 |
address2 | Address2 | 建物名・部屋番号などです。 |
amount | integer | 希望与信額です。審査通過の場合に付与される与信枠の希望金額になります。審査の結果減額されて与信枠付与されることもあります。 |
business_description | string | 事業内容です。顧客の主なサービス、商材などです。 |
business_type | string | 事業所区分です。法人(corporate )または、個人(individual )で指定されます。不明な場合は空になります。 値は以下のうちの一つになります。
|
corporate_number | string | 法人番号です。事業所区分(business_type )が法人(corporate )の場合にのみ利用されます。 |
created_at | string(date-time) | 与信枠審査の申請日時です。 |
customer_id | string | 顧客IDです。一意の識別子として自動で付与されます。 |
メールアドレスです。email形式で指定してください。 | ||
end_date | string(date) | 希望取引登録期間終了日です。この日付まで対象の与信枠を利用して取引登録ができます。 |
id | string | 与信枠審査IDです。一意の識別子として自動で付与されます。 |
remark | string | その他情報です。審査に利用できる情報を記載できます。 |
representative_name | string | 代表者名です。 |
start_date | string(date) | 希望取引登録期間開始日。この日付から対象の与信枠を利用して取引登録ができます。 手動での申請の場合、審査通過日となるため空で返却されます。自動与信枠審査による申請の場合は、月次での与信枠付与になり対象月の月初日となります。 |
status | string | 与信枠審査ステータスです。審査中(unexamined )、審査通過(passed )、審査否決(rejected )があります。審査通過の場合には与信枠が付与されています。 値は以下のうちの一つになります。
|
tel | Tel | 電話番号です。ハイフン有無は任意になります。一部の形式は許容していません。(例:0570-XXX-XXX、0800-XXX-XXXXなど) |
type | string | 申請理由の種別です。手動(manual )、自動(auto )、回復(recovery )があります。手動(manual)には増枠申請と手動回復審査申請が含まれます。 値は以下のうちの一つになります。
|
object | string | このObjectの種別を示します。ここでは必ずcustomer_examination が入ります。 |
uri | string | 与信枠審査URIです。すべてのリソースで一意の識別子として自動で付与されます。 |
website | string | 顧客企業のwebサイトです。 |
zip_code | ZipCode | 郵便番号です。ハイフン有無は任意になります。但しハイフン無しで登録されますと、請求書にもハイフン無しで記載されます。 |
CreditFacility 与信枠
CreditFacility Object
CreditFacility
{
"amount": 200000,
"balance": 100000,
"customer_examination_id": "WNAV-37R6",
"customer_id": "9R6M-VMAN",
"end_date": "2019-04-30",
"id": "7679-YW36",
"start_date": "2019-04-01",
"status": "inactive",
"uri": "mfk:credit_facility:7679-YW36"
}
顧客の与信枠です。この枠内の取引登録であれば取引審査なしで登録することができます。
Property
項目名 | 型 | 説明 |
---|---|---|
amount | integer | 与信額です。取引登録期間(start_date ~end_date )にこの金額までの取引であれば取引審査なしで登録することができます。 |
balance | integer | 与信額残高です。与信額からこの与信枠を利用して登録された取引の合計金額を差し引いた金額です。現在与信枠を利用して登録できる取引金額を示しています。 |
customer_id | string | 顧客IDです。一意の識別子として自動で付与されます。 |
customer_examination_id | string | 与信枠審査IDです。 |
end_date | string(date) | 取引登録期間終了日です。この日付まで対象の与信枠を利用して取引登録ができます。 |
id | string | 与信枠IDです。一意の識別子として自動で付与されます。 |
object | string | このObjectの種別を示します。ここでは必ずcredit_facility が入ります。 |
start_date | string(date) | 取引登録期間開始日です。この日付から対象の与信枠を利用して取引登録ができます。 |
status | string | 与信枠ステータスです。未適用(inactive )、適用中(active )、期限切れ(expired )があります。 現在の日付がstart_date ~end_date の期間内であればactive 、start_date よりも前であればinactive 、end_date を過ぎていればexpired になります。 値は以下のうちの一つになります。
|
uri | string | 与信枠URIです。すべてのリソースで一意の識別子として自動で付与されます。 |
与信枠一覧取得
コードサンプル
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/credit_facilities \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = '';
try {
$response = $client->request('GET','https://sandbox-api.mfkessai.co.jp/v2/credit_facilities', array(
'headers' => $headers,
'body' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
require 'net/http'
require 'uri'
uri = URI.parse("https://sandbox-api.mfkessai.co.jp/v2/credit_facilities")
headers = {
'Accept' => 'application/json',
'apikey' => 'API_KEY'
}
req = Net::HTTP::Get.new(uri, headers)
req_options = {
use_ssl: uri.scheme = "https"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
res = http.request(req)
p res
end
import requests
headers = {
'Accept': 'application/json',
'apikey': 'API_KEY'
}
r = requests.get('https://sandbox-api.mfkessai.co.jp/v2/credit_facilities', params={
}, headers=headers)
print(r.json())
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"apikey": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{``})
req, err := http.NewRequest("GET", "https://sandbox-api.mfkessai.co.jp/v2/credit_facilities", data)
if err != nil {
// handle error
return
}
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
// handle error
return
}
// ...
}
const fetch = require('node-fetch');
const headers = {
'Accept':'application/json',
'apikey':'API_KEY'
};
fetch('https://sandbox-api.mfkessai.co.jp/v2/credit_facilities',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
/credit_facilities
与信枠の一覧を取得します。顧客IDや取引登録期間開始日・終了日で絞り込んで取得することもできます。
QueryParameters
項目名 | 型 | 説明 |
---|---|---|
customer_id | string | 顧客IDを指定します。指定された顧客の与信枠を取得します。 |
customer_number | string | 顧客番号を指定します。 指定された顧客の与信枠を取得します。 |
customer_examination_id | string | 与信枠審査IDを指定します。指定された与信枠審査によって付与された与信枠を取得します。 |
status | array[string] | ステータスを指定します。該当するステータスの与信枠が返却されます。指定できる値は expired (期限切れ), active (適用中), inactive (未適用), の3種類のみです。ステータスは複数指定することができます。 複数指定する場合は?status=expired&status=active もしくは?status=expired,active のように指定してください。 値は以下のうちの一つになります。
|
start_date_from | string(date) | 取引登録期間開始日が指定された日時よりも後の与信枠を取得します。指定された日時のものも含まれます。 RFC3339のfull-date (2019-04-01)で指定してください。 |
start_date_to | string(date) | 取引登録期間開始日が指定された日時よりも前の与信枠を取得します。指定された日時のものも含まれます。 RFC3339のfull-date (2019-04-01)で指定してください。 |
end_date_from | string(date) | 取引登録期間終了日が指定された日時よりも後の与信枠を取得します。指定された日時のものも含まれます。 RFC3339のfull-date (2019-04-01)で指定してください。 |
end_date_to | string(date) | 取引登録期間終了日が指定された日時よりも前の与信枠を取得します。指定された日時のものも含まれます。 RFC3339のfull-date (2019-04-01)で指定してください。 |
after | string | 任意のリソースIDを指定します。追加日時の降順でこのIDのリソースよりも後のリソースを取得します。この時after で指定したIDのリソースは結果に含まれません。 |
before | string | 任意のリソースIDを指定します。追加日時の降順でこのIDのリソースよりも前のリソースを取得します。この時before で指定したIDのリソースは結果に含まれません。 |
limit | integer(int32) | 取得したいリソースの最大件数を指定します。1~200の間の整数で指定してください。指定がない場合は20になります。 |
レスポンス例
200 Response
{
"items": [
{
"amount": 200000,
"balance": 100000,
"customer_examination_id": "WNAV-37R6",
"customer_id": "9R6M-VMAN",
"end_date": "2019-04-30",
"id": "7679-YW36",
"start_date": "2019-04-01",
"status": "inactive",
"uri": "mfk:credit_facility:7679-YW36"
}
],
"object": "list",
"pagination": {
"end": "7679-YW36",
"has_next": true,
"has_previous": false,
"limit": 20,
"start": "9R6M-VMAN",
"total": 143
}
}
Responses
ステータス | 説明 |
---|---|
200 | 与信枠一覧とページネーション情報です。 |
400 | リクエスト内容の不備によるエラーです。エラー内容を確認してください。 |
Status Code 200
項目名 | 型 | 説明 |
---|---|---|
items | [CreditFacility] | 与信枠一覧です。 |
object | string | このObjectの種別を示します。ここでは必ず list が設定されます。 |
pagination | Pagination | ページネーション情報です。各Objectの一覧取得の際にリストとともに返却されます。この情報をもとにページ繰りを行うことができます。 |
与信枠取得
コードサンプル
curl -X GET https://sandbox-api.mfkessai.co.jp/v2/credit_facilities/{credit_facility_id} \
-H 'Accept: application/json'
-H 'apikey: API_KEY'
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'apikey' => 'API_KEY',
);
$client