Skip to main content

IBAN to Wallet - Disputed Webhook

Overview

The ibanToWallet.disputed webhook fires when an inbound transfer is recalled by the remitting financial institution, placed on compliance hold, or subject to a formal dispute.

  • Event Name: ibanToWallet.disputed
  • Target State: disputed
  • HTTP Method: POST (Sent from Atlas to your configured webhook listener URL)

Webhook Headers

HeaderDescription
Content-Typeapplication/json
X-Atlas-SignatureHMAC SHA-256 signature and timestamp for message authentication
X-Atlas-Delivery-IdUnique UUID tracking this webhook delivery attempt

Payload Schema

Payload Fields

FieldTypeDescription
idintegerUnique payment transaction ID.
amountstringDisputed amount.
referencestringUnique order tracking reference.
statestringCurrent lifecycle state ("disputed").
currencystringISO currency code.
typestringTransaction type ("iban_to_wallet").
walletIdintegerAffected wallet identifier.
bankingPartnerstringBanking partner handling the dispute.
receivingAccountstringVirtual IBAN recipient.
createdDatestringOriginal deposit timestamp.
companyIdstringPlatform company identifier.

Example Payload

{
"id": 10001,
"amount": "500.00",
"reference": "REF-IBAN-001",
"state": "disputed",
"currency": "EUR",
"type": "iban_to_wallet",
"walletId": 2001,
"bankingPartner": "ClearBank",
"receivingAccount": "GB29NWBK60161331926819",
"createdDate": "2024-01-15T10:30:00Z",
"companyId": "comp-123"
}

Expected Response

Your endpoint must respond with an HTTP 200 OK status code within 5 seconds to acknowledge delivery:

HTTP/1.1 200 OK
Content-Type: application/json

{
"status": "received"
}

Handling Example

// Express.js Webhook Handler
app.post('/api/webhooks/atlas', express.raw({ type: 'application/json' }), (req, res) => {
const signature = req.headers['x-atlas-signature'];

try {
// 1. Verify webhook signature
verifySignature(req.body, signature, process.env.ATLAS_WEBHOOK_SECRET);

const event = JSON.parse(req.body.toString());

// 2. Handle ibanToWallet.disputed
if (event.state === 'disputed') {
console.log(`Processing IBAN to Wallet - Disputed Webhook: Reference ${event.reference}, Amount: ${event.amount} ${event.currency}`);
// Update your internal order or ledger state
}

// 3. Acknowledge receipt
res.status(200).json({ status: 'received' });
} catch (err) {
console.error('Webhook verification failed:', err.message);
res.status(400).send('Invalid signature');
}
});

Interactive Payload Schema & Example

Review the full JSON schema and test response handling: