sequenceDiagram
participant Sender
participant Issuer as Issuer
(sending wallet)
participant Acquirer as Acquirer
(receiving wallet)
participant Receiver
opt invoice
activate Receiver
Receiver->>Receiver: createInvoice(invoice)
Receiver-xSender: [ send invoice out of band (PaymentRequest, QR Code) ]
deactivate Receiver
activate Sender
end
Sender->>Issuer: pay(payment_pointer, amount)
activate Issuer
Issuer->>Acquirer: POST /sources public_key
activate Acquirer
Acquirer-->>Issuer: 201 destination_address, shared_secret
deactivate Acquirer
rect rgb(0, 255, 0)
Issuer->>Acquirer: [ push payment ]
activate Acquirer
end
Acquirer->>Acquirer: updateSourceBalance(amount)
deactivate Acquirer
Issuer->>Issuer: createJWT(source_url)
Issuer-->>Sender: 200 JWT
deactivate Issuer
opt verify
Sender-xReceiver: [ send JWT out of band (PaymentResponse, QR Code) ]
deactivate Sender
activate Receiver
Receiver->>Receiver: validateToken(JWT)
Receiver->>Acquirer: POST /sources/{id}/spend (invoice_amount)
activate Acquirer
Acquirer-->>Receiver: 200
deactivate Receiver
deactivate Acquirer
end