Helper API Reference

API reference for sandbox test event simulation.

Before You Start

Read the following guides before proceeding:

GuideWhy
Getting StartedPlatform overview and setup
Api BasicsRequired headers and request configuration
AuthenticationHow to obtain access tokens
OnboardingUser and wallet registration
KYCKYC verification requirements

Overview

The Sandbox Helper API at https://ramc.wirexapp.tech provides endpoints to simulate external events for testing. All endpoints use the user's email address to identify accounts.

Interactive API documentation is available at https://ramc.wirexapp.tech/api-docs/.


Mint Test Tokens

Mint test tokens directly to a user's wallet for testing purposes.

Endpoint

POST /account/retail/mint

Request

{
  "chainId": "84532",
  "token": "0x7Af7cDbd557eD302F7538Db1e3d094C8BBcA665c",
  "to": "0xA7E41d5680dE394EaA2ed417169DFf56840Fb3EE",
  "amount": "1000"
}
FieldTypeRequiredDescription
chainIdstringYesChain ID (84532 for Base Sepolia)
tokenstringYesToken contract address
tostringYesDestination wallet address
amountstringYesAmount in token units (human-readable)

See Credentials for sandbox token addresses.

Response

{
  "txHash": "0x28da8dec81198cd43329c92ac5b7bcb048a48495bdbc69fc1c921da72fe42939",
  "success": true
}

SEPA Operations

Simulate SEPA Deposit

Simulate an incoming SEPA EUR deposit to a user's account.

Endpoint

POST /bank/sepa/deposit

Request

{
  "region": "GB",
  "email": "[email protected]",
  "amount": 250.00
}
FieldTypeRequiredDescription
regionstringYesRegion code (GB or EEA)
emailstringYesUser's email address
amountnumberYesAmount in EUR

Response

{
  "success": true
}

This triggers a /v2/webhooks/activities webhook with type Sepa and direction Inbound.


Get Pending SEPA Transfers

List pending outbound SEPA transfers waiting for completion.

Note: In sandbox environment, all outbound SEPA transfers remain in pending state indefinitely. Use complete or revert endpoints to simulate the external banking system processing the transfer.

Endpoint

GET /bank/sepa/transfers/pending

Query Parameters

ParameterTypeRequiredDescription
regionstringYesRegion code (GB or EEA)
emailstringYesUser's email address

Response

[
  {
    "id": "txn_abc123def456",
    "transactionId": "OP-12345",
    "status": "RELEASED",
    "type": "PAYOUT",
    "amount": {
      "currency": "EUR",
      "value": 150.00
    },
    "createdOn": "2024-01-15T10:30:00Z"
  }
]

Use the id value in transfer completion/revert requests.


Complete SEPA Transfer

Mark a pending outbound SEPA transfer as completed.

Endpoint

POST /bank/sepa/transfer/complete

Request

{
  "region": "GB",
  "email": "[email protected]",
  "transactionId": "txn_abc123def456"
}
FieldTypeRequiredDescription
regionstringYesRegion code
emailstringYesUser's email address
transactionIdstringYesTransaction ID from pending list

Response

{
  "success": true
}

This triggers a /v2/webhooks/activities webhook with status Completed.


Revert SEPA Transfer

Simulate a returned SEPA transfer. This can only be called after a transfer has been completed. Creates an inbound reversal transaction that credits the funds back to the user's account.

Endpoint

POST /bank/sepa/transfer/revert

Request

{
  "region": "GB",
  "email": "[email protected]",
  "transactionId": "txn_abc123def456"
}

Response

{
  "success": true
}

This triggers a /v2/webhooks/activities webhook with type Sepa, direction Inbound, representing the reversal credit.


ACH Operations

Activate ACH Customer

Activate a user's ACH account. Required before ACH deposits can be simulated.

Note: In sandbox environment, ACH accounts remain in pending state indefinitely after creation. Call this endpoint to simulate the external ACH provider activating the account.

Endpoint

POST /bank/ach/customer/activate

Request

{
  "email": "[email protected]"
}
FieldTypeRequiredDescription
emailstringYesUser's email address

Response

{
  "success": true
}

Simulate ACH Deposit

Simulate an incoming ACH USD deposit to a user's account.

Endpoint

POST /bank/ach/deposit

Request

{
  "email": "[email protected]",
  "amount": 500.00
}
FieldTypeRequiredDescription
emailstringYesUser's email address
amountnumberYesAmount in USD

Response

{
  "success": true
}

This triggers a /v2/webhooks/activities webhook with type AchPush and direction Inbound.


Complete ACH Transfer

Mark a pending outbound ACH transfer as completed.

Note: In sandbox environment, all outbound ACH transfers remain in pending state indefinitely. Use complete or revert endpoints to simulate the external ACH network processing the transfer.

Endpoint

POST /bank/ach/transfer/complete

Request

{
  "externalId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
FieldTypeRequiredDescription
externalIdstringYesActivity ID from Wirex BaaS transfer response

Response

{
  "success": true
}

Revert ACH Transfer

Simulate a returned ACH transfer. This can only be called after a transfer has been completed. Creates an inbound reversal transaction that credits the funds back to the user's account.

Endpoint

POST /bank/ach/transfer/revert

Request

{
  "externalId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Response

{
  "success": true
}

Card Transaction Operations

Simulate card transactions for testing card payment flows.

Common Parameters

All card transaction endpoints accept the same request format:

{
  "cardId": "550e8400-e29b-41d4-a716-446655440000",
  "amount": 25.50
}
FieldTypeRequiredDescription
cardIdstring (UUID)YesCard ID from Wirex BaaS
amountnumberYesTransaction amount

Common Response

{
  "success": true,
  "transactionType": "POS",
  "cardId": "550e8400-e29b-41d4-a716-446655440000",
  "amount": 25.50
}

POS Transaction

Simulate a point-of-sale (in-store) card purchase.

Endpoint

POST /card/transaction/pos

This triggers a /v2/webhooks/activities webhook with type CardTransaction and direction Outbound.


EPOS Transaction

Simulate an e-commerce (online) card purchase.

Endpoint

POST /card/transaction/epos

Use this for testing card-not-present transactions and 3DS flows.


ATM Transaction

Simulate an ATM cash withdrawal.

Endpoint

POST /card/transaction/atm

Credit Transaction

Simulate a refund or credit to the card.

Endpoint

POST /card/transaction/credit

This adds funds to the card balance (opposite of purchase transactions).


Code Examples

JavaScript

const HELPER_API = 'https://ramc.wirexapp.tech';

// Simulate SEPA deposit
async function simulateSepaDeposit(email, amount) {
  const response = await fetch(`${HELPER_API}/bank/sepa/deposit`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      region: 'GB',
      email,
      amount
    })
  });
  return response.json();
}

// Complete SEPA transfer
async function completeSepaTransfer(email, transactionId) {
  const response = await fetch(`${HELPER_API}/bank/sepa/transfer/complete`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      region: 'GB',
      email,
      transactionId
    })
  });
  return response.json();
}

// Simulate card purchase
async function simulateCardPurchase(cardId, amount) {
  const response = await fetch(`${HELPER_API}/card/transaction/pos`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ cardId, amount })
  });
  return response.json();
}

Python

import requests

HELPER_API = 'https://ramc.wirexapp.tech'

def simulate_sepa_deposit(email: str, amount: float) -> dict:
    response = requests.post(
        f'{HELPER_API}/bank/sepa/deposit',
        json={
            'region': 'GB',
            'email': email,
            'amount': amount
        }
    )
    return response.json()

def complete_sepa_transfer(email: str, transaction_id: str) -> dict:
    response = requests.post(
        f'{HELPER_API}/bank/sepa/transfer/complete',
        json={
            'region': 'GB',
            'email': email,
            'transactionId': transaction_id
        }
    )
    return response.json()

def simulate_card_purchase(card_id: str, amount: float) -> dict:
    response = requests.post(
        f'{HELPER_API}/card/transaction/pos',
        json={
            'cardId': card_id,
            'amount': amount
        }
    )
    return response.json()

Go

package main

import (
    "bytes"
    "encoding/json"
    "net/http"
)

const helperAPI = "https://ramc.wirexapp.tech"

type SepaDepositRequest struct {
    Region string  `json:"region"`
    Email  string  `json:"email"`
    Amount float64 `json:"amount"`
}

type CardTransactionRequest struct {
    CardID string  `json:"cardId"`
    Amount float64 `json:"amount"`
}

func simulateSepaDeposit(email string, amount float64) error {
    body, _ := json.Marshal(SepaDepositRequest{
        Region: "GB",
        Email:  email,
        Amount: amount,
    })

    _, err := http.Post(
        helperAPI+"/bank/sepa/deposit",
        "application/json",
        bytes.NewBuffer(body),
    )
    return err
}

func simulateCardPurchase(cardID string, amount float64) error {
    body, _ := json.Marshal(CardTransactionRequest{
        CardID: cardID,
        Amount: amount,
    })

    _, err := http.Post(
        helperAPI+"/card/transaction/pos",
        "application/json",
        bytes.NewBuffer(body),
    )
    return err
}

Error Handling

All endpoints return errors in this format:

{
  "error": "User not found for email: [email protected]"
}
HTTP StatusDescription
400Missing required parameters
500Operation failed (user not found, API error, etc.)