Refunds
Issue full or partial refunds for completed payments.
Create a Refund
Full Refund
javascript
const refund = await fyber.refunds.create({
paymentId: 'pay_123',
});Partial Refund
javascript
const refund = await fyber.refunds.create({
paymentId: 'pay_123',
amount: 2500, // Refund $25.00 of a $50.00 payment
reason: 'Customer request',
});Refund Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
paymentId | string | Yes | ID of the payment to refund |
amount | integer | No | Amount in cents (defaults to full amount) |
reason | string | No | Reason for the refund |
metadata | object | No | Custom key-value data |
Retrieve a Refund
javascript
const refund = await fyber.refunds.get('ref_123');
console.log(refund.status); // 'succeeded'
console.log(refund.amount); // 2500List Refunds
javascript
// List all refunds
const refunds = await fyber.refunds.list({
limit: 20,
});
// List refunds for a specific payment
const refunds = await fyber.refunds.list({
paymentId: 'pay_123',
});Refund Object
json
{
"id": "ref_abc123",
"object": "refund",
"amount": 2500,
"currency": "JMD",
"status": "succeeded",
"paymentId": "pay_123",
"reason": "Customer request",
"metadata": {},
"createdAt": "2024-01-15T12:00:00Z"
}Refund Status
| Status | Description |
|---|---|
pending | Refund is being processed |
succeeded | Refund completed successfully |
failed | Refund failed |
Multiple Refunds
You can issue multiple partial refunds until the total refunded equals the original payment amount:
javascript
// Original payment: $100.00
await fyber.refunds.create({ paymentId: 'pay_123', amount: 3000 }); // Refund $30
await fyber.refunds.create({ paymentId: 'pay_123', amount: 2000 }); // Refund $20
await fyber.refunds.create({ paymentId: 'pay_123', amount: 5000 }); // Refund $50
// Total refunded: $100.00 (payment fully refunded)Refund Timing
Refunds typically take 5-10 business days to appear on the customer's statement, depending on their bank.
Webhooks
Listen for refund events:
javascript
switch (event.type) {
case 'refund.created':
console.log('Refund initiated:', event.data.object.id);
break;
case 'refund.succeeded':
console.log('Refund completed:', event.data.object.id);
break;
case 'refund.failed':
console.log('Refund failed:', event.data.object.id);
break;
}