---
# System prepended metadata

title: ReAcc Marketplace

---

# ReAcc Marketplace

**ReAcc Account**

- Clients who have no I-REC account.
- *[Future release]* Clients who already have I-REC accounts.

## User Registration and onboarding clients

### Client without I-REC Account

```mermaid
sequenceDiagram
  actor User as User (Seller/Buyer)
  actor Admin as Admin
  participant ReAcc as ReAcc Platform
  participant IREC as I-REC

  User->>+ReAcc: Submit ReAcc Registration
  ReAcc-->>User: Confirm submit
  ReAcc->>-Admin: Send notification
  
  
  Admin->>+ReAcc: Review Documents
  loop Need correction
    Admin->>ReAcc: Request for correction
    ReAcc->>User: Send request for correction notification
    User->>ReAcc: Submit corrected documents
    ReAcc-->>User: Confirm submit
    ReAcc->>-Admin: Send notification
    Admin->>ReAcc: Review Documents
  end

  Admin->>+ReAcc: Update registration and kyc status
  
  alt approved
    ReAcc->>+ReAcc: Create an account for a client
    alt Organization does not exist
        ReAcc->>ReAcc: Create an organization for a client
    end
    
    alt beneficiary does not exist
        ReAcc->>+IREC: Create beneficiary
        Note right of IREC: [POST] /api/irec/v1/beneficiaries/create
        IREC-->>-ReAcc: return a new beneficiary detail
    end
    
    ReAcc->>User: Send approve notification
  else rejected
    ReAcc->>-User: Send reject notification
  end
```

### *[Future release]* Client with I-REC Account

```mermaid
sequenceDiagram
  actor User as User (Seller/Buyer)
  actor Admin as Admin
  participant ReAcc as ReAcc Platform
  participant IREC as I-REC

  User->>+ReAcc: Submit ReAcc Registration
  ReAcc-->>User: Confirm submit
  ReAcc->>-Admin: Send notification
  
  
  Admin->>+ReAcc: Review Documents
  loop Need correction
    Admin->>ReAcc: Request for correction
    ReAcc->>User: Send request for correction notification
    User->>ReAcc: Submit corrected documents
    ReAcc-->>User: Confirm submit
    ReAcc->>-Admin: Send notification
    Admin->>ReAcc: Review Documents
  end

  Admin->>+ReAcc: Update registration and kyc status
  
  alt approved
    ReAcc->>+ReAcc: Create an account for a client
    alt Organization does not exist
        ReAcc->>ReAcc: Create an organization for a client
    end
    
    ReAcc->>+IREC: Sync data
    Note right of IREC: [GET] /api/irec/v1/account-management/{code}
    IREC-->>-ReAcc: return account data
    
    ReAcc->>User: Send approve notification
  else rejected
    ReAcc->>-User: Send reject notification
  end
```

**Questions**:

*[Future release]* For clients with I-REC account.
- [ ] Can ReAcc sync client user data with I-REC?
- [ ] What information ReAcc can retrieve from the API for client I-REC account? [device information, beneficiary]

---

## Device Registration

```mermaid
sequenceDiagram
    autonumber
    actor Seller as User (Seller)
    participant ReAcc as ReAcc Platform
    participant IREC as I-REC
    
    Seller->>+ReAcc: Submit ReAcc Device registration form and supporting documents
    ReAcc->>ReAcc: Create generation device with status "draft"
    ReAcc->>+IREC: Register Device
    Note right of IREC: [POST] /api/irec/v1/device-management/create
    IREC->>IREC: Create generation device with status "draft"
    IREC-->>-ReAcc: Confirm & return device ID
    ReAcc->>ReAcc: Store I-REC ID as part of the device
    ReAcc->>+IREC: Submit device
    Note right of IREC: [PUT] /api/irec/v1/device-management/{code}/submit
    IREC-->>-ReAcc: Confirm submission
    ReAcc->>ReAcc: Change I-REC status to submitted
    ReAcc-->>Seller: Confirm Device Registration

    alt is approved
    IREC->>IREC: Approve device
    ReAcc->>+IREC: Get device information
    Note right of IREC: [GET] /api/irec/v1/device-management/{code}
    IREC-->>-ReAcc: Return device info with "approved" status
    ReAcc->>ReAcc: Change I-REC status
    ReAcc->>Seller: Notify approve
    else is rejected 
    IREC->>IREC: Reject device
    ReAcc->>+IREC: Get device information
    Note right of IREC: [GET] /api/irec/v1/device-management/{code}
    IREC-->>-ReAcc: Return device info with "rejected" status
    ReAcc->>ReAcc: Change I-REC status
    ReAcc->>-Seller: Notify reject
    end
```

**Questions**:

*[Future release]* For clients with I-REC account.
- [ ] Can ReAcc fetch device data from client's registrant account? - I-REC standard said "yes", pending confirm with Evident.
- [x] When we create a device via API, will the device be created in ReAcc registrant account? - I-REC standard said "yes"

---

## Issuance request

```mermaid
sequenceDiagram
  actor Seller as User (Seller)
  actor Admin as Admin
  participant ReAcc as ReAcc
  participant IREC as I-REC
  
  Seller->>+ReAcc: Request issuance and upload evidence
  ReAcc-->>-Seller: Request success
  
  Admin->>+ReAcc: Review request issuance and upload evidence
  
  ReAcc->>+IREC: Creates a new draft issue request and upload 
  Note right of IREC: [POST] /api/irec/v1/issue-management/create
  IREC-->>-ReAcc: Returns the newly created issue object
  
  ReAcc->>ReAcc: Store request I-REC ID
  ReAcc->>+IREC: Submit request
  Note right of IREC: [PUT] /api/irec/v1/issue-management/{code}/submit
  IREC-->>-ReAcc: Confirm submission
  ReAcc->>ReAcc: [On-chain] Create issuance request
  ReAcc-->>-Admin: Confirm request
  
  IREC->>IREC: IREC Review and update status
  Note over IREC: [GET] /api/irec/issue-management/{code}
  ReAcc->>+IREC: Check request status
  IREC-->>-ReAcc: Status
  ReAcc->>ReAcc: Update request status
  ReAcc->>+IREC: Get account items 
  Note right of IREC: [GET] /api/irec/v1/account-management/{code}/items
  IREC-->>-ReAcc: Return ID
  ReAcc->>ReAcc: Parse item IDs & store correct ID
  
 alt Status is approved
    ReAcc->>ReAcc: [On-chain] Approve request <br>and Mint I-RECs to organization's  <br>exchange deposit address
    alt ** [Future release] In Case Seller has participant account **
        ReAcc->>+IREC: Transfer certificates from ReAcc's participant account <br> to seller participant account
        Note right of IREC: [POST] /api/irec/v1/transfer-management
        IREC-->>-ReAcc: return status
    end
  else Status is rejected
    ReAcc->>ReAcc: [On-chain] Revoke request and notify
  end
  ReAcc->>Admin: Send notification
  ReAcc->>Seller: Send notification
```

**Questions**:

*[Future release]* For clients with I-REC account.
- [ ] Can we issue certificate to private sub account under ReAcc? (step 4.)

---

## Trade

**Questions**:

*[Future release]* For clients with I-REC account.
- [ ] What can other participants on I-REC standard do on ReAcc platform? e.g. Mirror all data from Evident to ReAcc, Send any requests/move certificates to Evident via ReAcc.
- [ ] Can ReAcc transfer the certificates from client's account to ReAcc account?

---

## Redemption
    
### Client without I-REC Account

```mermaid
sequenceDiagram
    actor Buyer as User (Buyer)
    actor Admin as Admin
    participant ReAcc as ReAcc Platform
    participant IREC as I-REC
    participant RedemptionAcc as ReAcc's I-REC <br> Redemption Account
    
    Admin->>+ReAcc: Request redemption of I-RECs

    ReAcc->>ReAcc: Get beneficiary ID
    ReAcc->>+IREC: Redeem I-RECs
    Note over IREC: [POST] /api/redemption-management
    alt success
      IREC->>RedemptionAcc: Redeem I-RECs
      IREC-->>ReAcc: Confirm redemption and return ID
      ReAcc->>ReAcc: Store additional data e.g. cert_num ID's & URL
      ReAcc->>ReAcc: [On-chain] Claim token
      ReAcc-->>Admin: Confirm redemption <br> and display in claim report
      ReAcc->>Buyer: Send notification
    else rejected
      IREC->>IREC: Reject retirement
      IREC-->>-ReAcc: Return error message
      ReAcc-->>-Admin: Return error message
    end
```

### *[Future release]* Client with I-REC Account
TBD

**Questions**:

*[Future release]* For clients with I-REC account.
- [ ] What can other participants on I-REC standard do on ReAcc platform? e.g. Mirror all data from Evident to ReAcc, Send any requests/move certificates to Evident via ReAcc.
- [ ] Can ReAcc redeem certificates in client's account?

