Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
62 views7 pages

Hello Clever Assessment

The document outlines a technical support engineer's assessment covering various issues such as PayID transaction discrepancies, API errors, subscription billing inconsistencies, and webhook notifications. It includes investigation steps, troubleshooting approaches, customer communication templates, and API usage guidelines. The document emphasizes the importance of correct data formats and the handling of different error codes in the system.

Uploaded by

Tấn Lộc
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
62 views7 pages

Hello Clever Assessment

The document outlines a technical support engineer's assessment covering various issues such as PayID transaction discrepancies, API errors, subscription billing inconsistencies, and webhook notifications. It includes investigation steps, troubleshooting approaches, customer communication templates, and API usage guidelines. The document emphasizes the importance of correct data formats and the handling of different error codes in the system.

Uploaded by

Tấn Lộc
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

Hello Clever – Customer Technical Support Engineer Take-Home

Assessment
Candidate Name: Le Tan Loc
Submission Date: [Insert Date]

1. PayID Transaction Shows as Completed but Not Reflected in


Merchant System
Investigation Steps:
1. Confirm the PayID, transaction timestamp, and customer details.
2. Check payment gateway logs to verify incoming transaction status.
3. Review webhook delivery logs to confirm if the notification was
received.
4. Query internal database or call GET /transactions to locate the
transaction.
5. Inspect any asynchronous queues or retries if applicable.
Tools/Logs to Use:
 Payment gateway logs
 Webhook delivery logs
 Admin backend tools
 API testing tools (Postman)
 Message queues if implemented
Customer Email Response:
Dear [Customer Name],

Thank you for contacting us. We understand your concern regarding the
PayID transaction marked as completed on your banking app but not yet
reflected in our system.

We are currently investigating and can confirm that while the


transaction appears successful on your bank's end, it has not yet
reached our system due to potential delays in settlement or webhook
delivery.

Our team is closely monitoring this and will notify you as soon as the
transaction is reconciled in our system.

Thank you for your patience.


Best regards,
Loc – Customer Support Team

2. 422 Unprocessable Entity Error During Contact Creation


Possible Causes:
 Invalid data format (e.g., malformed email or phone)
 Missing required fields
 Duplicate entries (email or phone already exists)
Incorrect Payload Example:
{
"email": "user@@domain.com",
"phone": "12345"
}

Corrected Payload Example:


{
"email": "[email protected]",
"phone": "+84123456789",
"name": "Nguyen Van A"
}

Merchant Communication:
Hi [Merchant Name],

We reviewed the issue and found that the 422 error is caused by
invalid field formats, such as the email or phone number.

Please ensure your request payload adheres to the expected format.


Here's a corrected sample you can follow:

[Insert corrected JSON payload here]

Let us know if you continue to face issues.

Best regards,
Loc

3. Inconsistent Subscription Billing


Troubleshooting Approach:
 Review logs for duplicate or missing idempotency keys
 Verify cron job timing or retry mechanisms
 Analyze payment gateway responses (e.g., declined, timeout)
 Match subscription DB records with payment history
Internal Developer Communication:
 Share payloads, timestamps, and frequency of duplicates
 Validate system triggers vs. retry logic
 Propose adding more detailed logs if insufficient
User Communication:
Hi [User],

We noticed some inconsistencies in your subscription billing. We're


investigating whether these issues are related to retry logic or
timing overlaps during payment processing.

Our engineering team is reviewing the gateway logs and transaction IDs
to identify the root cause. Meanwhile, please avoid retrying charges
if the status is still pending.

We'll keep you updated within 24 hours.

Best regards,
Loc

Temporary Workaround:
 Use unique idempotency keys for all payment requests
 Avoid client-side retries without explicit failure response

4. API Authentication
Authentication Scheme: Bearer Token (Token-based Authentication)
Sample curl Command:
curl -X GET https://api.helloclever.co/v1/contacts \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"

5. API Endpoint Structure


Base URLs:
 Production: https://api.helloclever.co
 Sandbox: https://sandbox-api.helloclever.co
Switching Environments in Postman:
 Use environments and define {{base_url}} variable
 Replace request URLs with {{base_url}}/v1/contacts
 Switch environment using Postman’s environment dropdown

6. API Error Handling


Status Code Example Scenario
200 Payment/contact/refund
processed successfully
400 Missing required field in
request payload
401 Missing or invalid
Authorization token
422 Payload is well-formed but
semantically invalid
500 Server error, DB failure, or
internal exception

7. Withdrawable Balance Shows as Zero


Troubleshooting Using API:
GET /api/v2/balances/detail?currency=JPY
Authorization: Bearer YOUR_TOKEN

Possible Causes:
 Funds not yet settled
 Funds available but not withdrawable due to hold period
 Recent withdrawal not yet reconciled
Sample API Response:
{
"currency": "JPY",
"available_balance": 200000,
"withdrawable_balance": 0,
"pending_settlement": 200000
}

Customer-Facing Explanation:
Hi [Merchant],

Thank you for reaching out. We’ve reviewed your JPY balance and
confirmed that while multiple successful payments were received, the
funds are currently in a pending settlement state.

This means they are available but not withdrawable yet due to the
standard settlement delay (T+1 or T+2). Once finalized, the balance
will be updated and available for withdrawal.

We'll notify you when the funds are fully settled.

Best regards,
Loc

8. Simulate Payin Request Completion in Sandbox


API Endpoint:
POST /sandbox/v1/payin/simulate

Request Body:
{
"uuid": "MB3Y26GO",
"status": "COMPLETED",
"amount": 500
}

Curl Command:
curl -X POST https://sandbox-api.helloclever.co/v1/payin/simulate \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"uuid": "MB3Y26GO",
"status": "COMPLETED",
"amount": 500
}'

Important Restriction: Only applicable for transactions in PENDING state.


Error If Not in Pending State:
{
"error": "Transaction status must be PENDING to simulate completion"
}
9. Webhook Notifications Not Received
Possible Reasons:
1. Webhook endpoint down or timeout
2. Incorrect event configuration (e.g., missing payment.authorised)
3. Endpoint failed to return HTTP 200 OK
Token Behavior in Webhooks:
 Token appears only if payment was card-based and authorised
 Not present in failed or non-card transactions
Sample Payload:
{
"event": "payment.authorised",
"payment_id": "PAY123456789",
"amount": 1000,
"currency": "AUD",
"card_token": "tok_abc123xyz",
"status": "authorised",
"timestamp": "2025-07-02T10:00:00Z"
}

Best Practices:
1. Always respond with 200 OK quickly
2. Log all webhook events and responses
3. Validate signatures (e.g., HMAC) if supported
Retry Behavior: Hello Clever retries failed webhooks with exponential
backoff. Persistent failures may result in webhook deactivation.

10. JavaScript SDK Configuration


SDK Script URLs:
 Sandbox: <script
src="https://sandbox-cdn.helloclever.co/sdk.js"></script>
 Production: <script
src="https://cdn.helloclever.co/sdk.js"></script>

Importance of Using Correct Script:


 Sandbox scripts only simulate payments
 Production scripts process real transactions
Consequences of Using Sandbox in Production:
 Payments won’t be captured
 No webhook triggers
 Customer confusion or financial loss

End of Assessment

You might also like