1. A method comprising: receiving, by one or more computing devices, encrypted user data that includes sensitive user data and related nonsensitive user data related to a transaction; decrypting, by at least one of the one or more computing devices, the encrypted user data; generating, by at least one of the one or more computing devices, a token for the sensitive user data, the token including a description of a data type of the sensitive user data and a randomly generated string; storing, with a first data storage service by at least one of the one or more computing devices, the sensitive user data; storing, with a second data storage service by at least one or more computing devices, the token with the related nonsensitive data; providing, to a first entity by at least one of the one or more computing devices, the token and the related nonsensitive data, the token provided in place of the sensitive user data; receiving, by at least one of the one or more computing devices, a request for the sensitive user data from a second entity, wherein the request includes the token previously provided to the first entity and subsequently provided to the second entity by the first; determining by at least one of the one or more computing devices, an authorization of the second entity to access the sensitive user data based on access policies for the second entity; and providing, by at least one of the one or more computing devices, the sensitive user data to the second entity in accordance with the access policies for the second entity; wherein: the access policies for the second entity specify that the second entity is authorized to receive only a portion of the sensitive user data; and providing the sensitive user data to the second entity further comprises providing only the portion of the sensitive user data specified by the access policies for the second entity.