Extra info,
I just did a little test with the following code (i replaced some information with <VALID ... DATA>. They are filled in correct.
AuthNet *an = [AuthNet getInstance];
[an setDelegate:self];
CreditCardTrackType *trackType = [CreditCardTrackTypecreditCardTrackType];
trackType.track1 = @"<VALID TRACK 1 DATA>";
trackType.track2 = @"<VALID TRACK 2 DATA>;
PaymentType *paymentType = [PaymentType paymentType];
//paymentType.creditCard = nil;
paymentType.trackData = trackType;
//paymentType.bankAccount = nil;
ExtendedAmountType *extendedAmountTypeTax = [ExtendedAmountTypeextendedAmountType];
extendedAmountTypeTax.amount = @"0";
extendedAmountTypeTax.name = @"Tax";
ExtendedAmountType *extendedAmountTypeShipping = [ExtendedAmountType extendedAmountType];
extendedAmountTypeShipping.amount = @"0";
extendedAmountTypeShipping.name = @"Shipping";
LineItemType *lineItem = [LineItemTypelineItem];
lineItem.itemName = @"Soda";
lineItem.itemDescription = @"Soda";
lineItem.itemQuantity = @"1";
lineItem.itemPrice = @"1.00";
lineItem.itemID = @"1";
TransRetailInfoType *retailType = [TransRetailInfoTypetransRetailInfoType];
retailType.marketType = MARKET_TYPE_RETAIL;
retailType.deviceType = DEVICE_TYPE_LINEA;
TransactionRequestType *requestType = [TransactionRequestTypetransactionRequest];
requestType.lineItems = [[NSArray arrayWithObject:lineItem] mutableCopy];
requestType.amount = @"9.00";
requestType.payment = paymentType;
requestType.tax = extendedAmountTypeTax;
requestType.shipping = extendedAmountTypeShipping;
requestType.retail = retailType;
CreateTransactionRequest *request = [CreateTransactionRequestcreateTransactionRequest];
request.transactionRequest = requestType;
request.transactionType = AUTH_ONLY;
request.anetApiRequest.merchantAuthentication.mobileDeviceId = @"<VALID DEVICE ID>";
request.anetApiRequest.merchantAuthentication.sessionToken = sessionToken;
[an purchaseWithRequest:request];
-----