PosTransactionDto 仕様 — 取引データのフィールドリファレンス

PosTransactionDto 取引データ スキーマ リファレンス API スマレジ Square POS連携

レシートローラーが扱う取引データの正規モデル PosTransactionDto の全フィールドを解説します。各 POS ベンダー(スマレジ、Square、その他)の取引データはすべてこのモデルに変換されたうえで、データベース・ダッシュボード・REST API・MCP ツールを通じて利用されます。

外部システムから API 経由で取引を読み書きする場合や、ベンダー側のフィールドがレシートローラー上でどのように見えるかを理解したい場合の参考にしてください。

概要

PosTransactionDto は 1 件の取引(1 件の会計)を表します。明細(商品単位)は LineItems として配列で保持され、内部的には LineItemsJson に JSON で永続化されています。

  • 金額は Currency で示す通貨(既定 JPY)で、特記がない限り 税込 です
  • すべての日時は UTC 保持・表示時に JST 変換
  • キー: TransactionId(レシートローラー内部 ID)と ExternalTransactionId(POS ベンダー側の ID)の 2 つを持ちます
  • 支払いは複数テンダー(分割会計)に対応し、Payments 配列で保持します(単一文字列の PaymentMethod は後方互換のため残しています)
  • 返金・外部連携 ID・カード情報・生データなど、ベンダーが送る情報を取りこぼさないよう拡張されています

識別子

フィールド説明
TransactionIdstringレシートローラー内部の取引 ID。多くの場合 POS 側の ID をそのまま採用します(idempotent upsert のキーになります)
ExternalTransactionIdstringPOS ベンダー側の取引 ID。スマレジ: transactionHeadId、Square: Payment.Id
OrganizationIdstring (Guid)ビジネスアカウントの ID
StoreIdstring (Guid)店舗 ID
TerminalIdstring (Guid)POS 端末(レジ機)の ID

日時

フィールド説明
TransactionDateTimeDateTime (UTC)会計が成立した時刻。Square created_at、スマレジ transactionDateTime から変換
CreatedAtDateTime (UTC)レシートローラー側のレコード作成時刻(監査用)
UpdatedAtDateTime (UTC)レシートローラー側のレコード更新時刻(監査用)

金額

フィールド説明
Currencystringすべての金額の通貨コード(ISO-4217、既定 JPY)。Square は money.currency から、スマレジは JPY 固定
TotalAmountdecimal合計金額(税込)
TaxAmountdecimal消費税額
SubtotalAmountdecimal小計(税抜)= TotalAmount - TaxAmount
DiscountAmountdecimal割引額(負の値ではなく正の値で保持)
TipAmountdecimal?チップ・サービス料。ソースが別途送る場合のみ(Square tip_money)。該当しない場合は null

明細

フィールド説明
LineItemsList<PosTransactionLineItemDto>商品単位の明細配列(計算プロパティ。実体は LineItemsJson
LineItemsJsonstring (JSON)明細の JSON 永続化形式。直接読まず LineItems を使ってください
ItemCountint明細数量の合計(LineItems.Sum(li => li.Quantity)

PosTransactionLineItemDto

フィールド説明
ProductNamestring商品名。バリエーションがある場合は "商品名 (バリエーション名)" 形式
Quantityint販売数量
UnitPricedecimal単価(税抜)
Subtotaldecimal小計(税込)
TaxRatedecimal実効税率(%)。Square では明細から自動計算、スマレジでは taxRate を採用
TaxAmountdecimal?明細単位の税額。Square total_tax_money、スマレジ tax。税率しか持たないソース・過去データでは null
DiscountAmountdecimal?明細単位の割引額。Square total_discount_money。明細別割引を持たないソースでは null
Categorystring商品カテゴリ。スマレジは categoryName、Square は現状空
Skustring?ベンダー SKU / 商品コード。スマレジは productCode。PIM 商品との照合に使用
CostPriceAtSaledecimal?販売時点の PIM 原価(税抜)スナップショット。粗利計算に使用。原価未設定なら null
ProductIdstring?ソース商品 ID(判明時)
CatalogObjectIdstring?ベンダーのカタログオブジェクト ID(Square catalog_object_id、スマレジ productId)。システム間連携用
Unitstring?販売単位(「個」「kg」など)。ソースが持つ場合のみ
Notestring?明細単位の備考
ModifiersList<PosLineItemModifierDto>?明細のオプション・モディファイア(Square modifiers)。NameAmount を持つ

支払い

取引は複数のテンダー(分割会計)を持てます。完全な内訳は Payments(実体は PaymentsJson)に保持し、単一文字列の PaymentMethod は後方互換のため「主たるテンダー」を保持します。

フィールド説明
PaymentMethodstring (enum)主たる支払い方法を正規化:
Cash / CreditCard / QR / IC / Other
PaymentsList<PosPaymentDto>テンダーの完全な内訳(計算プロパティ。実体は PaymentsJson
PaymentsJsonstring (JSON)テンダー内訳の JSON 永続化形式
ReceiptNumberstringレシート番号(POS 側で発番された番号)

PosPaymentDto

フィールド説明
Methodstring正規化した方法(Cash / CreditCard / QR / IC / Other)、または対応しない場合はソースの生の名称
Amountdecimalこのテンダーの金額
TenderedAmountdecimal?預かり金額(ソースが報告する場合)
ChangeAmountdecimal?釣り銭(ソースが報告する場合)
Brandstring?カードブランド(VISA、Mastercard など)。カード決済のみ
Last4string?カード下 4 桁。表示可(PAN は保持しません)
ExternalIdstring?ソース側の支払い ID(取引 ID と異なる場合)

返金

(一部)返金された取引の返金内訳です。Refund(実体は RefundJson)に保持されます。

フィールド説明
RefundPosRefundDto?返金内訳(なければ null)
RefundJsonstring (JSON)返金内訳の JSON 永続化形式

PosRefundDto

フィールド説明
Amountdecimal返金額
IsPartialbool一部返金かどうか
Reasonstring?返金理由
OriginalTransactionIdstring?返金対象の元取引
RefundedAtDateTime?返金日時

注: モデルと API のかたちは整備済みで、返金データが存在すれば反映されます。Square / スマレジは返金を別の Webhook イベントとして送るため、エンドツーエンドの返金取込は別途の同期処理で対応します。

外部連携・レシートURL

ソース POS の各種 ID とレシート URL を、取引を出自レコードへ突き合わせられるよう保持します。

フィールド説明
ReceiptUrlstring顧客向けレシート URL(Square receipt_url)。構造化フィールドです(以前は Notes に格納していましたが廃止)
ExternalIdsPosExternalIdsDto?ベンダー横断 ID(計算プロパティ。実体は ExternalIdsJson
ExternalIdsJsonstring (JSON)外部 ID の JSON 永続化形式

PosExternalIdsDto

フィールド説明
ProviderOrderIdstring?ベンダーの注文 ID(Square order_id
LocationIdstring?ベンダーのロケーション ID(Square location_id
ProviderCustomerIdstring?ベンダーの顧客 ID(Square customer_id、スマレジ customerId)

生データ

フィールド説明
RawJsonstring (JSON)取込時のソース生ペイロード。モデル化していないフィールド(カード fingerprint 等)も復元できるよう保持します。サーバー内部用で API では返しません

スタッフ

フィールド説明
StaffNamestring担当スタッフ名(取得できなかった場合は空)
StaffIdstringPOS ベンダー側のスタッフ ID(Square: team_member_id、スマレジ: staffId

ステータス・出典

フィールド説明
Statusstring (enum)Completed / Voided / Refunded / Pending。表示用は StatusDisplayName
Sourcestring (enum)API(POS から自動取込)/ Webhook(POS からプッシュ通知)/ CSV(一括取込)/ Manual(手動入力)
Notesstring備考・メモ。レシート URL は ReceiptUrl に移動したため、ここには格納しなくなりました

CRM 連携

取引が顧客に紐づけられた場合(POS 側の会員情報、電話・メール一致など)、レシートローラーの ICrmCustomerResolver が以下のフィールドを埋めます。

フィールド説明
MembershipCodestring?レシートローラー会員番号。紐付かなかった場合は null
CrmCustomerIdstring?CRM 顧客レコードの ID。紐付かなかった場合は null

ソース側の生の顧客 ID は ExternalIds.ProviderCustomerId で別途参照できます。

表示用ヘルパー

UI 側で利用するための計算プロパティです。直接 DB に保存されません。

  • PaymentMethodDisplayName — 支払い方法の日本語表記(例: 「クレジットカード」)
  • StatusDisplayName — ステータスの日本語表記(例: 「完了」「取消」)
  • StatusBadgeClass — Bootstrap バッジ用 CSS クラス
  • SourceDisplayName — 出典の表示名
  • FormattedDateTime — 「yyyy/MM/dd HH:mm」形式の日時
  • FormattedTotal — カンマ区切りの合計金額

後方互換性

上記の拡張フィールドはすべて 追加・nullable で、JSON 列として永続化されます。Table Storage のマイグレーションは不要で、既存行や既存の LineItemsJson はそのまま有効です。新フィールドは新規に取り込まれた取引から反映されます(過去データへ反映するには再同期が必要です)。

ベンダー別マッピング

具体的に各 POS ベンダーがどのフィールドをどう埋めるかは、以下のベンダー別マッピング記事をご参照ください。

関連ガイド

公開日: 2026-05-29 更新日: 2026-06-21