What I've found works for XLM, is the following
sender does federation lookup for emailaddress*wallet.com
recipient doesn't exist
server creates a keypair, "escrow"
server registers "escrow" account
server returns escrow accountId to sender
sender creates tx:
send payment to "escrow"
server sees incoming payment:
adds sender as a signer to "escrow"
server sends email to recipient
recipient generates a keypair, "target"
recipient sends "target" accountId to server, using
a challenge-response w/ a hash, that resolves to their email-address, as message, OR
a simple web form
server
creates new account "target", using "escrow" as funding account
merges "escrow" into "server"