POST /v2/checkout/orders/order-update-callback

The documentation for this 'endpoint' is different from the other endpoints under v2 Orders. For this endpoint the role of client and server is reversed. The client sending the request is PayPal, and the server sending the response is the merchant. In the request, PayPal will send the buyer's redacted shipping address and selected shipping option to the callback URL defined the create order request. The response from the merchant will update the Orders resource.

Servers

Request headers

Name Type Required Description
Content-Type String Yes The media type of the request body.

Default value: "application/json"

Request body fields

Name Type Required Description
id String No

The ID of the order.

shipping_address Object Yes

The portable international postal address. Maps to AddressValidationMetadata and HTML 5.1 Autofilling form controls: the autocomplete attribute.

shipping_address.postal_code String No

The postal code, which is the ZIP code or equivalent. Typically required for countries with a postal code or an equivalent. See postal code.

shipping_address.admin_area_2 String No

A city, town, or village. Smaller than admin_area_level_1.

shipping_address.country_code String Yes

The 2-character ISO 3166-1 code that identifies the country or region.

Note: The country code for Great Britain is GB and not UK as used in the top-level domain names for that country. Use the C2 country code for China worldwide for comparable uncontrolled price (CUP) method, bank card, and cross-border transactions.
shipping_address.admin_area_1 String No

The highest-level sub-division in a country, which is usually a province, state, or ISO-3166-2 subdivision. This data is formatted for postal delivery, for example, CA and not California. Value, by country, is:

  • UK. A county.
  • US. A state.
  • Canada. A province.
  • Japan. A prefecture.
  • Switzerland. A kanton.
shipping_option Object No

The options that the payee or merchant offers to the payer to ship or pick up their items.

shipping_option.id String Yes

A unique ID that identifies a payer-selected shipping option.

shipping_option.label String Yes

A description that the payer sees, which helps them choose an appropriate shipping option. For example, Free Shipping, USPS Priority Shipping, Expédition prioritaire USPS, or USPS yōuxiān fā huò. Localize this description to the payer's locale.

shipping_option.amount Object No

The currency and amount for a financial transaction, such as a balance or payment due.

shipping_option.amount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

shipping_option.amount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
shipping_option.type String No

A classification for the method of purchase fulfillment.

Possible values:

  • "PICKUP_IN_STORE"
  • "PICKUP_FROM_PERSON"
  • "SHIPPING"
  • "PICKUP"
purchase_units[] Array Yes

An array of purchase units. At present only 1 purchase_unit is supported. Each purchase unit establishes a contract between a payer and the payee. Each purchase unit represents either a full or partial order that the payer intends to purchase from the payee.

purchase_units[].custom_id String No

The API caller-provided external ID. Used to reconcile client transactions with PayPal transactions. Appears in transaction and settlement reports but is not visible to the payer.

purchase_units[].payment_instruction Object No

Any additional payment instructions to be consider during payment processing. This processing instruction is applicable for Capturing an order or Authorizing an Order.

purchase_units[].payment_instruction.payee_receivable_fx_rate_id String No

FX identifier generated returned by PayPal to be used for payment processing in order to honor FX rate (for eligible integrations) to be used when amount is settled/received into the payee account.

purchase_units[].payment_instruction.platform_fees[] Array No

An array of various fees, commissions, tips, or donations. This field is only applicable to merchants that been enabled for PayPal Complete Payments Platform for Marketplaces and Platforms capability.

purchase_units[].payment_instruction.platform_fees[].payee Object No

The details for the merchant who receives the funds and fulfills the order. The merchant is also known as the payee.

purchase_units[].payment_instruction.platform_fees[].payee.email_address String No

The internationalized email address.

Note: Up to 64 characters are allowed before and 255 characters are allowed after the @ sign. However, the generally accepted maximum length for an email address is 254 characters. The pattern verifies that an unquoted @ sign exists.
purchase_units[].payment_instruction.platform_fees[].payee.merchant_id String No

The account identifier for a PayPal account.

purchase_units[].payment_instruction.platform_fees[].amount Object Yes

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].payment_instruction.platform_fees[].amount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].payment_instruction.platform_fees[].amount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].payment_instruction.disbursement_mode String No

The funds that are held on behalf of the merchant.

Possible values:

  • "INSTANT"
  • "DELAYED"

Default value: "INSTANT"

purchase_units[].payment_instruction.payee_pricing_tier_id String No

This field is only enabled for selected merchants/partners to use and provides the ability to trigger a specific pricing rate/plan for a payment transaction. The list of eligible 'payee_pricing_tier_id' would be provided to you by your Account Manager. Specifying values other than the one provided to you by your account manager would result in an error.

purchase_units[].description String No

The purchase description. The maximum length of the character is dependent on the type of characters used. The character length is specified assuming a US ASCII character. Depending on type of character; (e.g. accented character, Japanese characters) the number of characters that that can be specified as input might not equal the permissible max length.

purchase_units[].payee Object No

The merchant who receives the funds and fulfills the order. The merchant is also known as the payee.

purchase_units[].payee.email_address String No

The internationalized email address.

Note: Up to 64 characters are allowed before and 255 characters are allowed after the @ sign. However, the generally accepted maximum length for an email address is 254 characters. The pattern verifies that an unquoted @ sign exists.
purchase_units[].payee.merchant_id String No

The account identifier for a PayPal account.

purchase_units[].invoice_id String No

The API caller-provided external invoice number for this order. Appears in both the payer's transaction history and the emails that the payer receives.

purchase_units[].amount Object Yes

The total order amount with an optional breakdown that provides details, such as the total item amount, total tax amount, shipping, handling, insurance, and discounts, if any.
If you specify amount.breakdown, the amount equals item_total plus tax_total plus shipping plus handling plus insurance minus shipping_discount minus discount.
The amount must be a positive number. For listed of supported currencies and decimal precision, see the PayPal REST APIs Currency Codes.

purchase_units[].amount.breakdown Object No

The breakdown of the amount. Breakdown provides details such as total item amount, total tax amount, shipping, handling, insurance, and discounts, if any.

purchase_units[].amount.breakdown.shipping_discount Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].amount.breakdown.shipping_discount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].amount.breakdown.shipping_discount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].amount.breakdown.handling Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].amount.breakdown.handling.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].amount.breakdown.handling.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].amount.breakdown.insurance Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].amount.breakdown.insurance.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].amount.breakdown.insurance.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].amount.breakdown.tax_total Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].amount.breakdown.tax_total.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].amount.breakdown.tax_total.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].amount.breakdown.shipping Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].amount.breakdown.shipping.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].amount.breakdown.shipping.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].amount.breakdown.discount Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].amount.breakdown.discount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].amount.breakdown.discount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].amount.breakdown.item_total Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].amount.breakdown.item_total.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].amount.breakdown.item_total.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].amount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].amount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].supplementary_data Object No

Supplementary data about a payment. This object passes information that can be used to improve risk assessments and processing costs, for example, by providing Level 2 and Level 3 payment data.

purchase_units[].supplementary_data.risk Object No

Additional information necessary to evaluate the risk profile of a transaction.

purchase_units[].supplementary_data.risk.customer Object No

Profile information of the sender or receiver.

purchase_units[].supplementary_data.risk.customer.ip_address String No

An Internet Protocol address (IP address). This address assigns a numerical label to each device that is connected to a computer network through the Internet Protocol. Supports IPv4 and IPv6 addresses.

purchase_units[].supplementary_data.card Object No

Merchants and partners can add Level 2 and 3 data to payments to reduce risk and payment processing costs. For more information about processing payments, see checkout or multiparty checkout.

purchase_units[].supplementary_data.card.level_2 Object No

The level 2 card processing data collections. If your merchant account has been configured for Level 2 processing this field will be passed to the processor on your behalf. Please contact your PayPal Technical Account Manager to define level 2 data for your business.

purchase_units[].supplementary_data.card.level_2.invoice_id String No

Use this field to pass a purchase identification value of up to 127 ASCII characters. The length of this field will be adjusted to meet network specifications (25chars for Visa and Mastercard, 17chars for Amex), and the original invoice ID will still be displayed in your existing reports.

purchase_units[].supplementary_data.card.level_2.tax_total Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].supplementary_data.card.level_2.tax_total.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].supplementary_data.card.level_2.tax_total.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].supplementary_data.card.level_3 Object No

The level 3 card processing data collections, If your merchant account has been configured for Level 3 processing this field will be passed to the processor on your behalf. Please contact your PayPal Technical Account Manager to define level 3 data for your business.

purchase_units[].supplementary_data.card.level_3.shipping_address Object No

The portable international postal address. Maps to AddressValidationMetadata and HTML 5.1 Autofilling form controls: the autocomplete attribute.

purchase_units[].supplementary_data.card.level_3.shipping_address.postal_code String No

The postal code, which is the ZIP code or equivalent. Typically required for countries with a postal code or an equivalent. See postal code.

purchase_units[].supplementary_data.card.level_3.shipping_address.admin_area_2 String No

A city, town, or village. Smaller than admin_area_level_1.

purchase_units[].supplementary_data.card.level_3.shipping_address.country_code String Yes

The 2-character ISO 3166-1 code that identifies the country or region.

Note: The country code for Great Britain is GB and not UK as used in the top-level domain names for that country. Use the C2 country code for China worldwide for comparable uncontrolled price (CUP) method, bank card, and cross-border transactions.
purchase_units[].supplementary_data.card.level_3.shipping_address.admin_area_1 String No

The highest-level sub-division in a country, which is usually a province, state, or ISO-3166-2 subdivision. This data is formatted for postal delivery, for example, CA and not California. Value, by country, is:

  • UK. A county.
  • US. A state.
  • Canada. A province.
  • Japan. A prefecture.
  • Switzerland. A kanton.
purchase_units[].supplementary_data.card.level_3.shipping_address.address_line_2 String No

The second line of the address, for example, a suite or apartment number.

purchase_units[].supplementary_data.card.level_3.shipping_address.address_line_1 String No

The first line of the address, such as number and street, for example, 173 Drury Lane. Needed for data entry, and Compliance and Risk checks. This field needs to pass the full address.

purchase_units[].supplementary_data.card.level_3.line_items[] Array No

A list of the items that were purchased with this payment. If your merchant account has been configured for Level 3 processing this field will be passed to the processor on your behalf.

purchase_units[].supplementary_data.card.level_3.line_items[].tax Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].supplementary_data.card.level_3.line_items[].tax.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].supplementary_data.card.level_3.line_items[].tax.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].supplementary_data.card.level_3.line_items[].description String No

The detailed item description.

purchase_units[].supplementary_data.card.level_3.line_items[].url String No

The URL to the item being purchased. Visible to buyer and used in buyer experiences.

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan Object No

Metadata for merchant-managed recurring billing plans. Valid only during the saved payment method token or billing agreement creation.

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.name String No

Name of the recurring plan.

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.setup_fee Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.setup_fee.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.setup_fee.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[] Array Yes

An array of billing cycles for trial billing and regular billing. A plan can have at most two trial cycles and only one regular cycle.

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[].frequency No
purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[].pricing_scheme Object No

The pricing scheme details.

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[].pricing_scheme.price Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[].pricing_scheme.price.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[].pricing_scheme.price.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[].pricing_scheme.pricing_model String Yes

The pricing model for the billing cycle.

Possible values:

  • "AUTO_RELOAD"
  • "FIXED"
  • "VARIABLE"
purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[].pricing_scheme.reload_threshold_amount Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[].pricing_scheme.reload_threshold_amount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[].pricing_scheme.reload_threshold_amount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[].start_date String No

The stand-alone date, in Internet date and time format. To represent special legal values, such as a date of birth, you should use dates with no associated time or time-zone data. Whenever possible, use the standard date_time type. This regular expression does not validate all dates. For example, February 31 is valid and nothing is known about leap years.

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[].sequence Integer No

The order in which this cycle is to run among other billing cycles. For example, a trial billing cycle has a sequence of 1 while a regular billing cycle has a sequence of 2, so that trial cycle runs before the regular cycle.

Default value: 1

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[].total_cycles Integer No

The number of times this billing cycle gets executed. Trial billing cycles can only be executed a finite number of times (value between 1 and 999 for total_cycles). Regular billing cycles can be executed infinite times (value of 0 for total_cycles) or a finite number of times (value between 1 and 999 for total_cycles).

Default value: 1

purchase_units[].supplementary_data.card.level_3.line_items[].billing_plan.billing_cycles[].tenure_type String Yes

The tenure type of the billing cycle identifies if the billing cycle is a trial(free or discounted) or regular billing cycle.

Possible values:

  • "REGULAR"
  • "TRIAL"
purchase_units[].supplementary_data.card.level_3.line_items[].quantity String Yes

The item quantity. Must be a whole number.

purchase_units[].supplementary_data.card.level_3.line_items[].commodity_code String No

Code used to classify items purchased and track the total amount spent across various categories of products and services. Different corporate purchasing organizations may use different standards, but the United Nations Standard Products and Services Code (UNSPSC) is frequently used.

purchase_units[].supplementary_data.card.level_3.line_items[].image_url String No

The URL of the item's image. File type and size restrictions apply. An image that violates these restrictions will not be honored.

purchase_units[].supplementary_data.card.level_3.line_items[].unit_of_measure String No

Unit of measure is a standard used to express the magnitude of a quantity in international trade. Most commonly used (but not limited to) examples are: Acre (ACR), Ampere (AMP), Centigram (CGM), Centimetre (CMT), Cubic inch (INQ), Cubic metre (MTQ), Fluid ounce (OZA), Foot (FOT), Hour (HUR), Item (ITM), Kilogram (KGM), Kilometre (KMT), Kilowatt (KWT), Liquid gallon (GLL), Liter (LTR), Pounds (LBS), Square foot (FTK).

purchase_units[].supplementary_data.card.level_3.line_items[].total_amount Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].supplementary_data.card.level_3.line_items[].total_amount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].supplementary_data.card.level_3.line_items[].total_amount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].supplementary_data.card.level_3.line_items[].unit_amount Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].supplementary_data.card.level_3.line_items[].unit_amount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].supplementary_data.card.level_3.line_items[].unit_amount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].supplementary_data.card.level_3.line_items[].name String Yes

The item name or title.

purchase_units[].supplementary_data.card.level_3.line_items[].sku String No

The stock keeping unit (SKU) for the item.

purchase_units[].supplementary_data.card.level_3.line_items[].discount_amount Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].supplementary_data.card.level_3.line_items[].discount_amount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].supplementary_data.card.level_3.line_items[].discount_amount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].supplementary_data.card.level_3.line_items[].upc Object No

The Universal Product Code of the item.

purchase_units[].supplementary_data.card.level_3.line_items[].upc.type String Yes

The Universal Product Code type.

Possible values:

  • "UPC-C"
  • "UPC-B"
  • "UPC-2"
  • "UPC-E"
  • "UPC-5"
  • "UPC-D"
  • "UPC-A"
purchase_units[].supplementary_data.card.level_3.line_items[].upc.code String Yes

The UPC product code of the item.

purchase_units[].supplementary_data.card.level_3.shipping_amount Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].supplementary_data.card.level_3.shipping_amount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].supplementary_data.card.level_3.shipping_amount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].supplementary_data.card.level_3.duty_amount Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].supplementary_data.card.level_3.duty_amount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].supplementary_data.card.level_3.duty_amount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].supplementary_data.card.level_3.discount_amount Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].supplementary_data.card.level_3.discount_amount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].supplementary_data.card.level_3.discount_amount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].supplementary_data.card.level_3.ships_from_postal_code String No

Use this field to specify the postal code of the shipping location.

purchase_units[].soft_descriptor String No

The soft descriptor is the dynamic text used to construct the statement descriptor that appears on a payer's card statement.

If an Order is paid using the "PayPal Wallet", the statement descriptor will appear in following format on the payer's card statement: PAYPAL_prefix+(space)+merchant_descriptor+(space)+ soft_descriptor

Note: The merchant descriptor is the descriptor of the merchant’s payment receiving preferences which can be seen by logging into the merchant account https://www.sandbox.paypal.com/businessprofile/settings/info/edit
The PAYPAL prefix uses 8 characters. Only the first 22 characters will be displayed in the statement.
For example, if:
  • The PayPal prefix toggle is PAYPAL *.
  • The merchant descriptor in the profile is Janes Gift.
  • The soft descriptor is 800-123-1234.
Then, the statement descriptor on the card is PAYPAL * Janes Gift 80.
purchase_units[].items[] Array No

An array of items that the customer purchases from the merchant.

purchase_units[].items[].unit_amount Object Yes

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].items[].unit_amount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].items[].unit_amount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].items[].tax Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].items[].tax.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].items[].tax.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].items[].category String No

The item category type.

Possible values:

  • "DONATION"
  • "PHYSICAL_GOODS"
  • "DIGITAL_GOODS"
purchase_units[].items[].name String Yes

The item name or title.

purchase_units[].items[].sku String No

The stock keeping unit (SKU) for the item.

purchase_units[].items[].description String No

The detailed item description.

purchase_units[].items[].url String No

The URL to the item being purchased. Visible to buyer and used in buyer experiences.

purchase_units[].items[].billing_plan Object No

Metadata for merchant-managed recurring billing plans. Valid only during the saved payment method token or billing agreement creation.

purchase_units[].items[].billing_plan.name String No

Name of the recurring plan.

purchase_units[].items[].billing_plan.setup_fee Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].items[].billing_plan.setup_fee.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].items[].billing_plan.setup_fee.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].items[].billing_plan.billing_cycles[] Array Yes

An array of billing cycles for trial billing and regular billing. A plan can have at most two trial cycles and only one regular cycle.

purchase_units[].items[].billing_plan.billing_cycles[].frequency No
purchase_units[].items[].billing_plan.billing_cycles[].pricing_scheme Object No

The pricing scheme details.

purchase_units[].items[].billing_plan.billing_cycles[].pricing_scheme.price Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].items[].billing_plan.billing_cycles[].pricing_scheme.price.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].items[].billing_plan.billing_cycles[].pricing_scheme.price.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].items[].billing_plan.billing_cycles[].pricing_scheme.pricing_model String Yes

The pricing model for the billing cycle.

Possible values:

  • "AUTO_RELOAD"
  • "FIXED"
  • "VARIABLE"
purchase_units[].items[].billing_plan.billing_cycles[].pricing_scheme.reload_threshold_amount Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].items[].billing_plan.billing_cycles[].pricing_scheme.reload_threshold_amount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].items[].billing_plan.billing_cycles[].pricing_scheme.reload_threshold_amount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].items[].billing_plan.billing_cycles[].start_date String No

The stand-alone date, in Internet date and time format. To represent special legal values, such as a date of birth, you should use dates with no associated time or time-zone data. Whenever possible, use the standard date_time type. This regular expression does not validate all dates. For example, February 31 is valid and nothing is known about leap years.

purchase_units[].items[].billing_plan.billing_cycles[].sequence Integer No

The order in which this cycle is to run among other billing cycles. For example, a trial billing cycle has a sequence of 1 while a regular billing cycle has a sequence of 2, so that trial cycle runs before the regular cycle.

Default value: 1

purchase_units[].items[].billing_plan.billing_cycles[].total_cycles Integer No

The number of times this billing cycle gets executed. Trial billing cycles can only be executed a finite number of times (value between 1 and 999 for total_cycles). Regular billing cycles can be executed infinite times (value of 0 for total_cycles) or a finite number of times (value between 1 and 999 for total_cycles).

Default value: 1

purchase_units[].items[].billing_plan.billing_cycles[].tenure_type String Yes

The tenure type of the billing cycle identifies if the billing cycle is a trial(free or discounted) or regular billing cycle.

Possible values:

  • "REGULAR"
  • "TRIAL"
purchase_units[].items[].quantity String Yes

The item quantity. Must be a whole number.

purchase_units[].items[].upc Object No

The Universal Product Code of the item.

purchase_units[].items[].upc.type String Yes

The Universal Product Code type.

Possible values:

  • "UPC-C"
  • "UPC-B"
  • "UPC-2"
  • "UPC-E"
  • "UPC-5"
  • "UPC-D"
  • "UPC-A"
purchase_units[].items[].upc.code String Yes

The UPC product code of the item.

purchase_units[].items[].image_url String No

The URL of the item's image. File type and size restrictions apply. An image that violates these restrictions will not be honored.

purchase_units[].shipping Object No

The shipping details.

purchase_units[].shipping.name Object No

The name of the party.

purchase_units[].shipping.name.full_name String No

When the party is a person, the party's full name.

purchase_units[].shipping.email_address String No

The internationalized email address.

Note: Up to 64 characters are allowed before and 255 characters are allowed after the @ sign. However, the generally accepted maximum length for an email address is 254 characters. The pattern verifies that an unquoted @ sign exists.
purchase_units[].shipping.options[] Array No

An array of shipping options that the payee or merchant offers to the payer to ship or pick up their items.

purchase_units[].shipping.options[].id String Yes

A unique ID that identifies a payer-selected shipping option.

purchase_units[].shipping.options[].selected Boolean Yes

If the API request sets selected = true, it represents the shipping option that the payee or merchant expects to be pre-selected for the payer when they first view the shipping.options in the PayPal Checkout experience. As part of the response if a shipping.option contains selected=true, it represents the shipping option that the payer selected during the course of checkout with PayPal. Only one shipping.option can be set to selected=true.

purchase_units[].shipping.options[].label String Yes

A description that the payer sees, which helps them choose an appropriate shipping option. For example, Free Shipping, USPS Priority Shipping, Expédition prioritaire USPS, or USPS yōuxiān fā huò. Localize this description to the payer's locale.

purchase_units[].shipping.options[].amount Object No

The currency and amount for a financial transaction, such as a balance or payment due.

purchase_units[].shipping.options[].amount.currency_code String Yes

The three-character ISO-4217 currency code that identifies the currency.

purchase_units[].shipping.options[].amount.value String Yes

The value, which might be:

  • An integer for currencies like JPY that are not typically fractional.
  • A decimal fraction for currencies like TND that are subdivided into thousandths.
For the required number of decimal places for a currency code, see Currency Codes.
purchase_units[].shipping.options[].type String No

A classification for the method of purchase fulfillment.

Possible values:

  • "PICKUP_IN_STORE"
  • "PICKUP_FROM_PERSON"
  • "SHIPPING"
  • "PICKUP"
purchase_units[].shipping.type String No

A classification for the method of purchase fulfillment (e.g shipping, in-store pickup, etc). Either type or options may be present, but not both.

Possible values:

  • "PICKUP_IN_STORE"
  • "PICKUP_FROM_PERSON"
  • "PICKUP_IN_PERSON"
  • "SHIPPING"
purchase_units[].shipping.address Object No

The portable international postal address. Maps to AddressValidationMetadata and HTML 5.1 Autofilling form controls: the autocomplete attribute.

purchase_units[].shipping.address.postal_code String No

The postal code, which is the ZIP code or equivalent. Typically required for countries with a postal code or an equivalent. See postal code.

purchase_units[].shipping.address.admin_area_2 String No

A city, town, or village. Smaller than admin_area_level_1.

purchase_units[].shipping.address.country_code String Yes

The 2-character ISO 3166-1 code that identifies the country or region.

Note: The country code for Great Britain is GB and not UK as used in the top-level domain names for that country. Use the C2 country code for China worldwide for comparable uncontrolled price (CUP) method, bank card, and cross-border transactions.
purchase_units[].shipping.address.admin_area_1 String No

The highest-level sub-division in a country, which is usually a province, state, or ISO-3166-2 subdivision. This data is formatted for postal delivery, for example, CA and not California. Value, by country, is:

  • UK. A county.
  • US. A state.
  • Canada. A province.
  • Japan. A prefecture.
  • Switzerland. A kanton.
purchase_units[].shipping.address.address_line_2 String No

The second line of the address, for example, a suite or apartment number.

purchase_units[].shipping.address.address_line_1 String No

The first line of the address, such as number and street, for example, 173 Drury Lane. Needed for data entry, and Compliance and Risk checks. This field needs to pass the full address.

purchase_units[].shipping.phone_number Object No

The phone number, in its canonical international E.164 numbering plan format.

purchase_units[].shipping.phone_number.national_number String Yes

The national number, in its canonical international E.164 numbering plan format. The combined length of the country calling code (CC) and the national number must not be greater than 15 digits. The national number consists of a national destination code (NDC) and subscriber number (SN).

purchase_units[].shipping.phone_number.country_code String Yes

The country calling code (CC), in its canonical international E.164 numbering plan format. The combined length of the CC and the national number must not be greater than 15 digits. The national number consists of a national destination code (NDC) and subscriber number (SN).

purchase_units[].reference_id String No

The API caller-provided external ID for the purchase unit. Required for multiple purchase units when you must update the order through PATCH. If you omit this value and the order contains only one purchase unit, PayPal sets this value to default.

How to start integrating

  1. Add HTTP Task to your workflow definition.
  2. Search for the API you want to integrate with and click on the name.
    • This loads the API reference documentation and prepares the Http request settings.
  3. Click Test request to test run your request to the API and see the API's response.