Swipelux

Campaign / Project Collections & Reconciliation

Create dedicated custodial wallets per campaign or project for fund collection and automated financial reconciliation

Summary

Create a Customer per campaign/project to get a dedicated custodial wallet and balance. Route contributors through hosted/embedded checkout and reconcile funds using webhooks + REST balances.

Problem → Solution mapping

PainCapabilityMechanism
Per-campaign separationPer-customer walletPOST /v1/customers per campaign
ReconciliationBalances APIGET /v1/customers/{id}/balances
Proof of fundsWebhooks + RESTSubscribe, validate, re-fetch

Architecture

Implementation steps

Create campaign customer

curl https://wallet.swipelux.com/v1/customers \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: sk_test_1234567890abcdef' \
  --data '{"firstName":"Campaign","lastName":"Alpha","email":"alpha@example.com","phone":"+12025550100","birthDate":"1990-01-01","residentialAddress":{"streetLine1":"1 Campaign Way","city":"Denver","state":"CO","postalCode":"80014","country":"US"},"identifyingInformation":[{"type":"drivers_license","issuingCountry":"US","frontSideImage":"data:image/png;base64,AAA...","backSideImage":"data:image/png;base64,BBB..."}]}'
curl https://wallet.swipelux.com/v1/transfers \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: sk_test_1234567890abcdef' \
  --data '{"onBehalfOf":"cus_cK69MttD5nAUAbud1B","amount":"50.0","source":{"paymentRail":"card","currency":"USD"},"destination":{"currency":"USDC"}}'
<a id="contribute">Contribute</a>
<script>
  const settings = { apiKey: "pk_test_abc123" };
  document.getElementById('contribute').href =
    `https://track.swipelux.com/?specificSettings=${encodeURIComponent(JSON.stringify(settings))}`;
</script>

Reconcile balance

curl https://wallet.swipelux.com/v1/customers/cus_cK69MttD5nAUAbud1B/balances \
  --header 'X-API-Key: sk_test_1234567890abcdef'

Webhooks

Subscribe, validate HMAC, then re-fetch transfer and the campaign customer balance before updating totals.

UX choices

Hosted link for sharable pages; embed inside project page for continuity.

KPIs

Net contributions; completed transfers; reconciliation lag.

Limits & caveats

USD→USDC only. Keep campaign funds separate by Customer. REST is source of truth.

Troubleshooting

Use idempotent creation on campaign init; handle failed transfers with retry prompts.

On this page