StraitsX sends callbacks to your registered URL when deposits into or withdrawals from your business account change status. These events track fund movements at the account level (your StraitsX business account), as opposed to customer-level payment/payout events.
This page covers the following events:
Both events share the same status values:
Status Meaning pendingTransaction is being processed completedFunds successfully deposited/sent failedTransaction could not be completed
Event Direction Scope paymentStatusUpdatedIncoming Funds to a Virtual Bank Account (on behalf of a customer profile) payoutStatusUpdatedOutgoing Funds to an external bank account (on behalf of a customer) userDepositStatusUpdatedIncoming Funds directly to your business account userWithdrawalStatusUpdatedOutgoing Funds directly from your business account
Dashboard Deposit Status Update
{
"data": {
"id": "contract_d4e5f6a7-b8c9-0123-def0-234567890123",
"type": "bankTransfer",
"attributes": {
"idempotencyId": "deposit-external-ref-001",
"currency": "xsgd",
"amount": "2500.0",
"fees": "0.0",
"status": "completed",
"createdAt": "2026-05-11T09:00:00+08:00",
"senderInformation": {
"accountHolderName": "John Doe",
"accountNumber": "9876543210",
"swiftBic": "OCBCSGSG",
"transactionRemarks": "Invoice payment #1234",
"endToEndRef": "20260511OCBCSGSGXXXX0002"
},
"blockedReasons": []
}
}
}
Field Type Description data.idString Unique deposit contract ID. data.typeString Always bankTransfer. data.attributes.idempotencyIdString External reference ID. data.attributes.currencyString Currency code. data.attributes.amountString Deposit amount received. data.attributes.feesString Fees charged. data.attributes.statusString Deposit contract status. data.attributes.createdAtString ISO 8601 timestamp when the deposit was created. data.attributes.senderInformationObject Details about who sent the deposit. data.attributes.blockedReasonsArray Reasons the deposit is held. Empty array if not blocked.
Field Type Description accountHolderNameString Sender's name as registered with their bank. accountNumberString Sender's bank account number. swiftBicString Sender's SWIFT/BIC code. transactionRemarksString Sender's transaction remarks (if any). endToEndRefString Bank end-to-end reference.
Dashboard Withdrawal Status Update
{
"data": {
"id": "contract_c3d4e5f6-a7b8-9012-cdef-123456789012",
"type": "withdrawal",
"attributes": {
"amount": "500.0",
"fees": "0.0",
"transactionRemarks": "Monthly supplier payment",
"idempotencyId": "withdrawal-unique-key-789",
"currency": "sgd",
"bankAccount": {
"account_no": "1234567890",
"account_holder_name": "Acme Pte Ltd",
"bank": "SCB",
"swift_bic": "SCBLSG22XXX",
"routing_code": null,
"intermediary_swift_bic": null
},
"status": "completed",
"netAmount": "500.0",
"createdAt": "2026-05-11T10:00:00+08:00",
"updatedAt": "2026-05-11T10:15:00+08:00"
}
}
}
Field Type Description data.idString Unique withdrawal contract ID. data.typeString Always withdrawal. data.attributes.amountString Withdrawal amount. data.attributes.feesString Fees charged. data.attributes.transactionRemarksString Your transaction remarks/notes. data.attributes.idempotencyIdString Your idempotency key from the withdrawal request. data.attributes.currencyString Currency code. data.attributes.bankAccountObject Recipient bank account details. data.attributes.statusString Withdrawal contract status. data.attributes.netAmountString Net amount sent (amount + fees). data.attributes.createdAtString ISO 8601 timestamp when the withdrawal was created. data.attributes.updatedAtString ISO 8601 timestamp when the status last changed.
Field Type Description account_noString Recipient bank account number. account_holder_nameString Recipient account holder name. bankString Bank short code. swift_bicString SWIFT/BIC code (if applicable). routing_codeString Bank routing code (if applicable). intermediary_swift_bicString Intermediary bank SWIFT code (if applicable).