---
title: "Sign up"
method: POST
path: "/v1/sign-up"
tags: ["Sign Up"]
---

# Sign up

`POST /v1/sign-up`

This call performs many actions. You can use this operation to implement
 the standard requirements for signing up a customer, such as validating the
 uniqueness of an account and limiting the number of subscriptions per account.
 Also, you can use this operation to create a subscription, generate an invoice,
 and collect payment for a new or existing customer. 
 
 **Note:** You need to
 have the [Orders](https://docs.zuora.com?resourceId=billing-overview-orders)
 or [Orders Harmonization](https://docs.zuora.com?resourceId=billing-orders-harmonization)
 feature enabled to use this API. For a new customer, you can perform the
 following tasks in one call. Note that you can skip creating a payment meethod
 and still get the subscription and invoice successfully created.
 * Create an account
 * Create a payment method
 * Subscribe to a product in the product catalog and create a subscription
 * Generate an invoice
 * Collect payment

For an existing customer, you can use an account identification field of an
external system to specify the account. You can make [make asynchronous requests](https://developer.zuora.com/rest-api/general-concepts/async-requests/)
when using the "Sign up" operation.

This call supports a subset of the functionality of our [Create an order](https://developer.zuora.com/v1-api-reference/api/operation/POST_Order/) call. 
We generally recommend using "Create an order" instead of this call because the Orders call has the following advantages: 
- Provides options for managing the entire subscription lifecycle from creation through to cancellation using different order actions. 
- Allows the creation or modifying of multiple subscriptions in a single order. 
- Allows a single order to combine both recurring subscription digital goods or services with order line items for physical goods.
- Orders are treated as atomic transactions. If any part fails, the entire order, subscription, and billing account creation are rolled back.

This call does have some unique abilities not supported by "Create an order". You should consider using this call when you need to:

- Use Account UPSERT functionality by specifying a custom external identifier.
- Limit the number of subscriptions on an account

There are no deprecation plans for this call and we will continue to support this call.

## Headers

- `Idempotency-Key` string
- `Accept-Encoding` string
- `Content-Encoding` string
- `Zuora-Track-Id` string
- `Zuora-Entity-Ids` string
- `Zuora-Org-Ids` string
- `Accept` string
- `Zuora-Version` string

## Request body

- SignUpRequest
  - `accountData` AccountData — The information of the account that you are to create through the "Sign up" operation.
    - `accountNumber` string
    - `autoPay` boolean — Specifies whether future payments are to be automatically billed when they are due. Possible values are `true`, `false`.
    - `batch` string — **Note**: By default, you have 50 configurable account batches. To increase the limit to 200 batches, you must have the <a href="https://docs.zuora.com?resourceId=performance-booster-elite" target="_blank">Performance Booster Elite</a> package.
    - `billCycleDay` integer, required — Day of the month that the account prefers billing periods to begin on. If set to 0, the bill cycle day will be set as "AutoSet".
    - `billToContact` ContactInfo, required — Contact details associated with an account.
      - `address1` string — First line of the contact's address. This is often a street address or a business name.
      - `address2` string — Second line of the contact's address.
      - `city` string — City of the contact's address.
      - `contactDescription` string — A description for the contact.
      - `country` string — Country; must be a valid country name or abbreviation. If using [Zuora Tax](https://docs.zuora.com?resourceId=billing-zuora-tax-overview), you must specify a country in the bill-to contact to calculate tax.
      - `county` string — County of the contact's address.
      - `customFields` CustomFields — Container for custom fields.
      - `fax` string — Fax number of the contact.
      - `firstName` string, required — First name of the contact.
      - `homePhone` string — Home phone number of the contact.
      - `lastName` string, required
      - `mobilePhone` string — Mobile phone number of the contact.
      - `nickname` string — Nickname of the contact.
      - `otherPhone` string — Additional phone number of the contact. Use the `otherPhoneType` field to specify the type of phone number.
      - `otherPhoneType` 'Work' | 'Mobile' | 'Home' | 'Other' — Specifies the type of phone number in the `otherPhone` field.
      - `personalEmail` string, email — Personal email address of the contact.
      - `postalCode` string — ZIP code or other postal code of the contact's address.
      - `state` string — State or province of the contact's address.
      - `taxRegion` string — Region defined in your taxation rules. Only applicable if you use Zuora Tax.
      - `workEmail` string, email — Business email address of the contact.
      - `workPhone` string — Business phone number of the contact.
    - `communicationProfileId` string
    - `creditMemoTemplateId` string — **Note:** This field is only available if you have [Invoice Settlement](https://docs.zuora.com?resourceId=billing-invoice-settlement) enabled. The Invoice Settlement feature is generally available as of Zuora Billing Release 296 (March 2021). This feature includes Unapplied Payments, Credit and Debit Memo, and Invoice Item Settlement. If you want to enable Invoice Settlement, see [Invoice Settlement Enablement and Checklist Guide](https://docs.zuora.com?resourceId=billing-invoice-settlement-migration-checklist-and-guide) for more information. The unique ID of the credit memo template, configured in **Billing Settings** > **Manage Billing Document Configuration** through the Zuora UI. For example, 2c92c08a6246fdf101626b1b3fe0144b.
    - `crmId` string
    - `currency` string, required — 3 uppercase character currency code. **Note**: Specify this field only for a new account to be created; do not specify this field to update an existing account. For payment method authorization, if the `paymentMethod` > `currencyCode` field is specified, `currencyCode` is used. Otherwise, this `currency` field is used for payment method authorization. If no currency is specified for the account, the default currency of the account is then used.
    - `customFields` CustomFields — Container for custom fields.
    - `debitMemoTemplateId` string — **Note:** This field is only available if you have [Invoice Settlement](https://docs.zuora.com?resourceId=billing-invoice-settlement) enabled. The Invoice Settlement feature is generally available as of Zuora Billing Release 296 (March 2021). This feature includes Unapplied Payments, Credit and Debit Memo, and Invoice Item Settlement. If you want to enable Invoice Settlement, see [Invoice Settlement Enablement and Checklist Guide](https://docs.zuora.com?resourceId=billing-invoice-settlement-migration-checklist-and-guide) for more information. The unique ID of the debit memo template, configured in **Billing Settings** > **Manage Billing Document Configuration** through the Zuora UI. For example, 2c92c08d62470a8501626b19d24f19e2.
    - `invoiceTemplateId` string
    - `name` string, required
    - `notes` string
    - `organizationLabel` string — The organization that this object belongs to. Note: This field is available only when the Multi-Org feature is enabled.
    - `paymentMethod` SignUpPaymentMethod — Container for custom fields of a payment method object.
      - `type` 'PayPalEC' | 'PayPalNativeEC' | 'PayPalAdaptive' | 'CreditCard' | 'CreditCardReferenceTransaction', required — Type of payment method. The following types of the payment method are supported:
      - `secondTokenId` string — The second token id of CreditCardReferenceTransaction.
      - `tokenId` string — The token id of payment method, required field of CreditCardReferenceTransaction type.
      - `BAID` string — ID of a PayPal billing agreement, for example, I-1TJ3GAGG82Y9.
      - `email` string — Email address associated with the payment method. This field is only supported for PayPal payment methods and is required if you want to create any of the following PayPal payment methods: - PayPal Express Checkout payment method - PayPal Adaptive payment method - PayPal Commerce Platform payment method
      - `preapprovalKey` string — The PayPal preapproval key.
      - `cardHolderInfo` SignUpCreatePaymentMethodCardholderInfo — Container for cardholder information. If provided, Zuora will only use this information for this card. Otherwise, Zuora will use the account''s existing bill-to contact information for this card.
        - `addressLine1` string — First address line, 255 characters or less.
        - `addressLine2` string — Second address line, 255 characters or less.
        - `cardHolderName` string, required — The card holder's full name as it appears on the card, e.g., "John J Smith", 50 characters or less.
        - `city` string — City, 40 characters or less.
        - `country` string — Country, must be a valid country name or abbreviation.
        - `email` string — Card holder's email address, 80 characters or less.
        - `phone` string — Phone number, 40 characters or less.
        - `state` string — State; must be a valid subregion (state or province) name or code. For more information, see <a href="https://docs.zuora.com?resourceId=view-sub-regions-of-specific-country-or-region" target="_blank">View subregions of a specific country or region</a>.
        - `zipCode` string — Zip code, 20 characters or less.
      - `cardNumber` string — Credit card number.
      - `cardType` string — The type of the credit card. Possible values include `Visa`, `MasterCard`, `AmericanExpress`, `Discover`, `JCB`, and `Diners`. For more information about credit card types supported by different payment gateways, see [Supported Payment Gateways](https://docs.zuora.com?resourceId=payments-supported-payment-gateways).
      - `checkDuplicated` boolean
      - `expirationMonth` string — One or two digit expiration month (1-12) of the credit card.
      - `expirationYear` string — Four-digit expiration year of the credit card.
      - `mitConsentAgreementRef` string — Specifies your reference for the stored credential consent agreement that you have established with the customer. Only applicable if you set the `mitProfileAction` field.
      - `mitConsentAgreementSrc` 'External' — Required if you set the `mitProfileAction` field. Specifies how the consent agreement has been established with the customer. The allowed value is `External`. If you do not specify the `mitProfileAction` field, Zuora will automatically create a stored credential profile for the payment method, with the default value `External` set to this field.
      - `mitNetworkTransactionId` string — Specifies the ID of a network transaction. Only applicable if you set the `mitProfileAction` field to `Persist`.
      - `mitProfileAction` 'Activate' | 'Persist' — Specifies how Zuora creates and activates the stored credential profile. If you do not specify this field, Zuora will automatically create a stored credential profile for the payment method, with the default value `Activate` set to this field.
      - `mitProfileAgreedOn` string, date — The date on which the profile is agreed. The date format is `yyyy-mm-dd`.
      - `mitProfileType` 'Recurring' — Required if you set the `mitProfileAction` field. If you do not specify the `mitProfileAction` field, Zuora will automatically create a stored credential profile for the payment method, with the default value `Recurring` set to this field.
      - `securityCode` string — CVV or CVV2 security code of the credit card. To ensure PCI compliance, this value is not stored and cannot be queried.
      - `accountKey` string — Internal ID of the customer account that will own the payment method.
      - `authGateway` string — Internal ID of the payment gateway that Zuora will use to authorize the payments that are made with the payment method. If you do not set this field, Zuora will use one of the following payment gateways instead: * The default payment gateway of the customer account that owns the payment method, if the `accountKey` field is set. * The default payment gateway of your Zuora tenant, if the `accountKey` field is not set.
      - `ipAddress` string — The IPv4 or IPv6 information of the user when the payment method is created or updated. Some gateways use this field for fraud prevention. If this field is passed to Zuora, Zuora directly passes it to gateways. If the IP address length is beyond 45 characters, a validation error occurs.
      - `makeDefault` boolean — Specifies whether the payment method will be the default payment method of the customer account that owns the payment method. Only applicable if the `accountKey` field is set.
    - `paymentTerm` string
    - `purchaseOrderNumber` string — The number of the purchase order associated with this account. Purchase order information generally comes from customers.
    - `sequenceSetId` string, nullable — The ID of the billing document sequence set to assign to the customer account. The billing documents to generate for this account will adopt the prefix and starting document number configured in the sequence set.
    - `shipToContact` ContactInfo — Contact details associated with an account.
      - `address1` string — First line of the contact's address. This is often a street address or a business name.
      - `address2` string — Second line of the contact's address.
      - `city` string — City of the contact's address.
      - `contactDescription` string — A description for the contact.
      - `country` string — Country; must be a valid country name or abbreviation. If using [Zuora Tax](https://docs.zuora.com?resourceId=billing-zuora-tax-overview), you must specify a country in the bill-to contact to calculate tax.
      - `county` string — County of the contact's address.
      - `customFields` CustomFields — Container for custom fields.
      - `fax` string — Fax number of the contact.
      - `firstName` string, required — First name of the contact.
      - `homePhone` string — Home phone number of the contact.
      - `lastName` string, required
      - `mobilePhone` string — Mobile phone number of the contact.
      - `nickname` string — Nickname of the contact.
      - `otherPhone` string — Additional phone number of the contact. Use the `otherPhoneType` field to specify the type of phone number.
      - `otherPhoneType` 'Work' | 'Mobile' | 'Home' | 'Other' — Specifies the type of phone number in the `otherPhone` field.
      - `personalEmail` string, email — Personal email address of the contact.
      - `postalCode` string — ZIP code or other postal code of the contact's address.
      - `state` string — State or province of the contact's address.
      - `taxRegion` string — Region defined in your taxation rules. Only applicable if you use Zuora Tax.
      - `workEmail` string, email — Business email address of the contact.
      - `workPhone` string — Business phone number of the contact.
    - `soldToContact` ContactInfo — Contact details associated with an account.
      - `address1` string — First line of the contact's address. This is often a street address or a business name.
      - `address2` string — Second line of the contact's address.
      - `city` string — City of the contact's address.
      - `contactDescription` string — A description for the contact.
      - `country` string — Country; must be a valid country name or abbreviation. If using [Zuora Tax](https://docs.zuora.com?resourceId=billing-zuora-tax-overview), you must specify a country in the bill-to contact to calculate tax.
      - `county` string — County of the contact's address.
      - `customFields` CustomFields — Container for custom fields.
      - `fax` string — Fax number of the contact.
      - `firstName` string, required — First name of the contact.
      - `homePhone` string — Home phone number of the contact.
      - `lastName` string, required
      - `mobilePhone` string — Mobile phone number of the contact.
      - `nickname` string — Nickname of the contact.
      - `otherPhone` string — Additional phone number of the contact. Use the `otherPhoneType` field to specify the type of phone number.
      - `otherPhoneType` 'Work' | 'Mobile' | 'Home' | 'Other' — Specifies the type of phone number in the `otherPhone` field.
      - `personalEmail` string, email — Personal email address of the contact.
      - `postalCode` string — ZIP code or other postal code of the contact's address.
      - `state` string — State or province of the contact's address.
      - `taxRegion` string — Region defined in your taxation rules. Only applicable if you use Zuora Tax.
      - `workEmail` string, email — Business email address of the contact.
      - `workPhone` string — Business phone number of the contact.
    - `taxInfo` SignUpTaxInfo — Information about the tax exempt status of a customer account.
      - `VATId` string — EU Value Added Tax ID. **Note:** This feature is in Limited Availability. If you wish to have access to the feature, submit a request at [Zuora Global Support](https://support.zuora.com).
      - `companyCode` string — Unique code that identifies a company account in Avalara. Use this field to calculate taxes based on origin and sold-to addresses in Avalara. **Note:** This feature is in Limited Availability. If you wish to have access to the feature, submit a request at [Zuora Global Support](https://support.zuora.com).
      - `exemptCertificateId` string — ID of the customer tax exemption certificate. Applicable if you use Zuora Tax or Connect tax engines.
      - `exemptCertificateType` string — Type of tax exemption certificate that the customer holds. Applicable if you use Zuora Tax or Connect tax engines.
      - `exemptDescription` string — Description of the tax exemption certificate that the customer holds. Applicable if you use Zuora Tax or Connect tax engines.
      - `exemptEffectiveDate` string, date — Date when the customer tax exemption starts, in YYYY-MM-DD format. Applicable if you use Zuora Tax or Connect tax engines.
      - `exemptExpirationDate` string, date — Date when the customer tax exemption expires, in YYYY-MM-DD format. Applicable if you use Zuora Tax or Connect tax engines.
      - `exemptIssuingJurisdiction` string — Jurisdiction in which the customer tax exemption certificate was issued.
      - `exemptStatus` 'No' | 'Yes' | 'PendingVerification' — Status of the account tax exemption. Applicable if you use Zuora Tax or Connect tax engines. Required if you use Zuora Tax.
  - `accountIdentifierField` string — Specify the name of the field that holds external account id
  - `customFields` CustomFields — Container for custom fields.
  - `options` Options — Invoice or Payment.
    - `billingTargetDate` string, date — Date through which to calculate charges if an invoice is generated. See [What is a Target Date?](https://docs.zuora.com?resourceId=billing-bill-runs-creation).
    - `collectPayment` boolean — Indicates if the current request needs to collect payments. This value can not be 'true' when 'runBilling' flag is 'false'.
    - `maxSubscriptionsPerAccount` number
    - `runBilling` boolean — Indicates if the current request needs to generate an invoice. The invoice will be generated against all subscriptions included in this order.
  - `paymentData` PaymentData
    - `authTransactionId` string — The authorization transaction ID from the payment gateway.
    - `authorizedAmount` number, double — The amount that is authorized before this API call. Only used for the Delay Capture function.
    - `authorizedCurrency` string — The authorization of currency code that occurs before this API call. We will verify whether it is same as the account's currency.
  - `subscriptionData` SubscriptionData
    - `customFields` CustomFields — Container for custom fields.
    - `invoiceSeparately` boolean — Specifies whether the subscription appears on a separate invoice when Zuora generates invoices.
    - `notes` string — Notes about the subscription. These notes are only visible to Zuora users.
    - `ratePlans` RatePlan[]
      - `customFields` CustomFields — Container for custom fields.
      - `productRatePlanId` string — Internal identifier of the product rate plan that the rate plan is based on.
    - `startDate` string, date
    - `subscriptionNumber` string — Subscription number of the subscription to create, for example, A-S00000001. If you do not set this field, Zuora will generate a subscription number.
    - `terms` TermInfo — Container for the terms and renewal settings of the subscription.
      - `autoRenew` boolean — Specifies whether the subscription automatically renews at the end of the each term. Only applicable if the type of the first term is `TERMED`.
      - `initialTerm` TermInfoInitialTerm, required — Information about the first term of the subscription.
        - `period` integer — Duration of the first term in months, years, days, or weeks, depending on the value of the `periodType` field. Only applicable if the value of the `termType` field is `TERMED`.
        - `periodType` 'Month' | 'Year' | 'Day' | 'Week' — Unit of time that the first term is measured in. Only applicable if the value of the `termType` field is `TERMED`.
        - `startDate` string, date — Start date of the first term, in YYYY-MM-DD format.
        - `termType` 'TERMED' | 'EVERGREEN', required — Type of the first term. If the value of this field is `TERMED`, the first term has a predefined duration based on the value of the `period` field. If the value of this field is `EVERGREEN`, the first term does not have a predefined duration.
      - `renewalSetting` 'RENEW_WITH_SPECIFIC_TERM' | 'RENEW_TO_EVERGREEN' — Specifies the type of the terms that follow the first term if the subscription is renewed. Only applicable if the type of the first term is `TERMED`. * `RENEW_WITH_SPECIFIC_TERM` - Each renewal term has a predefined duration. The first entry in `renewalTerms` specifies the duration of the second term of the subscription, the second entry in `renewalTerms` specifies the duration of the third term of the subscription, and so on. The last entry in `renewalTerms` specifies the ultimate duration of each renewal term. * `RENEW_TO_EVERGREEN` - The second term of the subscription does not have a predefined duration.
      - `renewalTerms` TermInfoRenewalTerms
        - `period` integer — Duration of the renewal term in months, years, days, or weeks, depending on the value of the `periodType` field.
        - `periodType` 'Month' | 'Year' | 'Day' | 'Week' — Unit of time that the renewal term is measured in.

## Response `200`

OK

- SignUpResponse
  - `accountId` string — The account id for the order.
  - `accountNumber` string — The account number for the order.
  - `creditMemoId` string — An array of the credit memo id generated in this order request. The credit memo is only available if you have the Invoice Settlement feature enabled.
  - `creditMemoNumber` string — An array of the credit memo numbers generated in this order request. The credit memo is only available if you have the Invoice Settlement feature enabled.
  - `invoiceId` string — The invoice id generated in this order request
  - `invoiceNumber` string — The invoice number generated in this order request
  - `orderNumber` string — The order number of the order created.
  - `paidAmount` string — The total amount collected in this order request.
  - `paymentId` string — The payment id that is collected in this order request.
  - `paymentNumber` string — The payment number that is collected in this order request.
  - `processId` string — The Id of the process that handles the operation.
  - `reasons` SignUpResponseReasons[]
    - `code` string — The error code of response.
    - `message` string — The detail information of the error response
  - `status` 'Completed' | 'Pending' — Status of the order. `Pending` is only applicable for an order that contains a `CreateSubscription` order action.
  - `subscriptionId` string — The subscription id of the order.
  - `subscriptionNumber` string — The subscription number of the order.
  - `success` boolean — Indicates whether the call succeeded.

## Other responses

- `500` — Internal Server Error
- `4XX` — Request Errors

---

[API](https://skmtc.dev/zuora/apis/api-reference.md) · [All operations](https://skmtc.dev/zuora/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/zuora/api-reference/revisions/d11e237f3e54/schema)
