Skip to content

Initiate withdrawal

POST
/api/managing-entity/{managingEntityIdentifier}/payment/withdrawal
curl --request POST \
--url 'https://api.wink.travel/api/managing-entity/d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69/payment/withdrawal?destinationIdentifier=e2c7b4d3-1a8f-4e9c-b5d6-3a9f0e7c2b18&destinationKind=BANK_ACCOUNT' \
--header 'Authorization: Bearer <token>' \
--header 'Wink-Version: 2.0'

Initiates a full-balance withdrawal to the chosen payout destination on the given managing entity. The user must specify which destination (BankAccount or RevolutPayoutAccount) to send funds to. Processed via Revolut Business; the beneficiary will receive funds within 1-3 business days for bank rails or instantly for Revolut-to-Revolut. Initial status is PENDING; the withdrawal transitions to PROCESSING once Revolut confirms, and COMPLETED when the payout arrives.

managingEntityIdentifier
required
string
""

Managing entity identifier (UUID)

Example
d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69
destinationIdentifier
required
string
""

Identifier of the chosen BankAccount or RevolutPayoutAccount on the managing entity

Example
e2c7b4d3-1a8f-4e9c-b5d6-3a9f0e7c2b18
destinationKind
required
string
""

Which collection on the managing entity to look up the destination in

Example
BANK_ACCOUNT
Wink-Version
string
default: 2.0.0
Allowed values: 2.0

Withdrawal initiated successfully

Media type application/json

TripPay beneficiary withdrawal (payout) to a bank account via Revolut.

object
id

Document UUID

string format: uuid
""
createdDate

Datetime this record was first created

string format: date-time
""
lastUpdate

Datetime this record was last updated

string format: date-time
""
version

Version property that shows how many times this document has been persisted. Document will not persist if the version property is less than current version property in the system. Result in an optimistic locking exception.

integer format: int64
""
accountIdentifier
required

TripPay account identifier of the beneficiary requesting withdrawal

string
"" >= 1 characters
bankAccountIdentifier
required

BankAccount identifier within the account

string
"" >= 1 characters
grossAmount

Full available balance before fees are deducted

number | null
""
transferFeeAmount

Revolut flat transfer fee ($5 USD converted to withdrawal currency)

number | null
""
fxFeeRate

FX exchange fee rate (0.006 or 0.010). Null if withdrawal currency is USD.

number | null
""
fxFeeAmount

Calculated FX exchange fee amount. Null if withdrawal currency is USD.

number | null
""
amount
required

Net amount sent to Revolut (grossAmount − transferFee − fxFee)

number
""
currencyCode
required

ISO 4217 currency code of the withdrawal

string
"" >= 1 characters
status
required

Current status of the withdrawal lifecycle

string
""
Allowed values: PENDING PROCESSING COMPLETED FAILED
revolutPaymentId

Revolut transaction ID returned by the Revolut Business API

string | null
""
referenceCode
required

Human-readable reference shown on bank statements

string
"" >= 1 characters
requestedAt
required

When the withdrawal was requested

string format: date-time
""
completedAt

When the withdrawal was completed (null until COMPLETED state)

string | null format: date-time
""
key
additional properties
""
Example
null

Invalid destination or insufficient balance

object
type
string format: uri
title
string
status
integer format: int32
detail
string
instance
string format: uri
properties
object
key
additional properties
Example generated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
}
}

Unauthorized — missing or invalid JWT token

Media type */*
object
type
string format: uri
title
string
status
integer format: int32
detail
string
instance
string format: uri
properties
object
key
additional properties

Forbidden — missing ACCOUNTING:WRITE permission

Media type */*
object
type
string format: uri
title
string
status
integer format: int32
detail
string
instance
string format: uri
properties
object
key
additional properties

Managing entity or destination not found

Media type application/json

TripPay beneficiary withdrawal (payout) to a bank account via Revolut.

object
id

Document UUID

string format: uuid
""
createdDate

Datetime this record was first created

string format: date-time
""
lastUpdate

Datetime this record was last updated

string format: date-time
""
version

Version property that shows how many times this document has been persisted. Document will not persist if the version property is less than current version property in the system. Result in an optimistic locking exception.

integer format: int64
""
accountIdentifier
required

TripPay account identifier of the beneficiary requesting withdrawal

string
"" >= 1 characters
bankAccountIdentifier
required

BankAccount identifier within the account

string
"" >= 1 characters
grossAmount

Full available balance before fees are deducted

number | null
""
transferFeeAmount

Revolut flat transfer fee ($5 USD converted to withdrawal currency)

number | null
""
fxFeeRate

FX exchange fee rate (0.006 or 0.010). Null if withdrawal currency is USD.

number | null
""
fxFeeAmount

Calculated FX exchange fee amount. Null if withdrawal currency is USD.

number | null
""
amount
required

Net amount sent to Revolut (grossAmount − transferFee − fxFee)

number
""
currencyCode
required

ISO 4217 currency code of the withdrawal

string
"" >= 1 characters
status
required

Current status of the withdrawal lifecycle

string
""
Allowed values: PENDING PROCESSING COMPLETED FAILED
revolutPaymentId

Revolut transaction ID returned by the Revolut Business API

string | null
""
referenceCode
required

Human-readable reference shown on bank statements

string
"" >= 1 characters
requestedAt
required

When the withdrawal was requested

string format: date-time
""
completedAt

When the withdrawal was completed (null until COMPLETED state)

string | null format: date-time
""
Example
null

Internal Server Error

object
Example generated
{}