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