Exchange points

Exchange Reward Points

This endpoint allows business customers to convert their accumulated reward points into cash. The specified number of points is redeemed and the equivalent dollar amount is credited directly to the designated financial account. Points must meet a minimum threshold of 100 before an exchange can be initiated.

Endpoint

POST /api/UsersReward/exchange

Authentication

Bearer token required. Obtain via:

POST https://api.banking.netevia.dev/api/auth/v2

Include in header: Authorization: Bearer {token}
Token lifetime: 10 minutes. Refresh via POST /api/auth/refresh.

When to use

Use this endpoint when a business customer wants to redeem their earned reward points for cash. The redeemed value is transferred as a credit to one of the customer's financial accounts. This is typically triggered from a rewards management interface where the customer selects a points amount and a destination account.

Request Body

FieldTypeRequiredDescription
toFinancialAccountIdstringYesThe ID of the financial account to receive the converted cash amount
pointsinteger (int32)YesNumber of reward points to exchange. Minimum: 100, Maximum: 2147483647
{
  "toFinancialAccountId": "fa_9b3e21c4d7f8a056e1234567",
  "points": 500
}

Response

200 OK

FieldTypeDescription
idstringUnique identifier of the transfer transaction
createdAtstring (date-time)Timestamp when the transfer was created
updatedAtstring (date-time)Timestamp when the transfer was last updated
amountobjectThe cash amount credited to the financial account
amount.valueinteger (int64)Monetary value in the smallest currency unit (e.g., cents)
amount.currencyCodestringISO 4217 currency code (e.g., "USD")
statusstringCurrent status of the transfer (e.g., "PENDING", "COMPLETED", "FAILED")
statusReasonstringReason for the current status, especially useful when status is FAILED
memostringDescriptive memo attached to the transfer
errorsarrayList of user-facing errors, if any occurred during processing
errors[].patharray of stringsField path(s) related to the error
errors[].codestringMachine-readable error code
errors[].descriptionstringHuman-readable error description
{
  "id": "txn_7f4a1bc902e3d85f6c7890ab",
  "createdAt": "2026-06-09T14:22:31Z",
  "updatedAt": "2026-06-09T14:22:31Z",
  "amount": {
    "value": 500,
    "currencyCode": "USD"
  },
  "status": "COMPLETED",
  "statusReason": null,
  "memo": "Reward points exchange",
  "errors": []
}

Error Codes

CodeWhen it happens
400Missing required fields, points below minimum (100), or invalid financial account ID format
401Token missing, expired, or invalid
403Insufficient permissions or customer does not have enough reward points for the requested exchange
404The specified toFinancialAccountId does not exist or does not belong to the authenticated customer
500Internal server error

Common Mistakes

  • Submitting a points value below the minimum of 100 — the API requires at least 100 points per exchange request
  • Using a toFinancialAccountId that belongs to a different customer or does not exist — the destination account must be owned by the authenticated business customer
  • Attempting to exchange more points than the customer currently holds — ensure the points balance is checked before calling this endpoint
  • This endpoint is only available to business customers; personal customers do not have access to the rewards program

Related Endpoints

  • GET /api/UsersReward — Retrieve the current reward points balance for the authenticated customer
  • POST /api/UsersReward/send — Send reward points to another Netevia business customer
  • GET /api/FinancialAccounts — List all financial accounts available to the customer for use as a transfer destination

Example

curl -X POST https://api.banking.netevia.dev/api/UsersReward/exchange \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "toFinancialAccountId": "fa_9b3e21c4d7f8a056e1234567",
    "points": 500
  }'
Body Params
string
required
length ≥ 1
int32
required
100 to 2147483647
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
string
enum
Defaults to application/json

Generated from available request content types

Allowed:
Response

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
text/plain
application/json
text/json