If you want to replace the entire deck of 52 cards then my suggestion is to have all cards in a single image and use the image as a tilesource. That way you know exactly in which order the cards are laid out in the images. So something like this (from Kenney.nl)
If the above is the default deck and the user changes deck you download a single new image with the cards laid out the same as in the default deck. When the image is downloaded you use the Image Loader extension to get a buffer object. And you use the buffer object to change the texture of a single card instance, which will affect all cards referencing the same texture.
local data = download_image_from_the_internet()
local image_resource = imageloader.load({ data = data })
local resource_path = go.get("any_card#sprite", "texture0")
resource.set_texture(resource_path, image_resource.header, image_resource.buffer)