Custom Fields
From API Documentation
Custom fields allow for adding and storing additional information on many objects in Zuora when standard fields don't meet your needs Custom fields can only be created within the Zuora web application. For more information on creating and maintaining custom fields, please see the Zuora Knowledge Center
Z-Billing Custom Fields
Zuora offers custom fields on the following Z-Billing objects:
- Accounts
- Subscriptions
- Products
- Product Rate Plans
- Product Rate Plan Charges
- (Subscription) Rate Plan Charges
- Invoices
- Invoice Items (Details)
- Invoice Adjustments
- Invoice Item Adjustments
- Usage
Z-Payment Custom Fields
Zuora offers custom fields on the following Z-Payment objects:
- Payments
- Refunds
Using Custom Fields With The Z-Commerce API
After creating the custom fields with Z-Billing, they are immediately accessible via the API. All fields can be used in the create(), query(), update() and calls), and Account and Subscription custom fields can also be used in the subscribe() and subscribeWithExistingAccount() calls.
When downloading the WSDL from Z-Billing (http://www.zuora.com/apps/servlet/GenerateWsdl), it will NOT populate the custom fields. You must enter your custom fields to your version of the WSDL. When adding the custom fields to the WSDL, they must conform to the following rules:
- Custom field names must append "__c" (double underscore and lowercase 'c') to the end of all custom fields' names (not display names)
- The custom field name may not contain spaces
- The custom field must be of type string
- Custom fields must be added to the existing fields in alphabetical order
Example: If you have created two custom fields for the account object (MyCustomAccountField and AnotherCustomAccountField), the field names in the WSDL should be:
- AnotherCustomAccountField__c
- MyCustomAccountField__c
Your WSDL for the Account object would look like the following (the custom fields are highlighted):
<complexType name="Account">
<complexContent>
<extension base="ons:zObject">
<sequence>
<element minOccurs="0" name="AccountNumber" nillable="true" type="string" />
<element minOccurs="0" name="AdditionalEmailAddresses" nillable="true" type="string" />
<element minOccurs="0" name="AllowInvoiceEdit" nillable="true" type="boolean" />
<element minOccurs="0" name="AnotherCustomAccountField__c" nillable="true" type="string" />
<element minOccurs="0" name="AutoPay" nillable="true" type="boolean" />
<element minOccurs="0" name="Balance" nillable="true" type="double" />
<element minOccurs="0" name="Batch" nillable="true" type="string" />
<element minOccurs="0" name="BillCycleDay" type="int" />
<element minOccurs="0" name="BillToId" nillable="true" type="zns:ID" />
<element minOccurs="0" name="CreatedDate" nillable="true" type="dateTime" />
<element minOccurs="0" name="CrmId" nillable="true" type="string" />
<element minOccurs="0" name="Currency" nillable="true" type="string" />
<element minOccurs="0" name="CustomerServiceRepName" nillable="true" type="string" />
<element minOccurs="0" name="DefaultPaymentMethodId" nillable="true" type="zns:ID" />
<element minOccurs="0" name="Gateway" nillable="true" type="string" />
<element minOccurs="0" name="InvoiceDeliveryPrefsEmail" nillable="true" type="boolean" />
<element minOccurs="0" name="InvoiceDeliveryPrefsPrint" nillable="true" type="boolean" />
<element minOccurs="0" name="InvoiceTemplateId" nillable="true" type="zns:ID" />
<element minOccurs="0" name="MyCustomAccountField__c" nillable="true" type="string" />
<element minOccurs="0" name="Name" nillable="true" type="string" />
<element minOccurs="0" name="Notes" nillable="true" type="string" />
<element minOccurs="0" name="PaymentTerm" nillable="true" type="string"
<element minOccurs="0" name="PurchaseOrderNumber" nillable="true" type="string" />
<element minOccurs="0" name="SalesRepName" nillable="true" type="string" />
<element minOccurs="0" name="SoldToId" nillable="true" type="zns:ID" />
<element minOccurs="0" name="Status" nillable="true" type="string" />
<element minOccurs="0" name="UpdatedDate" nillable="true" type="dateTime" />
</sequence>
</extension>
</complexContent>
</complexType>
