On this page
No Headings
Last updated: June 12, 2026
Important: NVP/SOAP is a legacy integration method. We accept new integrations and support existing integrations, but there are newer solutions. If you're starting an integration, we recommend our latest solutions.
Creates a recurring payments profile. You must invoke the CreateRecurringPaymentsProfile API operation for each profile you want to create. The API operation creates a profile and an associated billing agreement.
Note: There is a one-to-one correspondence between billing agreements and recurring payments profiles. To associate a recurring payments profile with its billing agreement, you must ensure that the description in the recurring payments profile matches the description of a billing agreement. For version 54.0 and later, use SetExpressCheckout to initiate creation of a billing agreement.
| Field | Description |
|---|---|
Token | xs:stringA timestamped token, the value of which was returned in the response to the first call to SetExpressCheckout. You can also use the token returned in the SetCustomerBillingAgreement response. Either this token or a credit card number is required. If you include both token and credit card number, the token is used and credit card number is ignored Call CreateRecurringPaymentsProfile once for each billing agreement included in SetExpressCheckout request and use the same token for each call. Each CreateRecurringPaymentsProfile request creates a single recurring payments profile. Note: Tokens expire after approximately 3 hours. |
CreditCard | ns:CreditCardDetailsTypeCredit card information for recurring payments using direct payments. Either a token or a credit card number is required. If you include both token and credit card number, the token is used and credit card number is ignored. |
RecurringPayments ProfileDetails | ns:RecurringPaymentsProfileDetails(Required) You can include up to 10 recurring payments profiles per request. The order of the profile details must match the order of the billing agreement details specified in the SetExpressCheckout request. |
ScheduleDetails | ns:ScheduleDetailsType(Required) Describes the recurring payments schedule, including the regular payment period, whether there is a trial period, and the number of payments that can fail before a profile is suspended. |
| Field | Description |
|---|---|
SubscriberName | xs:string(Optional) Full name of the person receiving the product or service paid for by the recurring payment. If not present, the name in the buyer's PayPal account is used. Character length and limitations: 32 double-byte characters |
SubscriberShipping Address | ns:AddressType(Optional) The subscriber's shipping address associated with this profile, if applicable. If not specified, the ship-to address from buyer's PayPal account is used. Note: Shipping Address is optional, but if you include it, certain fields are required. |
BillingStartDate | xs:dateTime(Required) The date when billing for this profile begins. Note: The profile may take up to 24 hours for activation. 2013-08-24T05:38:48Z. No wildcards are allowed. |
ProfileReference | xs:string(Optional) The merchant's own unique reference or invoice number. Character length and limitations: 127 single-byte alphanumeric characters |
| Field | Description |
|---|---|
Description | xs:string(Required) Description of the recurring payment. Note: You must ensure that this field matches the corresponding billing agreement description included in the SetExpressCheckout request. |
ActivationDetails | ns:ActivationDetailsType(Optional) Information about activating a profile, such as whether there is an initial non-recurring payment amount immediately due upon profile creation and how to override a pending profile PayPal suspends when the initial payment amount fails. |
TrialPeriod | ns:BillingPeriodDetailsType(Optional) Trial period for this schedule. |
PaymentPeriod | ns:BillingPeriodDetailsType(Required) Regular payment period for this schedule. |
MaxFailedPayments | xs:int(Optional) Number of scheduled payments that can fail before the profile is automatically suspended. An IPN message is sent to the merchant when the specified number of failed payments is reached. Character length and limitations: Number string representing an integer |
AutoBillOutstandingAmount | ns:AutoBillType(Optional) Indicates whether you would like PayPal to automatically bill the outstanding balance amount in the next billing cycle. The outstanding balance is the total amount of any previously failed scheduled payments that have yet to be successfully paid. Value is:
|
| Field | Description |
|---|---|
PaymentPeriod.BillingPeriod | ns:BillingPeriodType(Required) Unit for billing during this subscription period. Value is:
SemiMonth, billing is done on the 1st and 15th of each month. Note: The combination of BillingPeriod and BillingFrequency cannot exceed one year. |
PaymentPeriod.BillingFrequency | xs:int(Required) Number of billing periods that make up one billing cycle. The combination of billing frequency and billing period must be less than or equal to one year. For example, if the billing cycle is Month, the maximum value for billing frequency is 12. Similarly, if the billing cycle is Week, the maximum value for billing frequency is 52. Note: If the billing period is SemiMonth, the billing frequency must be 1. |
PaymentPeriod.TotalBillingCycles | xs:int(Optional) Number of billing cycles for payment period.
|
PaymentPeriod.Amount | cc:BasicAmountType(Required) Billing amount for each billing cycle during this payment period. This amount does not include shipping and tax amounts. Note: All amounts in the CreateRecurringPaymentsProfile request must have the same currency. .), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page. |
TrialPeriod.BillingPeriod | ns:BillingPeriodTypeUnit for billing during this subscription period; required if you specify an optional trial period. Value is:
SemiMonth, billing is done on the 1st and 15th of each month. Note: The combination of BillingPeriod and BillingFrequency cannot exceed one year. |
TrialPeriod.BillingFrequency | xs:intNumber of billing periods that make up one billing cycle; required if you specify an optional trial period. The combination of billing frequency and billing period must be less than or equal to one year. For example, if the billing cycle is Month, the maximum value for billing frequency is 12. Similarly, if the billing cycle is Week, the maximum value for billing frequency is 52. Note: If the billing period is SemiMonth, the billing frequency must be 1. |
TrialPeriod.TotalBillingCycles | xs:int(Optional) Number of billing cycles for trial payment period. |
TrialPeriod.Amount | cc:BasicAmountTypeBilling amount for each billing cycle during this payment period; required if you specify an optional trial period. This amount does not include shipping and tax amounts. Note: All amounts in the CreateRecurringPaymentsProfile request must have the same currency. .), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page. |
ShippingAmount | cc:BasicAmountType(Optional) Shipping amount for each billing cycle during this payment period. Note: All amounts in the request must have the same currency. .), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page. |
TaxAmount | cc:BasicAmountType(Optional) The tax amount for each billing cycle during this payment period. Note: All amounts in the request must have the same currency. .), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page. |
| Field | Description |
|---|---|
InitialAmount | cc:BasicAmountType(Optional) Initial non-recurring payment amount due immediately upon profile creation. Use an initial amount for enrollment or setup fees. Note: All amounts included in the request must have the same currency. .), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page. |
FailedInitialAmountAction | ns:FailedPaymentAction(Optional) Action you can specify when a payment fails. Value is:
|
| Field | Description |
|---|---|
Name | xs:stringPerson's name associated with this shipping address. It is required if using a shipping address. Character length and limitations: 32 double-byte characters |
Street1 | xs:stringFirst street address. It is required if using a shipping address. Character length and limitations: 100 single-byte characters |
Street2 | xs:string(Optional) Second street address. Character length and limitations: 100 single-byte characters |
CityName | xs:stringName of city. It is required if using a shipping address. Character length and limitations: 40 single-byte characters |
StateOrProvince | xs:stringState or province. Required for transactions only if the address is in one of the following countries: Argentina, Brazil, Canada, China, Indonesia, India, Japan, Mexico, Thailand or USA. See the list of PayPal state codes. Character length and limitations: 40 single-byte characters |
PostalCode | xs:stringU.S. ZIP code or other country-specific postal code. It is required if using a U.S. shipping address; may be required for other countries. Character length and limitations: 20 single-byte characters |
Country | ebl:CountryCodeTypeCountry code. It is required if using a shipping address. Character length and limitations: 2 single-byte characters |
Phone | xs:string(Optional) Phone number. Character length and limitations: 20 single-byte characters |
| Field | Description |
|---|---|
CreditCardType | ebl:CreditCardType(Optional) Type of credit card. For UK, only Maestro, Mastercard, Discover, and Visa are allowable. For Canada, only Mastercard and Visa are allowable and Interac debit cards are not supported. Value is:
Note: If the credit card type is Maestro, you must set currencyId to GBP. In addition, you must specify either StartMonth and StartYear or IssueNumber. |
CreditCardNumber | xs:string(Required) Credit card number. Character length and limitations: Numeric characters only with no spaces or punctuation. The string must conform with modulo and length required by each credit card type. |
ExpMonth | xs:int(Required) Credit card expiration month. Character length and limitations: 2 single-byte numeric characters, including leading zero |
ExpYear | xs:int(Required) Credit card expiration year. Character length and limitations: 4 single-byte numeric characters |
CVV2 | xs:stringCard Verification Value, version 2. Your Merchant Account settings determine whether this field is required. To comply with credit card processing regulations, you must not store this value after a transaction has been completed. Character length and limitations: For Visa, Mastercard, and Discover, the value is exactly 3 digits. For American Express, the value is exactly 4 digits. |
CardOwner | ns:PayerInfoType(Required) Details about the owner of the credit card. |
StartMonth | xs:int(Optional) Month that Maestro card was issued. Character length and limitations: 2-digit, zero-filled if necessary |
StartYear | xs:int(Optional) Year that Maestro card was issued. Character length and limitations: 4 digits |
IssueNumber | xs:string(Optional) Issue number of Maestro card. Character length and limitations: 2 numeric digits maximum |
| Field | Description |
|---|---|
Payer | ebl:EmailAddressType(Required) Email address of buyer. Character length and limitations: 127 single-byte characters |
PayerID | ebl:UserIDType(Optional) Unique PayPal Customer Account identification number. Character length and limitations:13 single-byte alphanumeric characters |
PayerStatus | ebl:PayPalUser StatusCodeType(Optional) Status of buyer. Value is:
|
PayerName | ebl:PersonNameType(Optional) First and last name of buyer. |
PayerCountry | ebl:CountryCodeType(Optional) Buyer's country of residence in the form of ISO standard 3166 two-character country codes. Character length and limitations: 2 single-byte characters |
PayerBusiness | xs:string(Optional) Buyer's business name. Character length and limitations: 127 single-byte characters |
Address | xs:string(Optional) Buyer's shipping address information. |
| Field | Description |
|---|---|
Salutation | xs:string(Optional) Buyer's salutation. Character length and limitations: 20 single-byte characters |
FirstName | ebl:PersonNameType(Optional) Buyer's first name. Character length and limitations: 64 double-byte characters |
MiddleName | ebl:NameUser(Optional) Buyer's middle name. Character length and limitations: 64 double-byte characters |
LastName | ebl:NameType(Optional) Buyer's last name. Character length and limitations: 64 double-byte characters |
Suffix | ebl:SuffixType(Optional) Buyer's suffix. Character length and limitations: 12 single-byte characters |
| Field | Description |
|---|---|
Street1 | xs:string(Required) First street address. Character length and limitations: 100 single-byte characters |
Street2 | xs:string(Optional) Second street address. Character length and limitations: 100 single-byte characters |
CityName | xs:string(Required) Name of city. Character length and limitations: 40 single-byte characters |
StateOrProvince | xs:stringState or province. Required for transactions only if the address is in one of the following countries: Argentina, Brazil, Canada, China, Indonesia, India, Japan, Mexico, Thailand or USA. See the list of PayPal state codes. Character length and limitations: 40 single-byte characters |
Country | ebl:CountryCodeType(Required) Country code. Character length and limitations: 2 single-byte characters |
PostalCode | xs:string(Required) U.S. ZIP code or other country-specific postal code. Character length and limitations: 20 single-byte characters |
Phone | xs:string(Optional) Phone number. Character length and limitations: 20 single-byte characters |
SoftDescriptor | xs:string(Optional) Information that is usually displayed in the account holder's statement, for example, <Your-Not-For-Profit> <State>, <Your-Not-For-Profit> <Branch-Name>, <Your-Website> dues or <Your-Website> list fee.Character length and limitations: 23 alphanumeric characters, can include the special characters dash ( -) and dot (.) only. Asterisks (*) are NOT permitted. If it includes a space character ( ), enclose the "<Soft-Descriptor>" value in double quotes. Note: For US Website Payments Pro AMEX cards only and only for merchants passing dynamic soft descriptors, the dynamic soft descriptors for AMEX cards are only guaranteed once the transaction settles. This means that during the authorization time the card issuing bank might show their customer the registered business or legal name for the merchant versus the dynamic soft descriptor passed on a per API transaction. |
SoftDescriptorCity | (Optional) A unique phone number, email address or URL, which is displayed on the account holder's statement. PayPal recommends passing a toll-free phone number because, typically, this is the easiest way for a buyer to contact the seller in the case of an inquiry. Character length and limitations: 13 characters including special characters, such as, space, !, ", #, $, %, &, ', (, ), +, -,*, /, :, ;, <, =, >, ?, @, comma and period.If it includes the space character ( ), enclose the "<Soft-Descriptor-City>" value in double quotes. Note: Underscore ( _) is an illegal character for this field. If it is passed, then it will be removed leaving the remaining characters in the same order. For example, New_York changes to NewYork. |
| Field | Description |
|---|---|
ItemCategory | ns:ItemCategoryTypeIndicates whether the item is digital or physical. For digital goods, this field is required and must be set to Digital to get the best rates. Is one of the following values:
|
Name | xs:stringItem name. This field is required when ItemCategory is passed.Character length and limitations: 127 single-byte characters This field is introduced in version 69.0. |
Description | xs:string(Optional) Item description. Character length and limitations: 127 single-byte characters This field is introduced in version 69.0. |
Amount | ebl:BasicAmountTypeCost of item. This field is required when ItemCategory is passed. Note: You must set the currencyID attribute to one of the 3-character currency codes for any of the supported PayPal currencies. .), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page.This field is introduced in version 69.0. |
Number | xs:string(Optional) Item number. Character length and limitations: 127 single-byte characters This field is introduced in version 69.0. |
Quantity | xs:integerItem quantity. This field is required when ItemCategory is passed.Character length and limitations: Any positive integer This field is introduced in version 69.0. |
Tax | ebl:BasicAmountType(Optional) Item sales tax. Note: You must set the currencyID attribute to one of the 3-character currency codes for any of the supported PayPal currencies. .), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page.This field is introduced in version 69.0. |
Note: Only the fields described in this documentation are available for use.
| Field | Description |
|---|---|
ProfileID | xs:stringA unique identifier for future reference to the details of this recurring payment. Character length and limitations: Up to 14 single-byte alphanumeric characters. |
ProfileStatus | ns:RecurringPaymentsProfileStatusTypeStatus of the recurring payment profile.
|
TransactionID | xs:stringThe transaction ID from the direct credit card initial payment. Character length and limitations: 17 characters. Orders transactions have 19 characters. |
DCCProcessorResponse | xs:stringThe response from the direct credit card initial payment. |
DCCReturnCode | xs:stringThe return code if the direct credit card initial payment fails. |