Salesforce  /  Use Cases  /  09 · Bank treasury attests a wire instruction before it leaves th…
09 STANDARD Financial Services / Treasury

Bank treasury attests a wire instruction before it leaves the building

A correspondent bank won't release a wire until a signed agent attestation shows up on the originating Opportunity.

01Scenario

A regional bank uses Salesforce Financial Services Cloud to manage client treasury. A relationship manager's agent prepares a $9.2M outgoing wire. The correspondent bank has a simple rule: no wire goes out unless the originating Opportunity carries an attestation the correspondent can verify, signed by an agent it trusts.

When the RM fires wire.outgoing.attest, HiveForce mints an Ed25519-signed receipt with the wire amount, beneficiary, sanctions screen result, and the OFAC list version hash it used. The receipt lands on Opportunity, copies over to the correspondent's org as INBOUND, and the After-Insert trigger blocks the wire if JCS verification fails on either side.

Both the bank's BSA officer and the correspondent's compliance team check the same receipt from a single JSONL line. No screen share. No PDF chain. No phone call to confirm it's real.

02Handles

action_type
wire.outgoing.attest
handle
HiveReceiptMinter.mint(Id, Map<String,Object>)
lands on
Opportunity (Financial Services Cloud)
rail
STANDARD $0.50/receipt, Hive-billed

03APEX

Opportunity wire = [SELECT Id, Amount, AccountId, Wire_Beneficiary__c,
                            Sanctions_Screen_Result__c, OFAC_List_Hash__c
                     FROM Opportunity WHERE Id = :wireId];

Map<String, Object> payload = new Map<String, Object>{
  'opportunity_id'      => wire.Id,
  'amount_usd'          => wire.Amount,
  'beneficiary'         => wire.Wire_Beneficiary__c,
  'sanctions_result'    => wire.Sanctions_Screen_Result__c,
  'ofac_list_hash'      => wire.OFAC_List_Hash__c,
  'rm_agent_did'        => UserInfo.getUserId(),
  'attest_timestamp_ms' => System.currentTimeMillis()
};

HiveReceiptMinter.MintResult r = HiveReceiptMinter.mint(
  wire.Id,                  // sourceRecordId
  'wire.outgoing.attest',   // action_type
  payload
);

// Receipt lands on Opportunity.
// INBOUND replica lands in correspondent bank's org.
// If JCS verify fails on either side, After-Insert trigger
// flips Opportunity.Wire_Status__c = 'BLOCKED' and the
// correspondent refuses the wire.

04Flow XML

<Flow xmlns="http://soap.sforce.com/2006/04/metadata">
    <processType>AutoLaunchedFlow</processType>
    <start>
        <object>Opportunity</object>
        <recordTriggerType>UpdatedAndConditionMet</recordTriggerType>
        <triggerType>RecordAfterSave</triggerType>
        <filters>
            <field>StageName</field>
            <operator>EqualTo</operator>
            <value><stringValue>WireReady</stringValue></value>
        </filters>
        <connector><targetReference>attest_wire</targetReference></connector>
    </start>
    <actionCalls>
        <name>attest_wire</name>
        <actionName>HiveReceiptMinter</actionName>
        <actionType>apex</actionType>
    </actionCalls>
    <status>Active</status>
</Flow>

05The receipt that lands in Hive_Receipt__c

{
  "agent_id": "did:hive:0xRegionalBankRM",
  "counterparty_did": "did:hive:0xCorrespondentBank",
  "action_type": "wire.outgoing.attest",
  "scope": "salesforce:opportunity:006xx0000000W1R",
  "amount_usd": 9200000,
  "beneficiary": "ACME Holdings LLC",
  "sanctions_result": "CLEAR",
  "ofac_list_hash": "sha256:7c11...e3a4",
  "signed_by_pubkey": "fd9d10abe60de7510c61ef649c8da598a519468dd2a2b827106d76487a899444",
  "verification_status": "VERIFIED"
}

06Verification

Verify the wire attestation receipt against the Hive backend

# Re-verify the signed receipt from a JSONL line alone
# receipt.json must use the live field names: receipt_id, payload_sha256, sig_b64u, ts
curl -sS https://receipts.thehiveryiq.com/v1/receipt/verify \
  -H "Content-Type: application/json" \
  -d @receipt.json | jq

# expected:
#   {"verification_status":"VERIFIED",
#    "signed_by":"fd9d10abe60de7510c61ef649c8da598a519468dd2a2b827106d76487a899444",
#    "jcs_canonical":true,
#    "signature_alg":"Ed25519"}

07Economics

Per-receipt cost$0.50 (Standard rail)
Free tier100 receipts/month
Monthly cap$499
BillingSquare invoice or monthly ACH, buyer picks
Counterparty costZero, they verify against the public key
ReplacesPhone-call wire confirmation, PDF chain, screen-share approval

08Compliance and audit shape

  • BSA/AML: the OFAC list hash and sanctions screen result are inside the signed envelope, so auditors don't need to trust the bank's word for which list version was used.
  • Correspondent banking: receipt is the artifact for SWIFT/Fedwire pre-release attestation.
  • FFIEC IT exam: signed audit trail per wire, verifiable without a Salesforce login.
  • Section 314(b) information sharing: receipts are portable to peer institutions for cooperative investigations.
  • SOC-2 CC7.2 (system monitoring): one canonical event per wire, no log reconciliation.

09Trust anchors

Every claim on this page is verifiable against these public constants. No login. No NDA.

RailSTANDARD: $0.50/receipt, Hive-billed
Hive Ed25519 pubkeyfd9d10abe60de7510c61ef649c8da598a519468dd2a2b827106d76487a899444
CanonicalizationRFC 8785 JCS over the JSON receipt body
Signature algorithmEd25519 (RFC 8032)
Backend roothttps://receipts.thehiveryiq.com
Verify any receiptthehiveryiq.com/verify
MIT starterthehiveryiq.com/salesforce/install
Billing$0.50/receipt, 100/mo free, $499/mo cap. Square invoice or monthly ACH, buyer picks.
Pricingthehiveryiq.com/pricing