# Demo merchant instance `goa-demo-cp4zqk`

Created **2026-07-09** via self-provisioning (`POST /instances`, no SMS TAN).

## Merchant

| Field | Value |
|-------|--------|
| SPA | https://taler.hacktivism.ch/webui/ |
| Instance ID | `goa-demo-cp4zqk` |
| Display name | GOA Demo Shop cp4zqk |
| Instance password | **not in this repo** — `koopa-admin-secrets/koopa/host-root/taler-merchant/merchant-goa-demo-cp4zqk-password.txt` → `/root/…` |
| Backend base | `https://taler.hacktivism.ch/instances/goa-demo-cp4zqk/` |
| Self-provisioning | YES; `mandatory_tan_channels: []` |

Login: SPA → instance id + password (or bearer `secret-token:$PASSWORD`).

**Instance id must be all-lowercase** (`goa-demo-cp4zqk`). Typing capitals in
the portal login field (or calling `/instances/Goa-Demo-…/private/…`) yields
**strange 401s** even with the right password — use exact lowercase only.

## Bank account (linked)

| Field | Value |
|-------|--------|
| Bank SPA | https://bank.hacktivism.ch/webui/ |
| Username | `goa-demo-cp4zqk` |
| Password | **not in this repo** — `koopa-admin-secrets/koopa/host-root/taler-bank/bank-goa-demo-cp4zqk-password.txt` → `/root/…` |
| Payto | `payto://x-taler-bank/bank.hacktivism.ch/goa-demo-cp4zqk?receiver-name=GOA%20Demo%20Shop%20cp4zqk` |
| Seed balance | **GOA:5000** (admin credit) |
| Debit threshold | GOA:100000 (default) |

Merchant wire account (private API):

```http
POST /instances/goa-demo-cp4zqk/private/accounts
Authorization: Bearer secret-token:…
{ "payto_uri": "payto://x-taler-bank/bank.hacktivism.ch/goa-demo-cp4zqk?receiver-name=GOA%20Demo%20Shop%20cp4zqk" }
```

Verified: account **active**, `h_wire` present.

### Credit facade (automatic settlement import)

Merchant **wirewatch** imports bank credits via the **Taler Revenue API** (not the exchange wire-gateway):

| Field | Value |
|-------|--------|
| `credit_facade_url` | `https://bank.hacktivism.ch/accounts/goa-demo-cp4zqk/taler-revenue/` |
| credentials | **bearer** bank access token (Basic is rejected on history) |
| process | `taler-merchant-wirewatch` (+ `depositcheck`) |

Setup helper (host root): `scripts/taler-merchant/setup_credit_facade.sh`

Without this facade, bank credits still land (exchange→merchant), but orders stay `wired=false` / `private/transfers` empty.

## Related config

- Exchanges: **CHF** `taler-ops` + **GOA** `exchange.hacktivism.ch` (both enabled)
- SMS TAN: off
- Bank DEFAULT_EXCHANGE: `https://exchange.hacktivism.ch/`
- Container hosts: public IP `212.51.151.254` for `exchange.hacktivism.ch` (not 127.0.0.1)

### SPA / KYC for this GOA payto

- **hacktivism / GOA:** `status=ready` (settlement path)
- **taler-ops / CHF:** `unsupported-account` — expected (x-taler-bank vs CHF/IBAN)
