1 operation. Every schema and example on this page is generated from the platform contract.
Verifies the destination-charge PaymentIntent on the platform account, checks the caller owns it (metadata match), then idempotently records the drop-in purchase + books the class via the shared finalizeDropInPayment service. Safe alongside the Stripe webhook (both call the same idempotent reconcile).
Store that owns the class (also authorises the payment).
The class occurrence the drop-in books.
The PaymentIntent the native sheet reported as succeeded.
A drop-in purchase row.
The class booking created for this drop-in (null if none bookable).
curl -X POST "https://www.membber.com/api/v1/drop-in/confirm" \
-H "Authorization: Bearer $MEMBBER_TOKEN" \
-H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
-H "Content-Type: application/json" \
-d '{
"store_id": "6659c139-0000-4000-8000-d0c500000066",
"occurrence_id": "8770ea49-0000-4000-8000-d0c500000087",
"payment_intent_id": "0b6642a5-0000-4000-8000-d0c50000000b"
}'import { createMembberClient } from "@membber/sdk-ts";
const membber = createMembberClient({
getAccessToken: () => process.env.MEMBBER_TOKEN,
});
const { data, error } = await membber.raw.POST("/api/v1/drop-in/confirm", {
body: {
store_id: "6659c139-0000-4000-8000-d0c500000066",
occurrence_id: "8770ea49-0000-4000-8000-d0c500000087",
payment_intent_id: "0b6642a5-0000-4000-8000-d0c50000000b"
},
headers: { "Idempotency-Key": crypto.randomUUID() },
});
if (error) {
// Typed error envelope: { error: { code, message, requestId } }
throw new Error(`${error.error.code}: ${error.error.message}`);
}
console.log(data);import MembberSwift
let client = MembberClient(
serverURL: MembberClient.productionServerURL,
tokenProvider: { session.accessToken }
)
let response = try await client.api.confirmDropInPurchase(
body: .json(.init(
storeId: "6659c139-0000-4000-8000-d0c500000066",
occurrenceId: "8770ea49-0000-4000-8000-d0c500000087",
paymentIntentId: "0b6642a5-0000-4000-8000-d0c50000000b"
))
).ok.body.json
print(response){
"purchase": {
"id": "00000d1b-0000-4000-8000-d0c500000000",
"store_id": "6659c139-0000-4000-8000-d0c500000066",
"customer_id": "96607d1c-0000-4000-8000-d0c500000096",
"occurrence_id": "8770ea49-0000-4000-8000-d0c500000087",
"amount_pence": 1500,
"currency": "GBP",
"stripe_payment_intent_id": "5e05f333-0000-4000-8000-d0c50000005e",
"status": "<status>",
"created_at": "<created_at>"
},
"booking": {
"id": "00000d1b-0000-4000-8000-d0c500000000",
"status": "<status>"
},
"payment_intent_id": "0b6642a5-0000-4000-8000-d0c50000000b"
}