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