{
  "synthetic": true,
  "execution": "Teaching record only; no live integration tested",
  "slug": "stripe-minor-unit-boundary",
  "group": "commerce",
  "title": [
    "Approve the amount unit before connecting Stripe",
    "接入Stripe前，先验收金额单位"
  ],
  "intro": [
    "For a merchant commissioning a multilingual checkout, a correct price label is only half the handover. Agree the currency, operation and integer amount sent to the payment provider. A universal “multiply by 100” helper can make a yen price one hundred times too large.",
    "委托制作多语结账时，价格文字正确只是一半。商家还要明确币种、操作类型和传给支付平台的整数金额。“所有币种乘100”的通用函数，会把日元金额放大百倍。"
  ],
  "facts": [
    [
      "Stripe documents minor-unit amounts, zero-decimal currencies and operation-specific exceptions. These are separate from currency conversion.",
      "Stripe说明了最小单位、零小数币种以及不同操作的例外；这些规则与汇率转换分开。",
      "https://docs.stripe.com/currencies#specify-amounts-in-api-requests"
    ]
  ],
  "columns": [
    [
      "Approved input",
      "Operation and basis",
      "Expected handover"
    ],
    [
      "已批准输入",
      "操作与口径",
      "预期交付"
    ]
  ],
  "example": [
    [
      [
        "AUD 12.34",
        "Charge; 2 decimals",
        "amount=1234, currency=aud"
      ],
      [
        "AUD 12.34",
        "收款；2位小数",
        "amount=1234，currency=aud"
      ]
    ],
    [
      [
        "JPY 1234",
        "Charge; zero decimals",
        "amount=1234, not 123400"
      ],
      [
        "JPY 1234",
        "收款；零小数",
        "amount=1234，不是123400"
      ]
    ],
    [
      [
        "TWD 800.45",
        "Manual payout special case",
        "80045 is not divisible by 100; do not silently round"
      ],
      [
        "TWD 800.45",
        "手动提现特殊规则",
        "80045不能被100整除；不得静默取整"
      ]
    ],
    [
      [
        "Unknown currency or operation",
        "No approved conversion rule",
        "Stop with explicit unsupported result"
      ],
      [
        "未知币种或操作",
        "没有批准的单位规则",
        "明确返回不支持并暂停"
      ]
    ]
  ],
  "steps": [
    [
      "Record a decimal string and ISO currency code in the brief; keep charge, refund and payout fields distinct. Use integer arithmetic or an audited decimal library, not floating-point guessing.",
      "交付说明保留十进制字符串及ISO币种代码；收款、退款与提现分字段。使用整数或经核对的十进制库，不靠浮点猜测。"
    ],
    [
      "Give the supplier the four rows above and a deliberately wrong JPY payload. Require a visible rejection for unsupported combinations and an explicit rounding policy where one is needed.",
      "把上表四例及故意错误的日元请求交给供应商。未知组合必须明确拒绝；需要舍入时另定批准口径。"
    ],
    [
      "In an authorised test environment, compare the displayed total, stored order amount, submitted minor units and provider record. Redact identifiers and retain the operation/version.",
      "在获准测试环境核对展示总额、订单存储、请求最小单位及平台记录；标识脱敏并保留操作及版本。"
    ]
  ],
  "result": [
    "The first two rows intentionally produce the same integer for different prices and currencies. The integer alone cannot reconcile an order. Carry currency and operation through exports, refunds and accounting handovers; never merge records on amount alone. The TWD row is a stop decision, not a recommendation to pay out a rounded balance.",
    "前两行虽然价格和币种不同，却得到同一个整数，所以不能单靠整数对账。导出、退款和会计交接必须连同币种及操作保存，不能只按金额合并。台币一行表示暂停，不是在建议把余额取整后提现。"
  ],
  "accept": [
    "Accept only after the supplier demonstrates both valid representations and rejection of the deliberately invalid cases. A screenshot of a formatted price does not satisfy the contract.",
    "供应商须演示正确表示以及错误例子的拒绝结果，格式化价格截图不能代替验收。"
  ],
  "limit": [
    "Synthetic arithmetic only. No payment, payout, tax, exchange-rate or fee calculation was executed. Currency availability and provider limits depend on the actual account and payment method.",
    "仅为合成算例；没有付款、提现或计算税费、汇率。实际账户和支付方式决定币种可用性及平台限额。"
  ],
  "oldLinks": [
    {
      "language": "zh",
      "target": "/zh/scenarios/accountant-ecommerce-reconciliation/",
      "anchor": "把金额口径交给电商对账流程",
      "reason": "Denomination and currency must survive reconciliation handover."
    }
  ]
}
