@fantastic.dev/better-stripe 0.19.0 → 0.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +22 -3
- package/dist/client/connect/transferReceipt.d.ts.map +1 -1
- package/dist/client/connect/transferReceipt.js +1 -14
- package/dist/client/connect/transferReceipt.js.map +1 -1
- package/dist/component/_generated/component.d.ts +297 -0
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/earnings/triggers.d.ts +134 -0
- package/dist/component/earnings/triggers.d.ts.map +1 -1
- package/dist/component/payoutRelease/allocation.d.ts +48 -0
- package/dist/component/payoutRelease/allocation.d.ts.map +1 -0
- package/dist/component/payoutRelease/allocation.js +98 -0
- package/dist/component/payoutRelease/allocation.js.map +1 -0
- package/dist/component/payoutRelease/helpers.d.ts +106 -0
- package/dist/component/payoutRelease/helpers.d.ts.map +1 -0
- package/dist/component/payoutRelease/helpers.js +119 -0
- package/dist/component/payoutRelease/helpers.js.map +1 -0
- package/dist/component/payoutRelease/mutations.d.ts +218 -0
- package/dist/component/payoutRelease/mutations.d.ts.map +1 -0
- package/dist/component/payoutRelease/mutations.js +254 -0
- package/dist/component/payoutRelease/mutations.js.map +1 -0
- package/dist/component/payoutRelease/queries.d.ts +84 -0
- package/dist/component/payoutRelease/queries.d.ts.map +1 -0
- package/dist/component/payoutRelease/queries.js +51 -0
- package/dist/component/payoutRelease/queries.js.map +1 -0
- package/dist/component/payoutRelease/schema.d.ts +289 -0
- package/dist/component/payoutRelease/schema.d.ts.map +1 -0
- package/dist/component/payoutRelease/schema.js +56 -0
- package/dist/component/payoutRelease/schema.js.map +1 -0
- package/dist/component/schema.d.ts +110 -0
- package/dist/component/schema.js +3 -0
- package/dist/component/schema.js.map +1 -1
- package/docs/accounts-v2-preview.md +39 -1
- package/docs/react-workflows.md +31 -0
- package/docs/settlement.md +31 -0
- package/package.json +1 -1
- package/src/client/connect/payoutAllocation.test.ts +292 -0
- package/src/client/connect/transferReceipt.ts +1 -14
- package/src/component/_generated/api.ts +8 -0
- package/src/component/_generated/component.ts +372 -0
- package/src/component/payout-release.test.ts +588 -0
- package/src/component/payoutRelease/allocation.ts +147 -0
- package/src/component/payoutRelease/helpers.ts +168 -0
- package/src/component/payoutRelease/mutations.ts +309 -0
- package/src/component/payoutRelease/queries.ts +56 -0
- package/src/component/payoutRelease/schema.ts +69 -0
- package/src/component/schema.ts +6 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
export declare const observation: import("convex/values").VObject<{
|
|
2
|
+
currency: string;
|
|
3
|
+
ledgerFingerprint: string;
|
|
4
|
+
matureNet: number;
|
|
5
|
+
observedAt: number;
|
|
6
|
+
pendingCredits: number;
|
|
7
|
+
stripeTransferId: string;
|
|
8
|
+
transactionIds: string[];
|
|
9
|
+
}, {
|
|
10
|
+
stripeTransferId: import("convex/values").VString<string, "required">;
|
|
11
|
+
currency: import("convex/values").VString<string, "required">;
|
|
12
|
+
matureNet: import("convex/values").VFloat64<number, "required">;
|
|
13
|
+
pendingCredits: import("convex/values").VFloat64<number, "required">;
|
|
14
|
+
ledgerFingerprint: import("convex/values").VString<string, "required">;
|
|
15
|
+
observedAt: import("convex/values").VFloat64<number, "required">;
|
|
16
|
+
transactionIds: import("convex/values").VArray<string[], import("convex/values").VString<string, "required">, "required">;
|
|
17
|
+
}, "required", "currency" | "ledgerFingerprint" | "matureNet" | "observedAt" | "pendingCredits" | "stripeTransferId" | "transactionIds">;
|
|
18
|
+
export declare const allocation: import("convex/values").VObject<{
|
|
19
|
+
amount: number;
|
|
20
|
+
role?: "affiliate" | "other" | "store" | undefined;
|
|
21
|
+
stripeTransferId: string;
|
|
22
|
+
}, {
|
|
23
|
+
stripeTransferId: import("convex/values").VString<string, "required">;
|
|
24
|
+
amount: import("convex/values").VFloat64<number, "required">;
|
|
25
|
+
role: import("convex/values").VUnion<"affiliate" | "other" | "store" | undefined, [import("convex/values").VLiteral<"store", "required">, import("convex/values").VLiteral<"affiliate", "required">, import("convex/values").VLiteral<"other", "required">], "optional", never>;
|
|
26
|
+
}, "required", "amount" | "role" | "stripeTransferId">;
|
|
27
|
+
export declare const claimFields: {
|
|
28
|
+
accountId: import("convex/values").VString<string, "required">;
|
|
29
|
+
ownerKey: import("convex/values").VString<string, "required">;
|
|
30
|
+
operationKey: import("convex/values").VString<string, "required">;
|
|
31
|
+
expectedRevision: import("convex/values").VFloat64<number, "required">;
|
|
32
|
+
currency: import("convex/values").VString<string, "required">;
|
|
33
|
+
amount: import("convex/values").VFloat64<number, "required">;
|
|
34
|
+
allocations: import("convex/values").VArray<{
|
|
35
|
+
amount: number;
|
|
36
|
+
role?: "affiliate" | "other" | "store" | undefined;
|
|
37
|
+
stripeTransferId: string;
|
|
38
|
+
}[], import("convex/values").VObject<{
|
|
39
|
+
amount: number;
|
|
40
|
+
role?: "affiliate" | "other" | "store" | undefined;
|
|
41
|
+
stripeTransferId: string;
|
|
42
|
+
}, {
|
|
43
|
+
stripeTransferId: import("convex/values").VString<string, "required">;
|
|
44
|
+
amount: import("convex/values").VFloat64<number, "required">;
|
|
45
|
+
role: import("convex/values").VUnion<"affiliate" | "other" | "store" | undefined, [import("convex/values").VLiteral<"store", "required">, import("convex/values").VLiteral<"affiliate", "required">, import("convex/values").VLiteral<"other", "required">], "optional", never>;
|
|
46
|
+
}, "required", "amount" | "role" | "stripeTransferId">, "required">;
|
|
47
|
+
observations: import("convex/values").VArray<{
|
|
48
|
+
currency: string;
|
|
49
|
+
ledgerFingerprint: string;
|
|
50
|
+
matureNet: number;
|
|
51
|
+
observedAt: number;
|
|
52
|
+
pendingCredits: number;
|
|
53
|
+
stripeTransferId: string;
|
|
54
|
+
transactionIds: string[];
|
|
55
|
+
}[], import("convex/values").VObject<{
|
|
56
|
+
currency: string;
|
|
57
|
+
ledgerFingerprint: string;
|
|
58
|
+
matureNet: number;
|
|
59
|
+
observedAt: number;
|
|
60
|
+
pendingCredits: number;
|
|
61
|
+
stripeTransferId: string;
|
|
62
|
+
transactionIds: string[];
|
|
63
|
+
}, {
|
|
64
|
+
stripeTransferId: import("convex/values").VString<string, "required">;
|
|
65
|
+
currency: import("convex/values").VString<string, "required">;
|
|
66
|
+
matureNet: import("convex/values").VFloat64<number, "required">;
|
|
67
|
+
pendingCredits: import("convex/values").VFloat64<number, "required">;
|
|
68
|
+
ledgerFingerprint: import("convex/values").VString<string, "required">;
|
|
69
|
+
observedAt: import("convex/values").VFloat64<number, "required">;
|
|
70
|
+
transactionIds: import("convex/values").VArray<string[], import("convex/values").VString<string, "required">, "required">;
|
|
71
|
+
}, "required", "currency" | "ledgerFingerprint" | "matureNet" | "observedAt" | "pendingCredits" | "stripeTransferId" | "transactionIds">, "required">;
|
|
72
|
+
status: import("convex/values").VUnion<"canceled" | "paid" | "rejected" | "reserved" | "returned" | "submitted", [import("convex/values").VLiteral<"reserved", "required">, import("convex/values").VLiteral<"submitted", "required">, import("convex/values").VLiteral<"paid", "required">, import("convex/values").VLiteral<"returned", "required">, import("convex/values").VLiteral<"canceled", "required">, import("convex/values").VLiteral<"rejected", "required">], "required", never>;
|
|
73
|
+
attemptedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
74
|
+
stripePayoutId: import("convex/values").VString<string | undefined, "optional">;
|
|
75
|
+
returnTransactionId: import("convex/values").VString<string | undefined, "optional">;
|
|
76
|
+
rejection: import("convex/values").VObject<{
|
|
77
|
+
code: "amount_too_small" | "balance_insufficient";
|
|
78
|
+
requestId: string;
|
|
79
|
+
} | undefined, {
|
|
80
|
+
requestId: import("convex/values").VString<string, "required">;
|
|
81
|
+
code: import("convex/values").VUnion<"amount_too_small" | "balance_insufficient", [import("convex/values").VLiteral<"balance_insufficient", "required">, import("convex/values").VLiteral<"amount_too_small", "required">], "required", never>;
|
|
82
|
+
}, "optional", "code" | "requestId">;
|
|
83
|
+
};
|
|
84
|
+
export declare const claimDoc: import("convex/values").VObject<{
|
|
85
|
+
_creationTime: number;
|
|
86
|
+
_id: import("convex/values").GenericId<"payoutReleaseClaims">;
|
|
87
|
+
accountId: string;
|
|
88
|
+
allocations: {
|
|
89
|
+
amount: number;
|
|
90
|
+
role?: "affiliate" | "other" | "store" | undefined;
|
|
91
|
+
stripeTransferId: string;
|
|
92
|
+
}[];
|
|
93
|
+
amount: number;
|
|
94
|
+
attemptedAt?: number | undefined;
|
|
95
|
+
currency: string;
|
|
96
|
+
expectedRevision: number;
|
|
97
|
+
observations: {
|
|
98
|
+
currency: string;
|
|
99
|
+
ledgerFingerprint: string;
|
|
100
|
+
matureNet: number;
|
|
101
|
+
observedAt: number;
|
|
102
|
+
pendingCredits: number;
|
|
103
|
+
stripeTransferId: string;
|
|
104
|
+
transactionIds: string[];
|
|
105
|
+
}[];
|
|
106
|
+
operationKey: string;
|
|
107
|
+
ownerKey: string;
|
|
108
|
+
rejection?: {
|
|
109
|
+
code: "amount_too_small" | "balance_insufficient";
|
|
110
|
+
requestId: string;
|
|
111
|
+
} | undefined;
|
|
112
|
+
returnTransactionId?: string | undefined;
|
|
113
|
+
status: "canceled" | "paid" | "rejected" | "reserved" | "returned" | "submitted";
|
|
114
|
+
stripePayoutId?: string | undefined;
|
|
115
|
+
}, {
|
|
116
|
+
accountId: import("convex/values").VString<string, "required">;
|
|
117
|
+
ownerKey: import("convex/values").VString<string, "required">;
|
|
118
|
+
operationKey: import("convex/values").VString<string, "required">;
|
|
119
|
+
expectedRevision: import("convex/values").VFloat64<number, "required">;
|
|
120
|
+
currency: import("convex/values").VString<string, "required">;
|
|
121
|
+
amount: import("convex/values").VFloat64<number, "required">;
|
|
122
|
+
allocations: import("convex/values").VArray<{
|
|
123
|
+
amount: number;
|
|
124
|
+
role?: "affiliate" | "other" | "store" | undefined;
|
|
125
|
+
stripeTransferId: string;
|
|
126
|
+
}[], import("convex/values").VObject<{
|
|
127
|
+
amount: number;
|
|
128
|
+
role?: "affiliate" | "other" | "store" | undefined;
|
|
129
|
+
stripeTransferId: string;
|
|
130
|
+
}, {
|
|
131
|
+
stripeTransferId: import("convex/values").VString<string, "required">;
|
|
132
|
+
amount: import("convex/values").VFloat64<number, "required">;
|
|
133
|
+
role: import("convex/values").VUnion<"affiliate" | "other" | "store" | undefined, [import("convex/values").VLiteral<"store", "required">, import("convex/values").VLiteral<"affiliate", "required">, import("convex/values").VLiteral<"other", "required">], "optional", never>;
|
|
134
|
+
}, "required", "amount" | "role" | "stripeTransferId">, "required">;
|
|
135
|
+
observations: import("convex/values").VArray<{
|
|
136
|
+
currency: string;
|
|
137
|
+
ledgerFingerprint: string;
|
|
138
|
+
matureNet: number;
|
|
139
|
+
observedAt: number;
|
|
140
|
+
pendingCredits: number;
|
|
141
|
+
stripeTransferId: string;
|
|
142
|
+
transactionIds: string[];
|
|
143
|
+
}[], import("convex/values").VObject<{
|
|
144
|
+
currency: string;
|
|
145
|
+
ledgerFingerprint: string;
|
|
146
|
+
matureNet: number;
|
|
147
|
+
observedAt: number;
|
|
148
|
+
pendingCredits: number;
|
|
149
|
+
stripeTransferId: string;
|
|
150
|
+
transactionIds: string[];
|
|
151
|
+
}, {
|
|
152
|
+
stripeTransferId: import("convex/values").VString<string, "required">;
|
|
153
|
+
currency: import("convex/values").VString<string, "required">;
|
|
154
|
+
matureNet: import("convex/values").VFloat64<number, "required">;
|
|
155
|
+
pendingCredits: import("convex/values").VFloat64<number, "required">;
|
|
156
|
+
ledgerFingerprint: import("convex/values").VString<string, "required">;
|
|
157
|
+
observedAt: import("convex/values").VFloat64<number, "required">;
|
|
158
|
+
transactionIds: import("convex/values").VArray<string[], import("convex/values").VString<string, "required">, "required">;
|
|
159
|
+
}, "required", "currency" | "ledgerFingerprint" | "matureNet" | "observedAt" | "pendingCredits" | "stripeTransferId" | "transactionIds">, "required">;
|
|
160
|
+
status: import("convex/values").VUnion<"canceled" | "paid" | "rejected" | "reserved" | "returned" | "submitted", [import("convex/values").VLiteral<"reserved", "required">, import("convex/values").VLiteral<"submitted", "required">, import("convex/values").VLiteral<"paid", "required">, import("convex/values").VLiteral<"returned", "required">, import("convex/values").VLiteral<"canceled", "required">, import("convex/values").VLiteral<"rejected", "required">], "required", never>;
|
|
161
|
+
attemptedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
162
|
+
stripePayoutId: import("convex/values").VString<string | undefined, "optional">;
|
|
163
|
+
returnTransactionId: import("convex/values").VString<string | undefined, "optional">;
|
|
164
|
+
rejection: import("convex/values").VObject<{
|
|
165
|
+
code: "amount_too_small" | "balance_insufficient";
|
|
166
|
+
requestId: string;
|
|
167
|
+
} | undefined, {
|
|
168
|
+
requestId: import("convex/values").VString<string, "required">;
|
|
169
|
+
code: import("convex/values").VUnion<"amount_too_small" | "balance_insufficient", [import("convex/values").VLiteral<"balance_insufficient", "required">, import("convex/values").VLiteral<"amount_too_small", "required">], "required", never>;
|
|
170
|
+
}, "optional", "code" | "requestId">;
|
|
171
|
+
_id: import("convex/values").VId<import("convex/values").GenericId<"payoutReleaseClaims">, "required">;
|
|
172
|
+
_creationTime: import("convex/values").VFloat64<number, "required">;
|
|
173
|
+
}, "required", "_creationTime" | "_id" | "accountId" | "allocations" | "amount" | "attemptedAt" | "currency" | "expectedRevision" | "observations" | "operationKey" | "ownerKey" | "rejection" | "rejection.code" | "rejection.requestId" | "returnTransactionId" | "status" | "stripePayoutId">;
|
|
174
|
+
export declare const claimsTable: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
175
|
+
accountId: string;
|
|
176
|
+
allocations: {
|
|
177
|
+
amount: number;
|
|
178
|
+
role?: "affiliate" | "other" | "store" | undefined;
|
|
179
|
+
stripeTransferId: string;
|
|
180
|
+
}[];
|
|
181
|
+
amount: number;
|
|
182
|
+
attemptedAt?: number | undefined;
|
|
183
|
+
currency: string;
|
|
184
|
+
expectedRevision: number;
|
|
185
|
+
observations: {
|
|
186
|
+
currency: string;
|
|
187
|
+
ledgerFingerprint: string;
|
|
188
|
+
matureNet: number;
|
|
189
|
+
observedAt: number;
|
|
190
|
+
pendingCredits: number;
|
|
191
|
+
stripeTransferId: string;
|
|
192
|
+
transactionIds: string[];
|
|
193
|
+
}[];
|
|
194
|
+
operationKey: string;
|
|
195
|
+
ownerKey: string;
|
|
196
|
+
rejection?: {
|
|
197
|
+
code: "amount_too_small" | "balance_insufficient";
|
|
198
|
+
requestId: string;
|
|
199
|
+
} | undefined;
|
|
200
|
+
returnTransactionId?: string | undefined;
|
|
201
|
+
status: "canceled" | "paid" | "rejected" | "reserved" | "returned" | "submitted";
|
|
202
|
+
stripePayoutId?: string | undefined;
|
|
203
|
+
}, {
|
|
204
|
+
accountId: import("convex/values").VString<string, "required">;
|
|
205
|
+
ownerKey: import("convex/values").VString<string, "required">;
|
|
206
|
+
operationKey: import("convex/values").VString<string, "required">;
|
|
207
|
+
expectedRevision: import("convex/values").VFloat64<number, "required">;
|
|
208
|
+
currency: import("convex/values").VString<string, "required">;
|
|
209
|
+
amount: import("convex/values").VFloat64<number, "required">;
|
|
210
|
+
allocations: import("convex/values").VArray<{
|
|
211
|
+
amount: number;
|
|
212
|
+
role?: "affiliate" | "other" | "store" | undefined;
|
|
213
|
+
stripeTransferId: string;
|
|
214
|
+
}[], import("convex/values").VObject<{
|
|
215
|
+
amount: number;
|
|
216
|
+
role?: "affiliate" | "other" | "store" | undefined;
|
|
217
|
+
stripeTransferId: string;
|
|
218
|
+
}, {
|
|
219
|
+
stripeTransferId: import("convex/values").VString<string, "required">;
|
|
220
|
+
amount: import("convex/values").VFloat64<number, "required">;
|
|
221
|
+
role: import("convex/values").VUnion<"affiliate" | "other" | "store" | undefined, [import("convex/values").VLiteral<"store", "required">, import("convex/values").VLiteral<"affiliate", "required">, import("convex/values").VLiteral<"other", "required">], "optional", never>;
|
|
222
|
+
}, "required", "amount" | "role" | "stripeTransferId">, "required">;
|
|
223
|
+
observations: import("convex/values").VArray<{
|
|
224
|
+
currency: string;
|
|
225
|
+
ledgerFingerprint: string;
|
|
226
|
+
matureNet: number;
|
|
227
|
+
observedAt: number;
|
|
228
|
+
pendingCredits: number;
|
|
229
|
+
stripeTransferId: string;
|
|
230
|
+
transactionIds: string[];
|
|
231
|
+
}[], import("convex/values").VObject<{
|
|
232
|
+
currency: string;
|
|
233
|
+
ledgerFingerprint: string;
|
|
234
|
+
matureNet: number;
|
|
235
|
+
observedAt: number;
|
|
236
|
+
pendingCredits: number;
|
|
237
|
+
stripeTransferId: string;
|
|
238
|
+
transactionIds: string[];
|
|
239
|
+
}, {
|
|
240
|
+
stripeTransferId: import("convex/values").VString<string, "required">;
|
|
241
|
+
currency: import("convex/values").VString<string, "required">;
|
|
242
|
+
matureNet: import("convex/values").VFloat64<number, "required">;
|
|
243
|
+
pendingCredits: import("convex/values").VFloat64<number, "required">;
|
|
244
|
+
ledgerFingerprint: import("convex/values").VString<string, "required">;
|
|
245
|
+
observedAt: import("convex/values").VFloat64<number, "required">;
|
|
246
|
+
transactionIds: import("convex/values").VArray<string[], import("convex/values").VString<string, "required">, "required">;
|
|
247
|
+
}, "required", "currency" | "ledgerFingerprint" | "matureNet" | "observedAt" | "pendingCredits" | "stripeTransferId" | "transactionIds">, "required">;
|
|
248
|
+
status: import("convex/values").VUnion<"canceled" | "paid" | "rejected" | "reserved" | "returned" | "submitted", [import("convex/values").VLiteral<"reserved", "required">, import("convex/values").VLiteral<"submitted", "required">, import("convex/values").VLiteral<"paid", "required">, import("convex/values").VLiteral<"returned", "required">, import("convex/values").VLiteral<"canceled", "required">, import("convex/values").VLiteral<"rejected", "required">], "required", never>;
|
|
249
|
+
attemptedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
250
|
+
stripePayoutId: import("convex/values").VString<string | undefined, "optional">;
|
|
251
|
+
returnTransactionId: import("convex/values").VString<string | undefined, "optional">;
|
|
252
|
+
rejection: import("convex/values").VObject<{
|
|
253
|
+
code: "amount_too_small" | "balance_insufficient";
|
|
254
|
+
requestId: string;
|
|
255
|
+
} | undefined, {
|
|
256
|
+
requestId: import("convex/values").VString<string, "required">;
|
|
257
|
+
code: import("convex/values").VUnion<"amount_too_small" | "balance_insufficient", [import("convex/values").VLiteral<"balance_insufficient", "required">, import("convex/values").VLiteral<"amount_too_small", "required">], "required", never>;
|
|
258
|
+
}, "optional", "code" | "requestId">;
|
|
259
|
+
}, "required", "accountId" | "allocations" | "amount" | "attemptedAt" | "currency" | "expectedRevision" | "observations" | "operationKey" | "ownerKey" | "rejection" | "rejection.code" | "rejection.requestId" | "returnTransactionId" | "status" | "stripePayoutId">, {
|
|
260
|
+
by_account_status: ["accountId", "status", "_creationTime"];
|
|
261
|
+
by_operation: ["operationKey", "_creationTime"];
|
|
262
|
+
by_provider_payout: ["stripePayoutId", "_creationTime"];
|
|
263
|
+
by_rejection_request: ["rejection.requestId", "_creationTime"];
|
|
264
|
+
by_return_receipt: ["returnTransactionId", "_creationTime"];
|
|
265
|
+
}, {}, {}>;
|
|
266
|
+
export declare const sourcesTable: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
267
|
+
accountId: string;
|
|
268
|
+
currency: string;
|
|
269
|
+
ownerKey: string;
|
|
270
|
+
paidAmount: number;
|
|
271
|
+
reservedAmount: number;
|
|
272
|
+
stripeTransferId: string;
|
|
273
|
+
}, {
|
|
274
|
+
accountId: import("convex/values").VString<string, "required">;
|
|
275
|
+
ownerKey: import("convex/values").VString<string, "required">;
|
|
276
|
+
stripeTransferId: import("convex/values").VString<string, "required">;
|
|
277
|
+
currency: import("convex/values").VString<string, "required">;
|
|
278
|
+
paidAmount: import("convex/values").VFloat64<number, "required">;
|
|
279
|
+
reservedAmount: import("convex/values").VFloat64<number, "required">;
|
|
280
|
+
}, "required", "accountId" | "currency" | "ownerKey" | "paidAmount" | "reservedAmount" | "stripeTransferId">, {
|
|
281
|
+
by_account: ["accountId", "_creationTime"];
|
|
282
|
+
by_transfer: ["stripeTransferId", "_creationTime"];
|
|
283
|
+
}, {}, {}>;
|
|
284
|
+
export declare const identity: {
|
|
285
|
+
accountId: import("convex/values").VString<string, "required">;
|
|
286
|
+
ownerKey: import("convex/values").VString<string, "required">;
|
|
287
|
+
operationKey: import("convex/values").VString<string, "required">;
|
|
288
|
+
};
|
|
289
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/component/payoutRelease/schema.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;wIAQtB,CAAC;AACH,eAAO,MAAM,UAAU;;;;;;;;sDAMrB,CAAC;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BvB,CAAC;AACF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gSAInB,CAAC;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAKiC,CAAC;AAC1D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;UAQY,CAAC;AACtC,eAAO,MAAM,QAAQ;;;;CAA+C,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { defineTable } from "convex/server";
|
|
2
|
+
import { v } from "convex/values";
|
|
3
|
+
import { scopeFields } from "../payoutPolicy/schema.js";
|
|
4
|
+
export const observation = v.object({
|
|
5
|
+
stripeTransferId: v.string(),
|
|
6
|
+
currency: v.string(),
|
|
7
|
+
matureNet: v.number(),
|
|
8
|
+
pendingCredits: v.number(),
|
|
9
|
+
ledgerFingerprint: v.string(),
|
|
10
|
+
observedAt: v.number(),
|
|
11
|
+
transactionIds: v.array(v.string()),
|
|
12
|
+
});
|
|
13
|
+
export const allocation = v.object({
|
|
14
|
+
stripeTransferId: v.string(),
|
|
15
|
+
amount: v.number(),
|
|
16
|
+
role: v.optional(v.union(v.literal("store"), v.literal("affiliate"), v.literal("other"))),
|
|
17
|
+
});
|
|
18
|
+
export const claimFields = {
|
|
19
|
+
...scopeFields,
|
|
20
|
+
operationKey: v.string(),
|
|
21
|
+
expectedRevision: v.number(),
|
|
22
|
+
currency: v.string(),
|
|
23
|
+
amount: v.number(),
|
|
24
|
+
allocations: v.array(allocation),
|
|
25
|
+
observations: v.array(observation),
|
|
26
|
+
status: v.union(v.literal("reserved"), v.literal("submitted"), v.literal("paid"), v.literal("returned"), v.literal("canceled"), v.literal("rejected")),
|
|
27
|
+
attemptedAt: v.optional(v.number()),
|
|
28
|
+
stripePayoutId: v.optional(v.string()),
|
|
29
|
+
returnTransactionId: v.optional(v.string()),
|
|
30
|
+
rejection: v.optional(v.object({
|
|
31
|
+
requestId: v.string(),
|
|
32
|
+
code: v.union(v.literal("balance_insufficient"), v.literal("amount_too_small")),
|
|
33
|
+
})),
|
|
34
|
+
};
|
|
35
|
+
export const claimDoc = v.object({
|
|
36
|
+
...claimFields,
|
|
37
|
+
_id: v.id("payoutReleaseClaims"),
|
|
38
|
+
_creationTime: v.number(),
|
|
39
|
+
});
|
|
40
|
+
export const claimsTable = defineTable(claimFields)
|
|
41
|
+
.index("by_operation", ["operationKey"])
|
|
42
|
+
.index("by_account_status", ["accountId", "status"])
|
|
43
|
+
.index("by_provider_payout", ["stripePayoutId"])
|
|
44
|
+
.index("by_return_receipt", ["returnTransactionId"])
|
|
45
|
+
.index("by_rejection_request", ["rejection.requestId"]);
|
|
46
|
+
export const sourcesTable = defineTable({
|
|
47
|
+
...scopeFields,
|
|
48
|
+
stripeTransferId: v.string(),
|
|
49
|
+
currency: v.string(),
|
|
50
|
+
paidAmount: v.number(),
|
|
51
|
+
reservedAmount: v.number(),
|
|
52
|
+
})
|
|
53
|
+
.index("by_transfer", ["stripeTransferId"])
|
|
54
|
+
.index("by_account", ["accountId"]);
|
|
55
|
+
export const identity = { ...scopeFields, operationKey: v.string() };
|
|
56
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/component/payoutRelease/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,114 @@
|
|
|
1
1
|
declare const _default: import("convex/server").SchemaDefinition<{
|
|
2
|
+
payoutReleaseClaims: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
3
|
+
accountId: string;
|
|
4
|
+
allocations: {
|
|
5
|
+
amount: number;
|
|
6
|
+
role?: "affiliate" | "other" | "store" | undefined;
|
|
7
|
+
stripeTransferId: string;
|
|
8
|
+
}[];
|
|
9
|
+
amount: number;
|
|
10
|
+
attemptedAt?: number | undefined;
|
|
11
|
+
currency: string;
|
|
12
|
+
expectedRevision: number;
|
|
13
|
+
observations: {
|
|
14
|
+
currency: string;
|
|
15
|
+
ledgerFingerprint: string;
|
|
16
|
+
matureNet: number;
|
|
17
|
+
observedAt: number;
|
|
18
|
+
pendingCredits: number;
|
|
19
|
+
stripeTransferId: string;
|
|
20
|
+
transactionIds: string[];
|
|
21
|
+
}[];
|
|
22
|
+
operationKey: string;
|
|
23
|
+
ownerKey: string;
|
|
24
|
+
rejection?: {
|
|
25
|
+
code: "amount_too_small" | "balance_insufficient";
|
|
26
|
+
requestId: string;
|
|
27
|
+
} | undefined;
|
|
28
|
+
returnTransactionId?: string | undefined;
|
|
29
|
+
status: "canceled" | "paid" | "rejected" | "reserved" | "returned" | "submitted";
|
|
30
|
+
stripePayoutId?: string | undefined;
|
|
31
|
+
}, {
|
|
32
|
+
accountId: import("convex/values").VString<string, "required">;
|
|
33
|
+
ownerKey: import("convex/values").VString<string, "required">;
|
|
34
|
+
operationKey: import("convex/values").VString<string, "required">;
|
|
35
|
+
expectedRevision: import("convex/values").VFloat64<number, "required">;
|
|
36
|
+
currency: import("convex/values").VString<string, "required">;
|
|
37
|
+
amount: import("convex/values").VFloat64<number, "required">;
|
|
38
|
+
allocations: import("convex/values").VArray<{
|
|
39
|
+
amount: number;
|
|
40
|
+
role?: "affiliate" | "other" | "store" | undefined;
|
|
41
|
+
stripeTransferId: string;
|
|
42
|
+
}[], import("convex/values").VObject<{
|
|
43
|
+
amount: number;
|
|
44
|
+
role?: "affiliate" | "other" | "store" | undefined;
|
|
45
|
+
stripeTransferId: string;
|
|
46
|
+
}, {
|
|
47
|
+
stripeTransferId: import("convex/values").VString<string, "required">;
|
|
48
|
+
amount: import("convex/values").VFloat64<number, "required">;
|
|
49
|
+
role: import("convex/values").VUnion<"affiliate" | "other" | "store" | undefined, [import("convex/values").VLiteral<"store", "required">, import("convex/values").VLiteral<"affiliate", "required">, import("convex/values").VLiteral<"other", "required">], "optional", never>;
|
|
50
|
+
}, "required", "amount" | "role" | "stripeTransferId">, "required">;
|
|
51
|
+
observations: import("convex/values").VArray<{
|
|
52
|
+
currency: string;
|
|
53
|
+
ledgerFingerprint: string;
|
|
54
|
+
matureNet: number;
|
|
55
|
+
observedAt: number;
|
|
56
|
+
pendingCredits: number;
|
|
57
|
+
stripeTransferId: string;
|
|
58
|
+
transactionIds: string[];
|
|
59
|
+
}[], import("convex/values").VObject<{
|
|
60
|
+
currency: string;
|
|
61
|
+
ledgerFingerprint: string;
|
|
62
|
+
matureNet: number;
|
|
63
|
+
observedAt: number;
|
|
64
|
+
pendingCredits: number;
|
|
65
|
+
stripeTransferId: string;
|
|
66
|
+
transactionIds: string[];
|
|
67
|
+
}, {
|
|
68
|
+
stripeTransferId: import("convex/values").VString<string, "required">;
|
|
69
|
+
currency: import("convex/values").VString<string, "required">;
|
|
70
|
+
matureNet: import("convex/values").VFloat64<number, "required">;
|
|
71
|
+
pendingCredits: import("convex/values").VFloat64<number, "required">;
|
|
72
|
+
ledgerFingerprint: import("convex/values").VString<string, "required">;
|
|
73
|
+
observedAt: import("convex/values").VFloat64<number, "required">;
|
|
74
|
+
transactionIds: import("convex/values").VArray<string[], import("convex/values").VString<string, "required">, "required">;
|
|
75
|
+
}, "required", "currency" | "ledgerFingerprint" | "matureNet" | "observedAt" | "pendingCredits" | "stripeTransferId" | "transactionIds">, "required">;
|
|
76
|
+
status: import("convex/values").VUnion<"canceled" | "paid" | "rejected" | "reserved" | "returned" | "submitted", [import("convex/values").VLiteral<"reserved", "required">, import("convex/values").VLiteral<"submitted", "required">, import("convex/values").VLiteral<"paid", "required">, import("convex/values").VLiteral<"returned", "required">, import("convex/values").VLiteral<"canceled", "required">, import("convex/values").VLiteral<"rejected", "required">], "required", never>;
|
|
77
|
+
attemptedAt: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
78
|
+
stripePayoutId: import("convex/values").VString<string | undefined, "optional">;
|
|
79
|
+
returnTransactionId: import("convex/values").VString<string | undefined, "optional">;
|
|
80
|
+
rejection: import("convex/values").VObject<{
|
|
81
|
+
code: "amount_too_small" | "balance_insufficient";
|
|
82
|
+
requestId: string;
|
|
83
|
+
} | undefined, {
|
|
84
|
+
requestId: import("convex/values").VString<string, "required">;
|
|
85
|
+
code: import("convex/values").VUnion<"amount_too_small" | "balance_insufficient", [import("convex/values").VLiteral<"balance_insufficient", "required">, import("convex/values").VLiteral<"amount_too_small", "required">], "required", never>;
|
|
86
|
+
}, "optional", "code" | "requestId">;
|
|
87
|
+
}, "required", "accountId" | "allocations" | "amount" | "attemptedAt" | "currency" | "expectedRevision" | "observations" | "operationKey" | "ownerKey" | "rejection" | "rejection.code" | "rejection.requestId" | "returnTransactionId" | "status" | "stripePayoutId">, {
|
|
88
|
+
by_account_status: ["accountId", "status", "_creationTime"];
|
|
89
|
+
by_operation: ["operationKey", "_creationTime"];
|
|
90
|
+
by_provider_payout: ["stripePayoutId", "_creationTime"];
|
|
91
|
+
by_rejection_request: ["rejection.requestId", "_creationTime"];
|
|
92
|
+
by_return_receipt: ["returnTransactionId", "_creationTime"];
|
|
93
|
+
}, {}, {}>;
|
|
94
|
+
payoutSourceAllocations: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
95
|
+
accountId: string;
|
|
96
|
+
currency: string;
|
|
97
|
+
ownerKey: string;
|
|
98
|
+
paidAmount: number;
|
|
99
|
+
reservedAmount: number;
|
|
100
|
+
stripeTransferId: string;
|
|
101
|
+
}, {
|
|
102
|
+
accountId: import("convex/values").VString<string, "required">;
|
|
103
|
+
ownerKey: import("convex/values").VString<string, "required">;
|
|
104
|
+
stripeTransferId: import("convex/values").VString<string, "required">;
|
|
105
|
+
currency: import("convex/values").VString<string, "required">;
|
|
106
|
+
paidAmount: import("convex/values").VFloat64<number, "required">;
|
|
107
|
+
reservedAmount: import("convex/values").VFloat64<number, "required">;
|
|
108
|
+
}, "required", "accountId" | "currency" | "ownerKey" | "paidAmount" | "reservedAmount" | "stripeTransferId">, {
|
|
109
|
+
by_account: ["accountId", "_creationTime"];
|
|
110
|
+
by_transfer: ["stripeTransferId", "_creationTime"];
|
|
111
|
+
}, {}, {}>;
|
|
2
112
|
payoutPolicies: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
3
113
|
accountId: string;
|
|
4
114
|
country: string;
|
package/dist/component/schema.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { claimsTable as payoutReleaseClaimsTable, sourcesTable as payoutSourceAllocationsTable, } from "./payoutRelease/schema.js";
|
|
1
2
|
import { policiesTable, operationsTable } from "./payoutPolicy/schema.js";
|
|
2
3
|
import { currencyTotalsTable } from "./earnings/schema.js";
|
|
3
4
|
import { claimsTable, balancesTable, groupsTable, reservationsTable, } from "./costRecovery/schema";
|
|
@@ -9,6 +10,8 @@ import { accountsTable } from "./core/schema";
|
|
|
9
10
|
import { pricesTable, productsTable } from "./products/schema";
|
|
10
11
|
import { webhookEventsTable } from "./webhooks/schema";
|
|
11
12
|
export default defineSchema({
|
|
13
|
+
payoutReleaseClaims: payoutReleaseClaimsTable,
|
|
14
|
+
payoutSourceAllocations: payoutSourceAllocationsTable,
|
|
12
15
|
payoutPolicies: policiesTable,
|
|
13
16
|
payoutPolicyOperations: operationsTable,
|
|
14
17
|
currencyTotals: currencyTotalsTable,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,wBAAwB,EACxB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,eAAe,YAAY,CAAC;IAC1B,cAAc,EAAE,aAAa;IAC7B,sBAAsB,EAAE,eAAe;IACvC,cAAc,EAAE,mBAAmB;IACnC,cAAc,EAAE,WAAW;IAC3B,gBAAgB,EAAE,aAAa;IAC/B,cAAc,EAAE,WAAW;IAC3B,oBAAoB,EAAE,iBAAiB;IACvC,qBAAqB,EAAE,gBAAgB;IACvC,eAAe,EAAE,oBAAoB;IACrC,mBAAmB,EAAE,wBAAwB;IAC7C,OAAO;IACP,QAAQ,EAAE,aAAa;IAEvB,WAAW;IACX,QAAQ,EAAE,aAAa;IACvB,MAAM,EAAE,WAAW;IAEnB,UAAU;IACV,aAAa,EAAE,kBAAkB;IACjC,gBAAgB,EAAE,qBAAqB;IACvC,QAAQ,EAAE,aAAa;IAEvB,UAAU;IACV,QAAQ,EAAE,aAAa;IACvB,OAAO,EAAE,YAAY;IACrB,iBAAiB,EAAE,sBAAsB;IACzC,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,aAAa;IACvB,SAAS,EAAE,cAAc;IACzB,mBAAmB,EAAE,wBAAwB;IAE7C,WAAW;IACX,aAAa,EAAE,kBAAkB;CAClC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,IAAI,wBAAwB,EACvC,YAAY,IAAI,4BAA4B,GAC7C,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,wBAAwB,EACxB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,eAAe,YAAY,CAAC;IAC1B,mBAAmB,EAAE,wBAAwB;IAC7C,uBAAuB,EAAE,4BAA4B;IACrD,cAAc,EAAE,aAAa;IAC7B,sBAAsB,EAAE,eAAe;IACvC,cAAc,EAAE,mBAAmB;IACnC,cAAc,EAAE,WAAW;IAC3B,gBAAgB,EAAE,aAAa;IAC/B,cAAc,EAAE,WAAW;IAC3B,oBAAoB,EAAE,iBAAiB;IACvC,qBAAqB,EAAE,gBAAgB;IACvC,eAAe,EAAE,oBAAoB;IACrC,mBAAmB,EAAE,wBAAwB;IAC7C,OAAO;IACP,QAAQ,EAAE,aAAa;IAEvB,WAAW;IACX,QAAQ,EAAE,aAAa;IACvB,MAAM,EAAE,WAAW;IAEnB,UAAU;IACV,aAAa,EAAE,kBAAkB;IACjC,gBAAgB,EAAE,qBAAqB;IACvC,QAAQ,EAAE,aAAa;IAEvB,UAAU;IACV,QAAQ,EAAE,aAAa;IACvB,OAAO,EAAE,YAAY;IACrB,iBAAiB,EAAE,sBAAsB;IACzC,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,aAAa;IACvB,SAAS,EAAE,cAAc;IACzB,mBAAmB,EAAE,wBAAwB;IAE7C,WAAW;IACX,aAAa,EAAE,kBAAkB;CAClC,CAAC,CAAC"}
|
|
@@ -16,7 +16,7 @@ enable the account feature or extend BetterStripe's supported-version list.
|
|
|
16
16
|
|
|
17
17
|
## Enable the sandbox feature first
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
For a non-Connect merchant, the account owner must enable **Reusable payment
|
|
20
20
|
methods for Global Payouts** under **Account previews and features**. If the toggle
|
|
21
21
|
is unavailable or disabled, check account-owner permissions and request access
|
|
22
22
|
using Stripe's form. A disabled toggle alone does not identify the cause. This also enables Stripe's
|
|
@@ -28,6 +28,44 @@ Accounts and changes how Stripe-hosted integrations create customers. Review
|
|
|
28
28
|
Stripe's limitations and migration behavior before changing any live account.
|
|
29
29
|
See [Stripe's customer Account guide](https://docs.stripe.com/accounts-v2/use-accounts-as-customers).
|
|
30
30
|
|
|
31
|
+
## Connect sandbox setup findings, 2026-10-15
|
|
32
|
+
|
|
33
|
+
Saved-card setup verification initially encountered
|
|
34
|
+
`non_connect_platform_accounts_v2_access_blocked` while creating a
|
|
35
|
+
customer-configured Account. Changing between the supported GA and preview
|
|
36
|
+
request versions did not resolve the account eligibility block.
|
|
37
|
+
|
|
38
|
+
For the Connect integration under test, enabling Connect in the existing
|
|
39
|
+
standalone test sandbox resolved the block. We used Stripe CLI `1.53.1` and its
|
|
40
|
+
`tools` plugin `0.15.0`. With an authenticated CLI profile for the intended
|
|
41
|
+
sandbox, replace `YOUR_SANDBOX_PROFILE` with its profile name:
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
stripe --project-name YOUR_SANDBOX_PROFILE tools enable_connect --json
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Confirm the profile points to the intended standalone sandbox before running it.
|
|
48
|
+
The tool enables Connect in that sandbox and is idempotent. Its help states that
|
|
49
|
+
live accounts and sandboxes controlled by another platform are not eligible.
|
|
50
|
+
Inspect `stripe tools enable_connect --help` for the installed version's behavior.
|
|
51
|
+
See Stripe's [sandbox guide](https://docs.stripe.com/sandboxes) and
|
|
52
|
+
[Connect guide](https://docs.stripe.com/connect).
|
|
53
|
+
|
|
54
|
+
After enablement, customer-account provisioning, SetupIntent authentication and
|
|
55
|
+
later saved-card payments passed with test credentials. The browser flow used
|
|
56
|
+
`2026-09-30.endive`; separate API checks passed on `2026-09-30.preview` in the
|
|
57
|
+
same Connect-enabled sandbox. These results do not prove non-Connect preview
|
|
58
|
+
eligibility. A merchant using customer-only Accounts must follow the preview
|
|
59
|
+
setup above rather than enabling Connect merely to bypass the block. Neither
|
|
60
|
+
BetterStripe nor a different request version enables Stripe account features.
|
|
61
|
+
|
|
62
|
+
The [live verification evidence](https://github.com/FantasticDevHQ/better-stripe/pull/166#issuecomment-6185124292)
|
|
63
|
+
contains screenshots and sanitized provider records. The
|
|
64
|
+
[React guide](react-workflows.md#live-authentication-and-reuse-results-2026-10-15)
|
|
65
|
+
records authentication and reuse outcomes. Successful test payments were refunded,
|
|
66
|
+
unfinished intents canceled, saved test cards detached and fixture products/prices
|
|
67
|
+
archived. No live account configuration or live payment was part of these checks.
|
|
68
|
+
|
|
31
69
|
## Configure one client and its webhook route
|
|
32
70
|
|
|
33
71
|
```ts
|
package/docs/react-workflows.md
CHANGED
|
@@ -609,6 +609,37 @@ Existing `AddCardForm` and `PaymentMethods` tokenization/attach integrations rem
|
|
|
609
609
|
available. Tokenization plus attachment does not complete SetupIntent or SCA
|
|
610
610
|
verification.
|
|
611
611
|
|
|
612
|
+
### Live authentication and reuse results, 2026-10-15
|
|
613
|
+
|
|
614
|
+
The public `SaveCard` workflow and `BetterStripe.createSetupIntent` /
|
|
615
|
+
`BetterStripe.createPaymentIntent` methods were exercised against real Stripe.js
|
|
616
|
+
and Stripe test APIs at commit `332d49c`, merged in
|
|
617
|
+
[PR #166](https://github.com/FantasticDevHQ/better-stripe/pull/166).
|
|
618
|
+
The Connect-enabled sandbox used `2026-09-30.endive` for browser confirmation.
|
|
619
|
+
Separate API checks also passed on `2026-09-30.preview`.
|
|
620
|
+
|
|
621
|
+
| Check | Observed result |
|
|
622
|
+
| -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
623
|
+
| Explicit consent and repeated provisioning with the same request key | Off-session setup accepted; retries returned the same intent. |
|
|
624
|
+
| Card `4000000000003220`, failed 3DS challenge then retry | A retryable authentication error appeared. Retrying the same SetupIntent and completing 3DS succeeded. Stripe SetupAttempts recorded both outcomes. |
|
|
625
|
+
| Card `4000002500003155`, setup then later off-session payment | 3DS setup succeeded with `usage: "off_session"` and `allow_redisplay: "always"`. The saved method belonged to the expected V2 customer; the later payment succeeded and was refunded. |
|
|
626
|
+
| Later off-session reuse of card ending `3220` | Stripe returned `authentication_required`. Successful setup does not guarantee every later payment can avoid authentication. |
|
|
627
|
+
| API decline and payment retry checks | Decline returned `card_declined` / `requires_payment_method`; same-key payment provisioning returned the same intent. |
|
|
628
|
+
|
|
629
|
+
Use these public test card numbers only in a Stripe test payment form, with a
|
|
630
|
+
future expiration and test CVC. Use Stripe's test PaymentMethod IDs for API tests.
|
|
631
|
+
See [Stripe's testing guide](https://docs.stripe.com/testing#regulatory-cards).
|
|
632
|
+
|
|
633
|
+
[Uploaded screenshots and provider records](https://github.com/FantasticDevHQ/better-stripe/pull/166#issuecomment-6185124292)
|
|
634
|
+
show the challenge, retryable failure and successful reuse. No continuous video
|
|
635
|
+
was recorded. Test payments were refunded and disposable fixtures cleaned up.
|
|
636
|
+
The test used a local ownership fixture for the host callback. It verifies package
|
|
637
|
+
orchestration and actual provider authentication, not production application
|
|
638
|
+
authentication, redirect-return recovery, webhook delivery or Dojo's saved-card UI.
|
|
639
|
+
Consumer applications still need to verify their own authenticated adapters and saved-card UI.
|
|
640
|
+
See [sandbox setup findings](accounts-v2-preview.md#connect-sandbox-setup-findings-2026-10-15)
|
|
641
|
+
for the account eligibility requirement.
|
|
642
|
+
|
|
612
643
|
## Component history and currency summaries
|
|
613
644
|
|
|
614
645
|
See the [read contract guide](read-contracts.md) for reactive product, price and payout
|
package/docs/settlement.md
CHANGED
|
@@ -219,6 +219,37 @@ Sources: [payout schedules](https://docs.stripe.com/connect/manage-payout-schedu
|
|
|
219
219
|
[manual payout holding limits](https://docs.stripe.com/connect/manual-payouts), and
|
|
220
220
|
[Dashboard control limits](https://docs.stripe.com/connect/platform-controls-for-stripe-dashboard-accounts#control-payout-timing).
|
|
221
221
|
|
|
222
|
+
### Transactional claim ledger implementation status
|
|
223
|
+
|
|
224
|
+
The component contains `payoutRelease` claim and source-allocation tables. These
|
|
225
|
+
are server-side building blocks for the release boundary, with no public client
|
|
226
|
+
executor or scheduled bank-payout integration yet. Do not call the claim
|
|
227
|
+
mutation with UI totals or a transfer receipt alone. Its trusted upstream caller
|
|
228
|
+
must establish complete provider history, still-unpaid ownership, adoption of
|
|
229
|
+
prior payouts, independent liabilities, and live payout controls first.
|
|
230
|
+
|
|
231
|
+
A claim combines mature creator and affiliate entitlement within one currency.
|
|
232
|
+
It deducts persisted paid and reserved allocations, keeps negative entitlement
|
|
233
|
+
after refunds, and caps the allocation by provider availability after independent
|
|
234
|
+
liabilities. Sources and policy revision are checked transactionally. One
|
|
235
|
+
unresolved account claim blocks competing reservations. An attempted claim
|
|
236
|
+
cannot be canceled merely because the provider timed out. Accepted payouts keep
|
|
237
|
+
their allocations reserved until payment is confirmed; a failed or canceled
|
|
238
|
+
payout releases allocations only after its provider return transaction has been
|
|
239
|
+
verified upstream. Return receipt identities cannot be reused across claims. A verified create
|
|
240
|
+
rejection for insufficient balance or an amount below the provider floor can
|
|
241
|
+
release an unaccepted claim within a conservative 23-hour window. It requires
|
|
242
|
+
its own unique Stripe request receipt; ambiguous errors and older attempts stay
|
|
243
|
+
held. This window stays below Stripe's [24-hour v1 idempotency retention minimum](https://docs.stripe.com/api/idempotent_requests).
|
|
244
|
+
|
|
245
|
+
The current claim snapshot is deliberately bounded to 100 account transfer rows
|
|
246
|
+
and 1,000 receipt IDs per source. Larger or incomplete histories reject the whole
|
|
247
|
+
claim, without using partial totals. A resumable reconciliation/adoption process,
|
|
248
|
+
provider payout creation and receipt verification, payout-fee accounting, and
|
|
249
|
+
recurring release/expiry integration remain required before custom payout
|
|
250
|
+
minimums can be presented as an operational feature. In-memory claim tests are
|
|
251
|
+
not evidence of a completed Stripe bank payout.
|
|
252
|
+
|
|
222
253
|
## Verified recipient funding receipts
|
|
223
254
|
|
|
224
255
|
Use `stripe.payoutPolicy.transferReceipt(ctx, { accountId, stripeTransferId })`
|