Create a PayPal Deposit Preauthorization

This endpoint creates a [Deposit Preauthorization](/api-reference/deposit-preauthorizations/deposit-preauthorization-object) with `PaymentType` of `PAYPAL` and returns the PayPal `RedirectURL` on which the user can preauthorize the debited funds. Once authorized (`Status` becomes `SUCCEEDED`), you can capture the funds using the [POST Create a Deposit Preauthorized PayIn](/api-reference/deposit-preauthorizations/create-deposit-preauthorized-payin) endpoint. <Check icon="fa-regular fa-circle-check"> **Best practice - Capture funds within 3 days** PayPal recommends that you capture preauthorized funds within 3 days (using [POST Create a Deposit Preauthorized PayIn](/api-reference/deposit-preauthorizations/create-deposit-preauthorized-payin)). This is because the success of the capture is subject to risk and the availability of funds on the card (or other funding instrument) that the user has linked to their PayPal account. </Check>

Authentication

AuthorizationBearer
Bearer authentication of the form `Bearer <token>`, where token is your auth token. If your platform is using a [proxy](/guides/sca/proxy-management) to take SCA-triggering action on behalf of users, you also need to integrate [mTLS authentication](/guides/sca/platform) and use the `api-mtls` base URL.

Path parameters

ClientIdstringRequired
Platform's API account identifier, associated with the API key.

Request

This endpoint expects an object.
AuthorIdstringRequired
The unique identifier of the user at the source of the transaction.
DebitedFundsobjectRequired
Information about the preauthorized funds.
ReturnURLstringRequired

Max. length: 255 characters

The URL to which the user is returned after the payment, whether the transaction is successful or not.

LineItemslist of objectsRequired

Information about the items purchased in the transaction. The total of all line items’ UnitAmount and TaxAmount must equal the DebitedFunds amount (negative amounts not allowed).

FlowDescriptorobjectOptional

Information about the Owner beneficiaries targeted by the pay-in and its subsequent transfers, who must all be KYC/KYB verified when the pay-in request is made (read more).

If the FlowDescriptor.Beneficiaries is sent in the API request, then:

  • The transaction’s CreditedWalletId holder is disregarded in KYC/KYB checks.
  • ALL UserId values in the array must be one of:
    • OWNER whose KYCLevel is REGULAR
    • PLATFORM

The pay-in Status becomes FAILED with ResultCode 002951 if at least one FlowDescriptor.Beneficiaries.UserId is:

  • PAYER
  • OWNER whose KYCLevel is LIGHT

If the FlowDescriptor.Beneficiaries is not sent in the API request, then the CreditedWalletId holder is subject to KYC/KYB checks. This property is optional for backwards compatibility but is recommended for all pay-in flows, even when the CreditedWalletId holder is a PAYER or the same value as one of the FlowDescriptor.Beneficiaries.

TagstringOptional

Max. length: 255 characters

Custom data that you can add to this object.

CancelURLstringOptional

The URL to which the user is returned after canceling the payment. If not provided, the Cancel button returns the user to the RedirectURL.

DataCollectionIdstringOptional

The unique identifier of the Data Collection object, returned after sending the requested data to the POST Submit data for a PayPal PayIn endpoint.

ShippingPreferencestringOptional

Allowed values: SET_PROVIDED_ADDRESS, GET_FROM_FILE, NO_SHIPPING

Information about the shipping address behavior on the PayPal payment page:

  • SET_PROVIDED_ADDRESS - The Shipping parameter becomes required and its values are displayed to the end user, who is not able to modify them.
  • GET_FROM_FILE – The Shipping parameter is ignored and the end user can choose from registered addresses.
  • NO_SHIPPING – No shipping address section is displayed.
ShippingobjectOptional

Required if ShippingPreference is SET_PROVIDED_ADDRESS.

Information about the end user’s shipping address, managed by ShippingPreference.

ReferencestringOptional

Max. length: 127 characters (truncated after)

The platform’s order reference for the transaction.

StatementDescriptorstringOptional

Max. length: 10 characters; only alphanumeric and spaces

Custom description to appear on the user’s bank statement along with the platform name. Different banks may show more or less information. See the Customizing bank statement references article for details.

CulturestringOptional

Allowed values: One of the supported languages in the ISO 639-1 format: AT, BR, CA, CH, CN, DE, DK, ES, FR, GB, ID, IL, IT, JK, JP, NL, NO, PL, PT, RU, SE, TH, TR, TW, US.

The language in which the PayPal payment page is to be displayed.

ProfilingAttemptReferencestringOptional

The unique reference generated for the profiling session, used by the fraud prevention solution to produce recommendations for the transaction using the profiling data.

Note: Parameter not returned by the API. Profiling feature available on request – contact Mangopay via the Dashboard for more information.

Response

Success
Idstring

Max length: 128 characters (see data formats for details)

The unique identifier of the object.

CreationDateinteger

Unix timestamp (UTC) of the date and time the object was created.

ExpirationDateinteger

Unix timestamp (UTC) of the date and time the hold period ends and the preauthorized funds are released. At the expiration date, the deposit preauthorization’s PaymentStatus changes to EXPIRED if no captures were made.

AuthorizationDateinteger

Unix timestamp (UTC) of the date and time successful authorization occurred. If authorization failed, the value is null.

AuthorIdstring
The unique identifier of the user at the source of the transaction.
FlowDescriptorobject

Information about the Owner beneficiaries targeted by the pay-in and its subsequent transfers, who must all be KYC/KYB verified when the pay-in request is made (read more).

If the FlowDescriptor.Beneficiaries is sent in the API request, then:

  • The transaction’s CreditedWalletId holder is disregarded in KYC/KYB checks.
  • ALL UserId values in the array must be one of:
    • OWNER whose KYCLevel is REGULAR
    • PLATFORM

The pay-in Status becomes FAILED with ResultCode 002951 if at least one FlowDescriptor.Beneficiaries.UserId is:

  • PAYER
  • OWNER whose KYCLevel is LIGHT

If the FlowDescriptor.Beneficiaries is not sent in the API request, then the CreditedWalletId holder is subject to KYC/KYB checks. This property is optional for backwards compatibility but is recommended for all pay-in flows, even when the CreditedWalletId holder is a PAYER or the same value as one of the FlowDescriptor.Beneficiaries.

DebitedFundsobject
Information about the preauthorized funds.
Statusstring

Returned values: CREATED, SUCCEEDED, FAILED

The status of the authorization.

PaymentStatusstring

Returned values: WAITING, CANCELED, CANCEL_REQUESTED, EXPIRED, VALIDATED, FAILED

The payment status of the deposit preauthorization object:

  • WAITING – The deposit preauthorization can be used: the preauthorized funds can be captured (if Status is SUCCEEDED) or the preauthorization can be canceled manually.
  • CANCELED – Value to pass to manually cancel the deposit preauthorization before use; indicates that the deposit preauthorization was canceled manually.
  • CANCEL_REQUESTED – The cancellation of the deposit preauthorization has been requested but not yet processed.
  • EXPIRED – The hold period on the preauthorized funds has ended without it being used.
  • VALIDATED – Indicates that the preauthorized funds were captured.
  • FAILED – The pay-in against the preauthorization has failed, but a retry may be possible.
PayinsLinkedobject

Information about the deposit preauthorized pay-ins made against the deposit preauthorization.

ResultCodestring

The code indicating the result of the operation. This information is mostly used to handle errors or for filtering purposes.

ResultMessagestring
The explanation of the result code.
PaymentTypestring

Returned values: PAYPAL

The payment type of the preauthorization.

ExecutionTypestring

Returned values: WEB

The execution type of the preauthorization.

StatementDescriptorstring

Max. length: 10 characters; only alphanumeric and spaces

Custom description to appear on the user’s bank statement along with the platform name. Different banks may show more or less information. See the Customizing bank statement references article for details.

Shippingobject

Default values: FirstName, LastName, and Address information of the Billing object if sent, otherwise of the AuthorId (if address values present).

Information about the shipping address.

Tagstring

Max. length: 255 characters

Custom data that you can add to this object.

ShippingPreferencestring

Returned values: SET_PROVIDED_ADDRESS, GET_FROM_FILE, NO_SHIPPING

Information about the shipping address behavior on the PayPal payment page:

  • SET_PROVIDED_ADDRESS - The Shipping parameter becomes required and its values are displayed to the end user, who is not able to modify them.
  • GET_FROM_FILE – The Shipping parameter is ignored and the end user can choose from registered addresses.
  • NO_SHIPPING – No shipping address section is displayed.
PaypalBuyerAccountEmailstring
The email address registered on the PayPal account used to make the payment.
Referencestring

Max. length: 127 characters (truncated after)

The platform’s order reference for the transaction.

CancelURLstring

The URL to which the user is returned after canceling the payment. If not provided, the Cancel button returns the user to the RedirectURL.

PaypalOrderIDstring
PayPal's unique identifier for the order.
BuyerCountrystring
The country of the buyer.
BuyerFirstnamestring
The first name of the buyer.
BuyerPhonestring
The mobile phone number of the buyer.
BuyerLastnamestring
The last name of the buyer.
PaypalPayerIDstring
The PayPal identifier of the buyer.
Trackingslist of objects

Shipping information of the LineItems added to the pay-in object.

LineItemslist of objects

Information about the items purchased in the transaction. The total of all line items’ UnitAmount and TaxAmount must equal the DebitedFunds amount (negative amounts not allowed).

Culturestring

Returned values: One of the supported languages in the ISO 639-1 format: AT, BR, CA, CH, CN, DE, DK, ES, FR, GB, ID, IL, IT, JK, JP, NL, NO, PL, PT, RU, SE, TH, TR, TW, US.

The language in which the PayPal payment page is to be displayed.

Billingany

Returned null because the billing address is not applicable to PayPal preauth.

RedirectURLstring

The URL to which to redirect the user to complete the payment.

Caution: This variable URL is specific to each payment. You must rely on the returned URL in full (host, path, and queries) and not hardcode any part of it.

ReturnURLstring

Max. length: 255 characters

The URL to which the user is returned after the payment, whether the transaction is successful or not.