対象プラン
|
法人プラン | ✓ミニマム | ✓ベーシック | ✓プロフェッショナル | ✓エンタープライズ |
個人プラン | ✓スターター | ✓スタンダード | ✓プレミアム |
【注意】本ページはソフトウェア開発者向けのページです
freee APIは、freeeの機能を外部のプログラムから利用するためのインターフェースです。このAPIを利用して、レジ(POS)のデータを送信する場合の仕様の留意点を紹介します。
freee APIを利用してfreeeに取引データを送信しているレジサービスとして、Airレジ、POS+、Uレジ FOOD、Green POS などがあります。
freee API
目次
レジ連携で要求されること
レジの売上データ連携の基本形は、「任意のfreeeの事業所に対して、確定した日次合計の売上情報を「勘定科目」・「税区分」・「店舗」・「売上種別」・「決済手段」それぞれの情報がわかるように送信する」 というものです。
単に売上を送信するだけではなく、下記のポイントが必要とされます。
- 会計システム側で追加的な作業が発生しない
- 仕訳が正しい
- 管理すべき単位(商品ジャンルや店舗)で区分し情報を連携できる
- 支払手段(現金/カード/電子マネー等)別に情報を連携できる
- 正しく消費税申告が行えるよう消費税区分別に情報を連携できる
項目 | 内容 | freeeでの用途 |
---|---|---|
対象店舗 | どの店舗の情報か | 部門(あるいはメモタグ)の判断 |
締め状況 | レジ締めがなされ確定しているかどうか | 取得対象とするかの判断 |
取引種別 | 売上・返品・値引き・ポイント利用など | 収支の向き・勘定科目の判断 |
売上種別 | ドリンク・軽食・物販といった売上のジャンル | 品目の判断 |
消費税の扱い・税率 | 課税売上か非課税売上 | 税区分の判断 |
支払方法 | 現金、クレジット、電子マネー、商品券など | 決済情報の判断 |
※ 売上以外のデータについても、レジ側で把握できている範囲で連携していると望ましいと考えられます。(例:レジ日次チェック時の差額分について現金過不足として反映、値引き分を売上値引として反映)
会計データを作成する単位
会計データを作成する単位としては以下の点が論点となります
- 対象データの範囲 … どこまでのデータをfreeeに連携するか
- 情報の時間的な粒度 … 取引詳細毎に連携するか、日次・月次等のサマリを連携するか
対象データの範囲
特に下記6項目で連携可能な項目はすべて連携することが望ましいと考えられます。
項目 | 内容 | freee 取引API 反映先 | なぜfreeeで必要か |
---|---|---|---|
対象店舗 | どの店舗の情報か | 部門(section_id) | 店舗別の損益を管理しやすくするため |
取引種別 | 売上・返品・値引き・ポイント利用など | 収支(type)・勘定科目(account_item_id) | 正しく記帳するため |
売上種別 | ドリンク・軽食・物販といった売上のジャンル | 品目(item_id) | ジャンル別の損益を管理しやすくするため |
消費税の扱い・税率 | 課税売上か非課税売上か等 | 税区分(tax_code) | 正しく消費税申告をできるようにするため |
支払い方法 | 現金、クレジット、商品券など | 決済情報(paymentsの各項目) | 正しく記帳するため。また、消込を効率化するため |
登録したサービス | freee APIにアクセスするサービス名 | メモタグ(tag_ids) | 何がその取引をつくったか明示的にするため |
収支内容(dealのdetailsに相当)と勘定科目の対応について
項目 | 勘定科目 | 補足情報 |
---|---|---|
売上 | 「売上高」 | 税区分は「課税売上8%」など、税率に応じたものを用いる。 ただし、免税売上は「輸出売上」、切手や介護用器具等の非課税売上は「非課売上」とする。詳しくはこちら |
値引き | 「売上高」、「売上値引高」 | ヘルプページ解説のように、勘定科目・税区分が会計処理によって変わる。「売上値引高」のときは「課税売返8%」など、売返の税区分を用いる |
返品 | 「売上高」、「売上戻り高」 | ヘルプページ解説のように、勘定科目・税区分が会計処理によって変わる。「売上戻り高」のときは「課税売返8%」など、売返の税区分を用いる |
ポイント利用 | 「販売促進費」等 | 会計処理は、ポイントの性質によっても変わるため、内容に応じたものを用いる |
レジ プラス差額 | 「雑収入」等 | 原因不明の差異には対価性がないので、税区分は「対象外」とする |
レジ マイナス差額 | 「雑費」「雑損失」等 | 原因不明の差異には対価性がないので、税区分は「対象外」とする |
釣りなし金券の釣り分 | 「雑収入」等 |
対価性がないので、税区分は「対象外」とする |
釣りあり金券の釣り分 | 「XXX店 現金」等 |
別途当該の店舗の現金口座 → 当該店舗の金券口座 の"口座振替"を登録することで反映する |
レジ締めを行った際の計算残高と実際残高の差額は、現金過不足の取引として反映できます。向きが変動しうるので、売上の取引とは別個に作成します。レジ差額を「現金過不足」勘定で処理する場合、会計freeeに初期設定で存在しないため、事前に追加する必要があります。
- レジ実残高の不足:
「現金」口座、勘定科目「雑費」や「雑損失」(または「現金過不足」)、税区分「対象外」の支出取引 - レジ実残高が過大(過去の不足分の返金):
「現金」口座、勘定科目「雑収入」(または「現金過不足」)、税区分「対象外」の収入取引
情報の時間的な粒度
情報の時間的な粒度としては、基本的に日次合計単位での連携で問題がないと考えられます。(レジ側で明細データを保持しており、日次サマリの連携で記帳としては正しくなるため)
また、連携のタイミングについても考慮の必要があります。
- いつデータを送信するか:
夜間バッチで送信 / レジサービス内のボタンをトリガーとする / 左記の双方を併用する - 過去のトランザクションをどう扱うか:
過去freeeへ連携した日付以降をすべて対象とする(当会計年度以降) / レジの前日のみのデータを対象とし過去データは連携しない - レジ側に修正があった場合の反映がどうなるか:
freee側のデータを削除して再度連携実行することで反映 / freee側で直接ハンド修正
連携のタイミングとしては、下記の形式が望ましいと考えられます。
- 夜間バッチ等で定期的に自動で実施
- 連携で作成した既存の取引以降の日付について(存在しない場合は当期期首以降)、締め処理済みのものを連携する
- 修正があった場合は、エンドユーザーが手動で当該日付の取引を削除し、再度連携することで反映する
バッチでの自動連携である場合には、連携サービス側で現在freeeとの連携が有効であるかを明示的にし、必要に応じて無効にできるということも必要となります。
掛・クレジット等の支払手段の反映について
掛取引・クレジット取引等については、2通りの処理ができます。例えば、クレジットカード売上であれば、次の2つです。
- 「売上高」のdealについてpaymentsを指定せず、"未決済"の取引として登録
- 「売上高」のdealについてpaymentsで売掛金扱いの口座を選択し、当該口座で決済を登録
いずれも仕訳としては
(借方)売掛金 X,XXX (貸方)売上高 X,XXX
となりますが、前者はfreee上で未決済扱いとなり「入金管理レポート」等で個別に債権が管理されます。一方、後者は個別に債権は管理されず、残高だけが反映されます。
クレジット売上の決済情報については、決済を未登録とするのではなく、売掛金扱いの口座で登録することをおすすめします。入金時の消込を効率的に処理できるためです。また、他の販売管理ソフトで債権管理をしているケースでも、個別の債権管理が不要であるため売掛金扱いの口座で登録する方法がおすすめです。
なお、Walletable のPOST APIにてgroup_nameを指定して勘定科目カテゴリーを指定できるので、それを用いて"売掛金口座"の作成が可能となっています。
下記に口座を分けて処理する場合の支払手段(dealのpaymentsに相当)の対応について例示します。
支払手段 | 口座 | 対応例・備考 |
---|---|---|
現金 | 「現金」 | 店舗毎に、レジ現金 及び 小口現金の口座を作成。(例:「品川店現金」、「品川店小口」) |
クレジットカード | 「売掛金」等 | 売掛金の口座を作成。(例:「クレジット売掛」) ※ 各店舗に入力させる場合は、権限の分割のため各店舗毎に作成する(例:「品川店クレジット売掛」) |
電子マネー | 「売掛金」等 | 会計処理に応じた勘定科目で口座を作成(例:「電子マネー売掛」) ※ 各店舗に入力させる場合は、権限の分割のため各店舗毎に作成する(例:「品川店電子マネー」) |
商品券 | 「売掛金」「他店商品券」等 | 会計処理に応じた勘定科目で、各店舗毎に口座を作成(例:「品川店商品券」) |
※ "口座"はfreee上で資金の出入り口として用いられるサイフのような単位となります。(例:現金、預金口座、クレジットカード)
※ 個別に債権管理をする場合はfreeeで未決済の取引として登録すると便利ですが(入金管理レポートから未収項目、支払管理レポートから未払項目を確認できる)、個別に債権管理をする必要がない場合は売掛金扱いの口座で一度決済登録したほうが消込の際の利便性が向上します(「口座振替」で一括して処理できるため)。
その他の留意点
預り金の発生・精算・振替
レジと連携する際、売上に関連する情報の他にもデータを連携できるケースがあります(レジ側の機能に依存)。
「預り金」は顧客が誤って多く支払ったケースや、前払いしたケースで発生します。収益額より大きい額で決済登録はできないので、売上の取引とは別個に作成します。
- 預り金の発生:
「現金」口座、勘定科目「預り金」、税区分「対象外」の収入取引 - 預り金の精算:
「現金」口座、勘定科目「預り金」、税区分「対象外」の支出取引 - 前受金の受領:
(予め「前受金口座」を作成した状態で)前受金口座から「現金」口座への口座振替 - 前受金の売上振替:
(予め「前受金口座」を作成した状態で)前受金口座、勘定科目「売上高」、税区分「課税売上X%」等(売上内容に準じるもの)の収入取引
カード決済サービス等と併用する際の留意点
Squareや楽天ペイ、STORES決済(旧:Coiney)といったカード決済サービス等との連携を活用しレジ側で保持しない手数料の記帳を効率化したい場合、レジ経由の売上と決済サービス等の売上が重複しないように双方を組み合わせる必要があります。そのため、
- レジ側のある決済手段の売上について、会計freeeへのデータ連携の対象に含めず、決済サービス連携で当該の売上高・手数料を取得
※ この場合、売上情報の粒度が荒くなる恐れがあります。 - レジサービス側で決済サービスのAPIから手数料の情報を取得し、手数料分もレジ側から反映する
といった機能が必要となります。
レジの売上情報の送信例
【前提】
〇〇株式会社はカフェを2店舗運営している。2017年03月24日の売上情報について、レジ締め後にfreeeに送信した。なお、売上は飲食と物販の2つの区分で管理しており、勘定科目はすべて「売上高」を用いている。非課税売上や免税売上は発生せずすべて課税売上で、金額の内訳は次の通りであった。
- 店舗1:
[売上の内訳] 飲食 500,000円、物販 200,000円
[支払手段の内訳] 現金 420,000円、カード 130,000円、電子マネー 100,000円、商品券 50,000円 - 店舗2:
[売上の内訳] 飲食 350,000円、物販 150,000円
[支払手段の内訳] 現金 220,000円、カード 200,000円、電子マネー 40,000円、商品券 40,000円
※カード・電子マネー・商品券は口座を用いて決済を登録する場合
リクエスト
curl -i -X POST \
-H "Authorization:Bearer #############################################" \
-H "Content-Type:application/json" \
-d \
{
"company_id" : ZZZZZZ,
"issue_date" : "2017-03-24",
"type" : "income",
"details" : [
{
"account_item_id" : AAAAAA,
"tax_code" : 101,
"item_id" : BBBBBBBBB,
"section_id" : XXXXXX,
"tag_ids" : ,
"amount" : 500000,
"description" : ""
},
{
"account_item_id" : AAAAAA,
"tax_code" : 101,
"item_id" : CCCCCCCCC,
"section_id" : XXXXXX,
"tag_ids" : ,
"amount" : 200000,
"description" : ""
},
{
"account_item_id" : AAAAAA,
"tax_code" : 101,
"item_id" : BBBBBBBBB,
"section_id" : YYYYYY,
"tag_ids" : ,
"amount" : 350000,
"description" : ""
},
{
"account_item_id" : AAAAAA,
"tax_code" : 101,
"item_id" : CCCCCCCCC,
"section_id" : YYYYYY,
"tag_ids" : ,
"amount" : 150000,
"description" : ""
}
],
"payments" : [
{
"date" : "2017-03-24",
"from_walletable_type" : "wallet",
"from_walletable_id" : DDDDDD,
"amount" : 420000
},
{
"date" : "2017-03-24",
"from_walletable_type" : "wallet",
"from_walletable_id" : EEEEEE,
"amount" : 130000
},
{
"date" : "2017-03-24",
"from_walletable_type" : "wallet",
"from_walletable_id" : FFFFFF,
"amount" : 100000
},
{
"date" : "2017-03-24",
"from_walletable_type" : "wallet",
"from_walletable_id" : GGGGGG,
"amount" : 50000
},
{
"date" : "2017-03-24",
"from_walletable_type" : "wallet",
"from_walletable_id" : HHHHHH,
"amount" : 220000
},
{
"date" : "2017-03-24",
"from_walletable_type" : "wallet",
"from_walletable_id" : IIIIII,
"amount" : 200000
},
{
"date" : "2017-03-24",
"from_walletable_type" : "wallet",
"from_walletable_id" : JJJJJJ,
"amount" : 40000
},
{
"date" : "2017-03-24",
"from_walletable_type" : "wallet",
"from_walletable_id" : KKKKKK,
"amount" : 40000
}
]
}' \
'https://api.freee.co.jp/api/1/deals'
Paramsの前提について:
Param Name | 内容 | 値 |
---|---|---|
company_id | 〇〇株式会社の事業所ID | ZZZZZZ |
account_item_id | 「売上高」の勘定科目ID | AAAAAA |
tax_code | 「課税売上8%」の税区分コード | 101 |
item_id | 飲食の品目ID | BBBBBBBBB |
item_id | 物販の品目ID | CCCCCCCCC |
section_id | 店舗1の部門ID | XXXXXX |
section_id | 店舗2の部門ID | YYYYYY |
from_walletable_id | 店舗1の現金の口座ID | DDDDDD |
from_walletable_id | 店舗1のカード売掛金の口座ID | EEEEEE |
from_walletable_id | 店舗1の電子マネー売掛金の口座ID | FFFFFF |
from_walletable_id | 店舗1の他店商品券の口座ID | GGGGGG |
from_walletable_id | 店舗2の現金の口座ID | HHHHHH |
from_walletable_id | 店舗2のカード売掛金の口座ID | IIIIII |
from_walletable_id | 店舗2の電子マネー売掛金の口座ID | JJJJJJ |
from_walletable_id | 店舗2の他店商品券の口座ID | KKKKKK |
※ 売掛金口座のtype(from_walletable_type)は、銀行口座でもクレジットカードでもないためwalletとなります。
※各種IDは事業所毎に異なります(税区分コードのみ共通)
(参考)CSV連携の場合の留意点
freee API 連携と並行し、CSV連携も実施したいという場合にご活用ください