# Merchant profiles (/docs/direct-debit/merchant-profiles)

Merchant profiles store your banking configuration and are required for processing collections and payments.

## Overview [#overview]

A merchant profile contains:

- Your bank account details for settlement
- Approved collection instruments (EFT, DebiCheck)
- Your PASA-registered abbreviated name
- Processing limits and configuration

## Get Merchant Profile [#get-merchant-profile]

Retrieve your merchant profile(s) to obtain the configuration values needed for API calls.

### Endpoint [#endpoint]

```json
GET https://api.revio.co.za/v2/merchantprofile/
```

### Request [#request]

```bash
curl -X GET https://dev.api.revio.co.za/v2/merchantprofile/ \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json"
```

### Response [#response]

```json
[
  {
    "id": "24",
    "profileCode": "TEST1",
    "bank": "STANDARDBANK",
    "instruments": ["EFTONEDAY", "EFTTWODAY", "EFTSAMEDAY", "DEBICHECK"],
    "name": "TEST MERCHANT 1",
    "accountNumber": "12345678",
    "branchCode": "051001",
    "abbreviatedName": "TESTMERCH1",
    "contactNumber": "+27-615333440",
    "emailAddress": "test@test.com",
    "currency": "ZAR",
    "entryClass": "21",
    "createdByClient": "109"
  }
]
```

### Response Fields [#response-fields]

| Field | Type | Description |
|---|---|---|
| `id` | string | Unique merchant profile identifier |
| `profileCode` | string | Bank-provided profile code linking credit limits and pricing |
| `bank` | string | Bank name (e.g., `STANDARDBANK`) |
| `instruments` | array | Enabled payment instruments |
| `name` | string | Merchant trading name registered with bank |
| `accountNumber` | string | Settlement account number |
| `branchCode` | string | Bank branch code |
| `abbreviatedName` | string | PASA-approved name shown on customer bank statements |
| `contactNumber` | string | Merchant contact phone number |
| `emailAddress` | string | Merchant email address |
| `currency` | string | Currency code (always `ZAR`) |
| `entryClass` | string | Entry class code (always `21`) |
| `createdByClient` | string | Parent client ID |

### Available Instruments [#available-instruments]

| Instrument | Description |
|---|---|
| `EFTSAMEDAY` | Same-day EFT collection/payment |
| `EFTONEDAY` | One business day EFT collection/payment |
| `EFTTWODAY` | Two business day EFT collection/payment |
| `DEBICHECK` | DebiCheck authenticated debit orders |

## Get Merchant Profile by ID [#get-merchant-profile-by-id]

Retrieve a specific merchant profile.

### Endpoint [#endpoint-1]

```text
GET https://api.revio.co.za/v2/merchantprofile/{id}/
```

### Request [#request-1]

```bash
curl -X GET https://dev.api.revio.co.za/v2/merchantprofile/24/ \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

## Sub-merchant profiles (platform providers) [#sub-merchant-profiles-platform-providers]

Platform providers operating under the System Operator model can have merchant
profiles created for their sub-merchants.

<Callout type="warning">
**There is no API operation to create a merchant profile.** The Mandates API
exposes only `GET /v2/merchantprofile` and `GET /v2/merchantprofile/{id}`.
Profiles are created by Precium as part of onboarding; contact support to have
the capability enabled and the profiles provisioned. Once they exist, read them
with the two endpoints above.
</Callout>

## Using Profile Values [#using-profile-values]

The merchant profile values are required when creating mandates and collections:

```json
{
  "profileCode": "TEST1",           // From merchant profile
  "abbreviatedName": "TESTMERCH1",  // From merchant profile
  "creditor": {
    "accountNumber": "12345678",    // From merchant profile
    "branchCode": "051001",         // From merchant profile
    "name": "TEST MERCHANT 1",      // From merchant profile
    "bank": "STANDARDBANK"
  }
}
```

## Abbreviated Name [#abbreviated-name]

The abbreviated name is a critical identifier that:

- Appears on customer bank statements
- Must be registered and approved by PASA
- Uniquely identifies your business to customers
- Is limited to 10 characters

Example bank statement display:

```text
TESTMERCH1 CONTRACT001  -R100.00
```

## Test Merchant Profile [#test-merchant-profile]

For sandbox testing, use the following pre-configured profile:

| Field | Value |
|---|---|
| `id` | `24` |
| `profileCode` | `TEST1` |
| `abbreviatedName` | `TESTMERCH1` |
| `accountNumber` | `12345678` |
| `branchCode` | `051001` |
| `name` | `TEST MERCHANT 1` |

## Platform Provider Requirements [#platform-provider-requirements]

To create and manage merchant profiles as a platform provider, you need:

1. **Standard Bank Profile Code** and credit limits
2. **Standard Bank processing account** for real-time settlement
3. **PASA Registration** as a Third-Party Payment Provider (TPPP)
4. **Precium verification** and approval

Contact Precium support to enable platform provider capabilities.
