freee APIへGET/POSTリクエストを送信する

取引登録に必要な情報をGETリクエストで取得する

取引のPOSTについてのfreee API ドキュメントでは、POSTの際に「company_id」や「account_item_id」等の情報が必要であるとされています。
それらの情報はAPI経由でしか取得できないので、GETリクエストを送信し必要なID情報の取得をしましょう。
※ アクセストークンについては、こちらのページも参考に取得したものを用いてください。

事業所IDを取得する

Companies(事業所)またはUsers(ユーザ)(companies=trueを指定した場合) のGETでログインしているユーザーが所属する事業所一覧を取得できます。
※ freeeでは1つのユーザアカウントが複数の事業所に所属できるため、どの事業所へリクエストを送信するかを選択する必要があります。”display_name”がwebサービス上での表示名となるので、事業所の選択ではそちら参考に用いてください。

【例】Companies(事業所)のGET

リクエスト
curl -i -X GET \
  -H "Authorization:Bearer アクセストークンの文字列" \
  -H "Content-Type:application/json" \
'https://api.freee.co.jp/api/1/companies'
レスポンスボディ(一部省略)
{
"companies":[
{"id": XXXXXX, "name": "フリー株式会社", "name_kana": "フリーカブシキガイシャ", "display_name": "フリー株式会社",…},
{"id": XXXXXX, "name": "MSK株式会社", "name_kana": "エムエスケーカブシキカイシャ", "display_name": "MSK株式会社",…},
 ]
}

【例】Users(ユーザ)のGET(オプションを付与)

リクエスト
curl -i -X GET \
  -H "Authorization:Bearer アクセストークンの文字列" \
  -H "Content-Type:application/json" \
'https://api.freee.co.jp/api/1/users/me?companies=true'
レスポンスボディ(一部省略)
{
"user":{
"email": "taro@XXXXXXXXXX.com",
"display_name": "歩理伊太郎",
"first_name": "歩理伊,
"last_name": "太郎",
"first_name_kana": "たろう",
"last_name_kana": "ふりい",
"companies":[
{"id": XXXXXX, "name": "フリー株式会社", "name_kana": "フリーカブシキガイシャ", "display_name": "フリー株式会社", … },
{"id": XXXXXX, "name": "MSK株式会社", "name_kana": "エムエスケーカブシキカイシャ", "display_name": "MSK株式会社", … },
  ]
 }
}

勘定科目、税区分、口座等のIDを取得する

対象とすべき事業所のIDを確認できたら、次に事業所のマスタ情報を取得します。勘定科目・税区分・品目・取引先等それぞれのAPIから情報を取得することができますが、
勘定科目・品目・取引先・口座については「事業所の詳細情報の取得」から一括で取得することも可能です。

※ 税区分コードについては、各事業所に固有ではなく、共通のコードとなっています。非課税取引等の特殊な取引でなければ、Account items(勘定科目)で取得できる”default_tax_code”が推奨されます。
※ 品目・取引先・部門・メモタグは任意項目ですが、付与することでレポートでの集計等に活用できます。

【例】Account items(勘定科目)のGET

リクエスト
curl -i -X GET \
  -H "Authorization:Bearer アクセストークンの文字列" \
  -H "Content-Type:application/json" \
'https://api.freee.co.jp/api/1/account_items?company_id=XXXXXX'
レスポンスボディ(一部省略)
{
"account_items":[
{"id": XXXXXXXX, "name": "[製]事務用品費", "shortcut": "JIMUYOU", "shortcut_num": "651", … },
{"id": XXXXXXXX, "name": "[製]会議費", "shortcut": "KAIGIHI", "shortcut_num": "644", … },
…
 ]
}

【例】事業所の詳細情報のGET

リクエスト
curl -i -X GET \
  -H "Authorization:Bearer アクセストークンの文字列" \
  -H "Content-Type:application/json" \
'https://api.freee.co.jp/api/1/companies/XXXXXX?details=true'
レスポンスボディ(一部省略)
{
"company":{
"id": XXXXXX,
"name": "MSK株式会社",
"name_kana": "エムエスケーカブシキカイシャ",
"display_name": "MSK株式会社",
"role": "admin",
"account_items":[{"id": XXXXXXXX, "name": "[製]事務用品費", "shortcut": "JIMUYOU", "default_tax_id": XXXXXXXX, … ],
"taxes":[{"id": XXXXXXXX, "name": "課税売上" }, {"id": XXXXXXXX, "name": "課売上一" … ],
"items":[{"id": XXXXXXXX, "name": "小口現金", "shortcut1": null, "shortcut2": null … ],
"partners":[{"id": XXXXXXXX, "name": "ABC株式会社", "shortcut1": "", "shortcut2": "" … ],
"walletables":[{"id": XXXXXX, "name": "三井住友(法人)", "type": "bank_account" }, … ]
 }
}

 


POSTリクエストでfreeeへ取引データを送信する

簡単な取引を登録する

簡単な例として、現金支出の登録例です。各項目のIDには、予め取得したものを用います。

【例】Deals(取引)のPOST (現金で800円のコインパーキング代を払った)

リクエスト
curl -i -X POST \
  -H "Authorization:Bearer アクセストークンの文字列" \
  -H "Content-Type:application/json" \
  -d \
'{
 "company_id" : XXXXXX,
 "issue_date" : "2017-04-01",
 "due_date" : "",
 "type" : "expense",
 "ref_number" : "",
 "details" : [
   {
     "account_item_id" : XXXXXXXX,
     "tax_code" : 34,
     "item_id" : XXXXXXXX,
    "amount" : 800,
     "description" : "歩理伊会計事務所往訪時コインパーキング"
   }
 ],
 "payments" : [
   {
     "date" : "2017-04-01",
     "from_walletable_type" : "wallet",
     "from_walletable_id" : XXXXXX,
     "amount" : 800
   }
 ]
}' \
'https://api.freee.co.jp/api/1/deals'
レスポンスボディ(一部省略)
{
"deal":{
"id": XXXXXXXX,
"company_id": XXXXXX,
"issue_date": "2017-04-01",
"due_date": null,
"amount": 800,
"due_amount": 0,
"type": "expense",
"partner_id": null,
"ref_number": "",
"details":[
 {
  "account_item_id": XXXXXXXX,
  "tax_id": XXXXXXXX,
  "tax_code": 34,
  "item_id": XXXXXXXX,
  "section_id": null,
  "tag_ids":[],
  "amount": 800,
  "vat": 38,
  "description": "歩理伊会計事務所往訪時コインパーキング"
 }
],
"payments":[
   {
    "date": "2017-04-01",
    "from_walletable_type": "wallet",
    "from_walletable_id": XXXXXX,
    "amount": 800
   }
  ]
 }
}

freeeの画面上での表示(「取引の一覧」画面)

※ POSTのレスポンスではvatが税率5%で返されますが、実際には入力した税区分に応じてfreeeには登録されます。
details及びpaymentsについては配列で指定できるので、複数行の仕訳も登録できます。また、paymentsは必須項目ではなく、指定しないことで未決済の取引(掛取引)として登録できます。

 


仕訳データ送信の前提となるfreeeの基礎情報

freee会計の基本的な入力の単位は「取引」(deal)です。この「取引」は、「仕訳」と1対1で対応しています。そのため、他のシステムからfreeeに会計情報を連携したい、という場合は「取引」(deal)のPOSTを用いることとなります。

「取引」(deal)では直接的には借方勘定科目・貸方勘定科目は指定していませんが、実質的には仕訳の情報を持っています。
「取引」(deal)では、作成時に指定する次の3項目により仕訳内容が確定します。

    • 収支の向き(type)
    • 勘定科目(account_item)
    • 決済状況(payments)

という仕訳となります。選択した勘定科目に設定された”相手勘定科目”は、[設定]→[勘定科目の設定]画面にて個別の勘定科目を編集する画面や、画面右上にリンクが表示されている「相手勘定科目の一覧」画面で確認できます。
「取引」による仕訳の作成ロジックについて、詳しくはこちらのヘルプページをご参照ください。