I'm trying to do some testing on a sandbox account and having issues adding payment methods using the minimum fields according to the documentation (http://www.authorize.net/support/CIM_XML_guide.pdf), but I seem to need at least the address and ZIP. The following are two redacted versions of the XML I am sending.
This is the functional one that responds back with a good status:
<?xml version="1.0" encoding="utf-8"?>
<createCustomerPaymentProfileRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
<merchantAuthentication>
<name>XXXXXXXXXXXX</name>
<transactionKey>XXXXXXXXXXXXXXXX</transactionKey>
</merchantAuthentication>
<customerProfileId>XXXXXXXX</customerProfileId>
<paymentProfile>
<customerType>individual</customerType>
<billTo>
<address>123 Main Street</address>
<zip>12345</zip>
</billTo>
<payment>
<creditCard>
<cardNumber>4007000000027</cardNumber>
<expirationDate>2015-09</expirationDate>
</creditCard>
</payment>
</paymentProfile>
<validationMode>liveMode</validationMode>
</createCustomerPaymentProfileRequest>
But when I take away the address and ZIP fields form the payment profile section, it fails, informing me of missing fields.
<?xml version="1.0" encoding="utf-8"?>
<createCustomerPaymentProfileRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
<merchantAuthentication>
<name>XXXXXXXXXXXX</name>
<transactionKey>XXXXXXXXXXXXXXXX</transactionKey>
</merchantAuthentication>
<customerProfileId>XXXXXXXX</customerProfileId>
<paymentProfile>
<customerType>individual</customerType>
<billTo>
</billTo>
<payment>
<creditCard>
<cardNumber>4007000000027</cardNumber>
<expirationDate>2015-09</expirationDate>
</creditCard>
</payment>
</paymentProfile>
<validationMode>liveMode</validationMode>
</createCustomerPaymentProfileRequest>
What am I missing here? Are these fields not actually optional?