3rd party transfer

Handling Third-Party Payments via destination.is_self_transfer

If you are initiating a transfer on behalf of a customer and the recipient is not the customer (i.e. the funds are being paid to a third party), you must clearly indicate this in your API request.

To represent such a third-party payment scenario, set the following field in your POST /transfers API request:

curl --location --request POST 'https://harbor-sandbox.owlpay.com/api/v1/transfer' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-API-KEY: {{API_KEY}}' \
--header 'Idempotency-Key: {{Idempotency-Key}}' \
--data-raw '{
    ...,
    "destination": {
        ...,
        "is_self_transfer": false
    }
}'

❗️

If you pass false in is_self_transfer

If the payer and the payee are obviously different and the wrong field is passed, it may cause payment delays, and the transaction may also be cancelled.

Setting "is_self_transfer": false informs OwlPay Harbor that the transfer involves two different parties:

  • The payer (your customer, identified via source.on_behalf_of)
  • The payee (a third-party recipient specified in the destination object)

This field is essential for:

  • Correct application of compliance logic
  • Proper handling of transaction records and audit trails
  • Preventing misuse of customer funds for self-transfers disguised as third-party payments

If the recipient is the same individual or business as the sender (i.e., the customer is transferring funds to themselves), then set is_self_transfer to true.