Skip to content

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

ParameterTypeRequiredDescription
paymentIdstringYesID of the payment to refund
amountintegerNoAmount in cents (defaults to full amount)
reasonstringNoReason for the refund
metadataobjectNoCustom key-value data

Retrieve a Refund

javascript
const refund = await fyber.refunds.get('ref_123');

console.log(refund.status); // 'succeeded'
console.log(refund.amount); // 2500

List 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

StatusDescription
pendingRefund is being processed
succeededRefund completed successfully
failedRefund 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;
}

Fyber Payment API