 			dataType: 'json'
 			data: JSON.stringify(checkoutRequest)
 
-	# Sends an orderForm attachment to the current OrderForm.
-	# @param attachmentId
-	# @param serializedAttachment stringified serializedAttachment
-	# @param expectedOrderFormSections
-	sendAttachment: (attachmentId, serializedAttachment, expectedOrderFormSections = @expectedFormSections, options = {}) =>
-		if attachmentId is undefined or serializedAttachment is undefined
+	# Sends an OrderForm attachment to the current OrderForm, possibly updating it.
+	# @param attachmentId [String] the name of the attachment you're sending.
+	# @param attachment [Object] the attachment.
+	# @param expectedOrderFormSections [Array] (default = *all*) an array of attachment names.
+	# @param options [Object] extra options.
+	# @option options [String] (default = null) subject an internal name to give to your attachment submission.
+	# @option options [Boolean] (default = false) abort indicates whether a previous submission with the same subject should be aborted, if it's ongoing.
+	# @return [Promise] a promise for the updated OrderForm.
+	sendAttachment: (attachmentId, attachment, expectedOrderFormSections = @allOrderFormSections, options = {}) =>
+		if attachmentId is undefined or attachment is undefined
 			d = $.Deferred()
 			d.reject("Invalid arguments")
 			return d.promise()
 
 		# TODO alterar chamadas para não mandar stringified
-		data = JSON.parse(serializedAttachment)
-		data[expectedOrderFormSections] = expectedOrderFormSections
+		attachment[expectedOrderFormSections] = expectedOrderFormSections
 
 		xhr = @ajax
 			url: @_getSaveAttachmentURL(attachmentId)
 			type: 'POST'
 			contentType: 'application/json; charset=utf-8'
 			dataType: 'json'
-			data: JSON.stringify(data)
+			data: JSON.stringify(attachment)
 
 		if options.abort and options.subject
 			@subjectToJqXHRMap[options.subject]?.abort()

			dataType: 'json',
			data: JSON.stringify(transactionRequest)

	getOrders: (orderGroupId) =>
		@ajax
			url: @_getOrdersURL(orderGroupId)

		).done =>
			@requestingItem = undefined

	# Sends a request to remove items from the OrderForm.
	# @param items [Array] an array of objects representing the items to remove.
	# @return [Promise] a promise for the updated OrderForm.
	removeItems: (items) =>
		# TODO usar copia local do OrderForm
		deferred = $.Deferred()
		promiseForItems = if items then $.when(items) else @getOrderForm(['items']).then (orderForm) -> orderForm.items
		promiseForItems.then (array) =>
