mmk-paymint-notion-schema

Recommended Notion database schema for Paymint invoice tracking. Triggers on "paymint notion schema", "paymint database setup", "invoice database design", "paymint notion template", "paymint db schema".

Paymint Notion Database — Recommended Schema

Prerequisite: Read ../mmk-shared/SKILL.md for auth, global flags, and error handling. Related: mmk-paymint-notion-invoice — Batch send workflow that uses this schema.

This skill shows the recommended Notion database schema for Paymint invoice lifecycle tracking. Present the appropriate tier based on user needs.

Design Tiers

Minimal (11 properties)

Just enough for the mmk-paymint-notion-invoice recipe. Use this when the user only needs to send invoices and track basic results.

PropertyTypeCategoryNotes
(title)titleInputDescriptive label (e.g., "김철수 - 3월 워크샵")
고객명rich_textInputRecipient name (maps to --name)
연락처phone_numberInputKorean mobile number (maps to --phone)
결제금액numberInputInvoice amount in KRW (maps to --amount)
청구사유rich_textInputProduct/service description (maps to --product)
안내메시지rich_textInputInvoice message (maps to --message)
유효기간dateInputExpiry date (YYYY-MM-DD). Default: 7 days from send
결제상태selectStatusOptions: 미결제, 청구완료, 발송실패, 결제완료, 취소
청구서IDrich_textResultbill_id from send response
발송결과코드rich_textResultResult code ("0000" = success)
ShortURLurlResultPayment link

Full (31 properties)

Complete invoice lifecycle tracking including payment callbacks and cancellations. Use this for production databases that need to track the full payment flow.


1. Input Fields

Properties the user fills in before sending invoices.

PropertyTypeNotes
(title)titleDescriptive label (e.g., "김철수 - 3월 워크샵"). Row identifier in Notion list view.
고객명rich_textRecipient name (maps to --name)
연락처phone_numberKorean mobile number (maps to --phone)
결제금액numberInvoice amount in KRW (maps to --amount)
청구사유rich_textProduct/service description (maps to --product)
안내메시지rich_textInvoice message (maps to --message)
유효기간dateExpiry date (YYYY-MM-DD). Default: 7 days from send date if empty
이메일emailOptional: recipient email for records

2. Status & Send Result Fields

Written by the mmk-paymint-notion-invoice recipe after sending.

PropertyTypeNotes
결제상태select미결제 / 청구완료 / 발송실패 / 결제완료 / 취소
청구서IDrich_textbill_id from send response. Must be rich_text, NOT title (title has update restrictions).
발송결과코드rich_textResult code ("0000" = success)
발송결과메시지rich_textHuman-readable result message
ShortURLurlPayment link sent to customer
CallbackURLurlWebhook callback URL (if configured)

결제상태 Options

OptionMeaningSet by
미결제Pending — invoice not yet sentInitial state
청구완료Invoiced — send succeededRecipe write-back
발송실패Failed — send errorRecipe write-back
결제완료Paid — customer completed paymentPayment callback
취소Cancelled/refundedCancel operation

3. Payment Result Fields

Populated by the payment system callback when the customer pays. The recipe does NOT write these — they come from the payment gateway webhook.

PropertyTypeNotes
결제수단selectPayment method (card, transfer, etc.)
승인번호rich_textApproval number
승인금액numberApproved amount
승인일시rich_textApproval datetime
카드/계좌번호rich_textMasked card/account number
카드/은행코드rich_textCard/bank code
카드/은행명rich_textCard/bank name
매입사코드rich_textAcquirer code
매입사명rich_textAcquirer name
할부개월rich_textInstallment months

4. Cancel Fields

Populated on cancel/refund operations.

PropertyTypeNotes
취소결과코드rich_textCancel result code
취소결과메시지rich_textCancel result message
취소일시rich_textCancel datetime
원거래승인번호rich_textOriginal approval number

5. Meta Fields

PropertyTypeNotes
메모rich_textInternal notes
생성일created_timeAuto-set by Notion
수정일last_edited_timeAuto-set by Notion

Important Design Notes

  • Title is a descriptive label, not a data field. Use it for human-readable row identification in Notion views (e.g., "김철수 - 3월 워크샵"). The title property has update restrictions in the Notion API, so never use it for write-back targets like 청구서ID.
  • 고객명 is rich_text, not title. This keeps the customer name as a separate queryable and writable field that the invoice recipe can reliably map.
  • 청구서ID must be rich_text. The recipe writes bill_id here after sending. If this were title type, the write-back would fail.
  • Category 3 (Payment Result) and 4 (Cancel) fields are populated by external systems (payment gateway callbacks), not by the recipe. Include them only if your system has webhook integration.
  • 결제상태 select options cover the full lifecycle: pending → invoiced → paid (or failed/cancelled). The invoice recipe maps 미결제 as the "pending" filter and 청구완료/발송실패 as success/failure write-back values.

See Also