A transfer is the movement of funds between two wallet accounts. There are three types of participants in a transfer:
Customer wallets - regular users onboarded on embedded wallets solution
Legal Entity wallets - wallets, that belong to legal entities.
Merchant wallets - wallets belonging to the merchant.
These types of participants are treated differently from a regulatory perspective but used the same way for performing transfers.
For performing a transfer you need the following parameters:
amount - the amount in minor units
currencyCode - must match the sending account currency
sender.customerId - wallet customer id of the sender
sender.accountId - wallet account id of the sented account
recipient.customerId - wallet customer id of the recipient
recipient.accountId - wallet customer id of the recipient
screeningId - required for transfers telated to Third Party deposits or withdrawals
fee (optional) - (In Development) fee collected by the merchant for this transfer. Fee is always collected in sending account currency.
authorizationHoldId(optional) - (In Development) Previously acquired authorization hold to block funds for the transfer
The transfer currency must always match the sender account currency. By default the recipient account also must be in the same currency.
Currency conversion is not explicitly enabled. For currency conversion during transfers, contact a Paysafe sales representative.
Set recipient field to the Merchant customer id and account id. These are set up during merchant onboarding.
Set sender field to the Merchant customer id and account id. These are setup during merchant onboarding.
Set sender and recipient fields with the respective customer and account ids of the transfer participants.
Transfer Async behavior
The transfers are executed asynchronously.
the response will contain the submitted information, without the deviceInfo section
Merchant must wait for the webhook for this transaction to confirm the final status of the operation - successful or not.
Until the webhook is received, the Merchant can query the transfer using the Transactions endpoint, using merchantRefNum. While the transfer is still in the queue, an empty response will be returned.
Merchant Fee collection
A fee can be collected by the merchant for the transfer. The fee parameter is passed in minor units and is always collected in sending account currency.
Fees are collected in preconfigured merchant fee collection account in the corresponding fee currency.
Authorization holds API allows balance blocking for transfer operations. This allows for ensuring balance is available when a transfer is ordered and avoids balance not enough failures.