List payments
Returns a paginated list of payments visible to the caller. Merchant-scoped API keys are auto-restricted to their own merchant. Filters: merchantId, status, livemode. Uses cursor-based pagination — pass cursor from a previous response to fetch the next page. Default page size is 20, maximum 100.
curl -X GET "https://api.miracle.com/v1/payments"{
"data": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"tenantId": "f97df110-f4de-492e-8849-4a6af68026b0",
"livemode": true,
"status": "processing",
"merchantId": "c3073b9d-edd0-49f2-a28d-b7ded8ff9a8b",
"amount": {
"currency": "string",
"valueMinor": 0
},
"amountBreakdown": {
"authorized": {
"currency": "string",
"valueMinor": 0
},
"captured": {
"currency": "string",
"valueMinor": 0
},
"refunded": {
"currency": "string",
"valueMinor": 0
},
"fee": {
"currency": "string",
"valueMinor": 0
},
"net": {
"currency": "string",
"valueMinor": 0
}
},
"captureMethod": "automatic",
"merchantReference": "string",
"checkoutSessionId": "e4b3bd08-5189-40bd-bc1b-0dd256297c90",
"paymentMethodType": "string",
"action": {
"type": "redirect",
"url": "http://example.com",
"data": {
"threeDSToken": "string",
"authenticationMethod": "string",
"displayMessage": "string",
"expiresIn": 0
}
},
"errorCode": "string",
"errorMessage": "string",
"approved": true,
"providerReference": "string",
"threeDSResult": {
"version": "1.0",
"status": "authenticated",
"statusReason": "string",
"eci": "string",
"cavv": "string",
"xid": "string",
"dsTransId": "string",
"enrolled": "Y",
"liabilityShift": true,
"challengeFlow": "frictionless",
"challenged": true,
"challengeCancelled": true,
"exemptionApplied": "low_value",
"messageVersion": "string",
"serverTransId": "string",
"acsTransId": "string"
},
"metadata": {
"property1": "string",
"property2": "string"
},
"createdAt": "string",
"updatedAt": "string"
}
],
"pagination": {
"nextCursor": "string",
"prevCursor": "string",
"hasMore": true,
"totalCount": 0
}
}Get payment by ID
Returns details for a single payment, including current lifecycle status, 3DS result (if applicable), and the latest provider response. Soft-deleted payments are not returned.
Create refund for payment
Creates a refund against an existing captured payment. The `paymentId` is taken from the URL path. Omit `amount` to refund the full remaining capturable amount, or specify a partial `amount` for a partial refund. Multiple partial refunds are supported until the captured amount is exhausted. Pass an `Idempotency-Key` header to safely retry without double-refunding.