新機能
1. Discount Codes: Amount discounts、スケジュール設定、利用資格ルール
Discount codes は、パーセンテージだけではなくなりました。コードで固定額を差し引いたり、開始日をスケジュールしたり、通貨ごとに異なる価格を設定したり、利用できる顧客を制限したりできるようになりました。 Amount discountstype を flat に設定すると、パーセンテージではなく固定額が差し引かれます。差し引き額は各 line item に適用されるのではなく、カート全体でまとめて適用されます。

currency_options を使用すると、販売するすべての通貨で1つのコードを正しく動作させられます。各エントリでは、1つの通貨について最大割引額(Amount code の場合は差し引き額、Percentage code の場合は上限)と、カートの最低金額を設定します。Amount discount には、解決可能なデフォルトを持つ通貨オプションが少なくとも1つ必要です。Percentage discount では通貨オプションは任意です。
顧客の利用資格
customer_eligibility は、コードを利用できる顧客を制御します。

GET /discounts/{discount_id}/customers で追加済みの顧客を一覧表示し、POST /discounts/{discount_id}/customers で追加、DELETE /discounts/{discount_id}/customers/{customer_id} で1人の顧客を削除します。
スケジュール設定と顧客ごとの上限
starts_at を設定すると、コードの開始を将来の日付にスケジュールできます。未設定のままにするとコードは直ちに有効になり、expires_at より厳密に前の日時でなければなりません。per_customer_usage_limit を使用すると、1人の顧客がコードを利用できる回数に上限を設定できます。これは全体の usage_limit とは別の上限であり、それを超えることはできません。
カートの最低金額は常にカートの元の価格を基準に計算され、stack の途中の累計額を基準にはしません。そのため、stack の順序によって最低金額を満たすかどうかが変わることはありません。
2. Webhooks エクスペリエンスを再構築
ダッシュボードの webhooks セクションを、埋め込みポータルに代わるネイティブなエクスペリエンスとして再構築しました。テーブル、フィルター、ナビゲーションが一貫した形でダッシュボード内に統合され、モバイルでも適切に動作します。- Endpoints — side sheet で endpoint を作成・編集し、検索可能なツリーから event type を選択できます。過去24時間のエラー率も一目で確認できます。
- Activity and logs — Delivery activity chart で時間経過に伴う配信試行を確認し、配信済みメッセージを閲覧できます。message detail ページでは payload と、response code および duration を含むすべての配信試行を確認できます。各試行はそこから replay できます。
- Event catalog — Dodo Payments が送信するすべての event type を、schema と example payload とともに閲覧できます。
- Endpoint overview — 過去24時間の配信統計、表示またはローテーション可能な signing secret、Replay history を確認できます。
- Testing — go live する前に、example event を endpoint に送信して receiver を検証できます。
- Advanced — 配信を throttle し、endpoint へのすべてのリクエストに付与する custom headers を管理し、transformation を編集できます。
- Bulk replay — endpoint 上で、失敗したメッセージを復旧したり、dispatch されなかったメッセージを replay したり、フィルターした範囲を replay したりできます。
- Email alerting — endpoint への配信が失敗し始めたときにメールを送信するアドレスを一覧表示できる、新しい Settings tab が追加されました。複数のアドレスはカンマで区切り、空欄にするとアラートが無効になります。
これはダッシュボードのみの変更です。既存の endpoint、signing secret、signature verification、event name、payload に変更はなく、integration 作業は必要ありません。
3. サブスクリプションで Cash App Pay に対応
Cash App Pay が、1回限りの決済だけでなく、継続的なサブスクリプションにも利用できるようになりました。既存のカードオプションに加えて、USD で請求する US checkout で利用できます。 詳しくは、Digital Wallets をご覧ください。4. SEPA Direct Debit
SEPA Direct Debit が Eurozone 全域で利用できるようになり、顧客はカードではなく銀行口座から直接支払えるようになりました。1回限りの決済向け EUR checkout で提供されます。 詳しくは、European Payment Methods をご覧ください。5. より明確な決済失敗メッセージ
決済に失敗した場合、あなたと顧客には raw processor text ではなく、用途に合わせて作成された文面が表示されるようになりました。すべての失敗は 46種類の統一 error code に分類され、それぞれが2つの対象者向けに対応付けられています。- あなたには、決済上に headline と推奨アクションが表示されます。顧客に retry を依頼すべきか、銀行に連絡すべきか、別のカードを使うべきかを判断できます。Payment object の
error_messageは、error_codeが認識済みの unified code である場合に、この文面を保持します。 - 顧客には、checkout failure screen、Customer Portal、dunning email に平易な説明が表示されます。例:「カードのセキュリティコード(CVC)が正しくないようです。もう一度入力して再試行してください。」
6. 顧客が自分でサブスクリプションをキャンセル可能に
Allow Subscription Cancellation がダッシュボード設定の Subscriptions tab に独立した設定として追加され、end to end で適用されるようになりました。無効にすると、Customer Portal では cancel button が無効になり、API は顧客によるキャンセルを403 として拒否します。これは即時キャンセルと「次回請求日にキャンセル」の両方に適用されます。以前は設定によってボタンが非表示になるだけだったため、顧客は API 経由でキャンセルできました。
この設定はデフォルトで有効です。merchant API やダッシュボードから行うあなた自身のキャンセルには影響せず、顧客はすでにスケジュールしたキャンセルをいつでも取り消せます。
詳しくは、Customer Portal | Subscriptions をご覧ください。
7. Payout Webhooks
自身の payout に関する webhooks を受信できるようになり、polling なしで会計システムと照合できるようになりました。payout.created は以前、payout.not_initiated として発行されていました。既存の endpoint で payout.not_initiated を filter している場合は、引き続き一致するよう filter を payout.created に更新してください。この段階では、payload の status field は引き続き not_initiated を報告します。8. ダッシュボードからログインメールアドレスを変更
サポートに連絡せず、サインインに使用するメールアドレスを変更できるようになりました。Account tab が再設計され、新しい Change Email セクションとフローを開始する Change email button が追加されています。 検証は2段階で行われます。まず、本人確認のため 現在の アドレスにコードをメールで送信し、次に、新しいアドレスを管理していることを確認するため、新しい アドレスに2つ目のコードを送信します。両方の検証が完了すると、次のようになります。- 以後は新しいアドレスでサインインします。以前のアドレスは、password、magic link、メールで送信される code では使用できなくなります。
- Google や GitHub sign-in など、リンク済みの identity provider は unlink され、再接続が必要になります。
- password、business、team access、verification status は変更されません。
- 予期しない変更が見過ごされないよう、以前のアドレスに通知が送信されます。
9. Analytics: 新しいウィジェットと改善
Analytics v3 の再構築を基盤として、このリリースでは新しい可視化を追加し、既存の可視化も改善しました。- Revenue by country が全幅のコロプレスマップになりました。横には国別のランキングが表示され、他のカードと同様に共有できます。
- trend chart を再描画し、crosshair hover、x-axis 上の rolling date pill、コンパクトな tooltip に対応しました。
- 新しい date preset — Last 4 weeks に代わって Last 30 days が追加され、Last 6 months も選択できるようになりました。
- フィルターが保持されます。 date preset と comparison mode は business ごとに保存され、毎回デフォルトに戻るのではなく、デバイス間で引き継がれます。
- Top customers は名前で識別され、名前がない場合は email にフォールバックします。
- Revenue by country は最大 上位150か国 を返すようになりました。
改善とバグ修正
10. 通貨で Payments をフィルター
GET /payments は任意の currency query parameter を受け付けるため、指定した通貨で settlement された Payments のみを一覧表示できます。例:GET /payments?currency=EUR。同じ filter はダッシュボードの Payments table でも利用できます。
詳しくは、List Payments をご覧ください。
11. Dispute の response window を10日間に延長
Dispute の作成後、回答までの期間が4日から10日間になりました。ダッシュボードの dispute に表示される countdown と、API が返す response deadline の両方に、延長された期間が反映されます。 詳しくは、Disputes をご覧ください。12. Payout bank account form をより明確に
payout bank account の追加がよりわかりやすくなりました。field label、description、tooltip が business type に応じて変化するため、個人事業主でも account holder と beneficiary name が重複して表示されなくなります。銀行として Other を選択すると名前を自由に入力できます。China domestic bank code は CNAPS と表示され、payouts page は test mode でも表示されるため、どちらの mode からでもリンク済みアカウントにアクセスできます。 詳しくは、Payouts Process をご覧ください。その他の修正と改善
- 決済が失敗した場合、plan change credit が取り消されます。 subscription plan change 中に発行された proration credit は、結果として決済が成功しなかった場合に残らなくなりました。
- **Paid-trial invoice に trial charge が表示されます。**通常の recurring price ではありません。
- Percentage discount がカートの最低金額を正しく考慮します。 running total ではなく base price を基準に測定され、discount lock timeout は generic
503ではなく、固有の error code を返すようになりました。 - **すでに削除された payment method の削除が成功するようになりました。**エラーを返さないため、安全に idempotent な呼び出しができます。
- subscription の payment method 更新時に、India mandate floor に使用される通貨を修正しました。
- 許可範囲を超える credit ledger entry は、後で失敗するのではなく、型付きの
400として拒否されます。 - Pay-what-you-want product が shared checkout link で固定額に対応し、entitlement ID が entitlement detail panel に表示されるようになりました。
- Analytics の修正:lifetime-value series、MRR に含まれる add-on、all-time range での period comparison の非表示、現在の bucket で停止する series、range と comparison label の明確化。
- プラットフォーム全体で軽微なバグを修正し、安定性を改善しました。