> ## Documentation Index
> Fetch the complete documentation index at: https://developers.uqpay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Resources

> Use the UQPAY Go SDK to interact with Banking and Card Issuance resources.

This page covers all resource namespaces available on the UQPAY Go client. Each namespace maps to a UQPAY product.

## Issuing

### Create a cardholder

```go theme={null}
cardholder, err := client.Issuing.Cardholders.Create(ctx, &issuing.CreateCardholderRequest{
    Email:       "user@example.com",
    PhoneNumber: "1234567890",
    FirstName:   "John",
    LastName:    "Doe",
    CountryCode: "US",
})
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Cardholder ID: %s\n", cardholder.CardholderID)
```

### List card products

```go theme={null}
products, err := client.Issuing.Products.List(ctx, &issuing.ListProductsRequest{
    PageSize:   10,
    PageNumber: 1,
})
if err != nil {
    log.Fatal(err)
}

for _, product := range products.Data {
    fmt.Printf("Product: %s (%s)\n", product.ProductID, product.CardScheme)
}
```

### Create a card

```go theme={null}
card, err := client.Issuing.Cards.Create(ctx, &issuing.CreateCardRequest{
    CardCurrency:  "USD",
    CardholderID:  cardholder.CardholderID,
    CardProductID: "product-id",
})
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Card ID: %s (Status: %s)\n", card.CardID, card.CardStatus)
```

### Get secure card details

```go theme={null}
secureInfo, err := client.Issuing.Cards.GetSecure(ctx, card.CardID)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Card Number: %s\n", secureInfo.CardNumber)
fmt.Printf("CVV: %s\n", secureInfo.CVV)
fmt.Printf("Expiry: %s\n", secureInfo.ExpiryDate)
```

### Recharge a card

```go theme={null}
order, err := client.Issuing.Cards.Recharge(ctx, card.CardID, &issuing.CardOrderRequest{
    Amount: 100.50,
})
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Recharge Order ID: %s\n", order.OrderID)
```

### Withdraw from a card

```go theme={null}
order, err := client.Issuing.Cards.Withdraw(ctx, card.CardID, &issuing.CardOrderRequest{
    Amount: 50.00,
})
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Withdraw Order ID: %s (Status: %s)\n", order.OrderID, order.Status)
```

### Update card status

```go theme={null}
// Freeze a card
err = client.Issuing.Cards.UpdateStatus(ctx, card.CardID, &issuing.UpdateCardStatusRequest{
    CardStatus: "FROZEN",
})
if err != nil {
    log.Fatal(err)
}

// Unfreeze a card
err = client.Issuing.Cards.UpdateStatus(ctx, card.CardID, &issuing.UpdateCardStatusRequest{
    CardStatus: "ACTIVE",
})
```

### List transactions

```go theme={null}
transactions, err := client.Issuing.Transactions.List(ctx, &issuing.ListTransactionsRequest{
    PageSize:   10,
    PageNumber: 1,
    CardID:     card.CardID,
})
if err != nil {
    log.Fatal(err)
}

for _, txn := range transactions.Data {
    fmt.Printf("Transaction: %s - %s %s\n",
        txn.TransactionID,
        txn.TransactionAmount,
        txn.TransactionCurrency,
    )
}
```

## Banking

### Balances

```go theme={null}
balances, err := client.Banking.Balances.List(ctx, &banking.ListBalancesRequest{
    PageSize:   20,
    PageNumber: 1,
})

balance, err := client.Banking.Balances.Get(ctx, "SGD")

txns, err := client.Banking.Balances.ListTransactions(ctx, &banking.ListBalanceTransactionsRequest{
    PageSize: 20,
})
```

### Transfers

```go theme={null}
transfer, err := client.Banking.Transfers.Create(ctx, &banking.CreateTransferRequest{
    SourceAccountID:      "acc-123",
    DestinationAccountID: "acc-456",
    Currency:             "SGD",
    Amount:               "100.00",
})

transfers, err := client.Banking.Transfers.List(ctx, &banking.ListTransfersRequest{
    PageSize: 20,
})

transfer, err := client.Banking.Transfers.Get(ctx, "transfer-id")
```

### Deposits

```go theme={null}
deposits, err := client.Banking.Deposits.List(ctx, &banking.ListDepositsRequest{
    PageSize: 20,
})

deposit, err := client.Banking.Deposits.Get(ctx, "deposit-id")
```

### Beneficiaries

```go theme={null}
beneficiary, err := client.Banking.Beneficiaries.Create(ctx, &banking.CreateBeneficiaryRequest{
    // ... set fields
})

list, err := client.Banking.Beneficiaries.List(ctx, &banking.ListBeneficiariesRequest{
    PageSize: 20,
})

beneficiary, err := client.Banking.Beneficiaries.Get(ctx, "ben-id")
beneficiary, err = client.Banking.Beneficiaries.Update(ctx, "ben-id", updateRequest)
err = client.Banking.Beneficiaries.Delete(ctx, "ben-id")
err = client.Banking.Beneficiaries.Check(ctx, checkRequest)
```

### Payouts

```go theme={null}
payout, err := client.Banking.Payouts.Create(ctx, &banking.CreatePayoutRequest{
    BeneficiaryID: "ben-123",
    Currency:      "SGD",
    Amount:        "50.00",
    PurposeCode:   "PERSONAL",
})
```

### Virtual accounts

```go theme={null}
va, err := client.Banking.VirtualAccounts.Create(ctx, &banking.CreateVirtualAccountRequest{
    Currency: "SGD",
})

list, err := client.Banking.VirtualAccounts.List(ctx, &banking.ListVirtualAccountsRequest{
    PageSize: 20,
})
```

### Conversions

```go theme={null}
quote, err := client.Banking.Conversions.CreateQuote(ctx, &banking.CreateQuoteRequest{
    SellCurrency: "SGD",
    BuyCurrency:  "USD",
    Amount:       "100",
    FixedSide:    "SELL",
})

conversion, err := client.Banking.Conversions.Create(ctx, &banking.CreateConversionRequest{
    QuoteID: quote.QuoteID,
})

conversions, err := client.Banking.Conversions.List(ctx, &banking.ListConversionsRequest{
    PageSize: 20,
})

dates, err := client.Banking.Conversions.ListConversionDates(ctx, nil)
```

### Exchange rates

```go theme={null}
rates, err := client.Banking.ExchangeRates.List(ctx, &banking.ListExchangeRatesRequest{})
```
