Security and Signing Guide

Token handling, device confirmation, quote signing and webhook verification.

YCMT EU Partner Developer Security and Signing Guide

Partner developer integration pack | Version 1.0 | YCMT EU

Partner-safe scope This guide explains the security and signing responsibilities a partner developer must implement when integrating with the YCMT EU APIs. It deliberately avoids YCMT internal system details. The partner app only needs to follow the documented API, token, signing, webhook, and operational security requirements.
FieldValue
Document60_YCMT_EU_PartnerDev_Security_And_Signing_Guide_v1_0.docx
AudiencePartner application developers, partner backend developers, partner DevOps/security teams
PerimeterYCMT EU only
StatusDraft for partner onboarding use
ConfidentialityPartner-facing under onboarding/NDA controls
Related pack filesGetting Started; API Guide; Flows Guide; Errors, Statuses and Retry Guide; Sandbox and Go-Live Guide; OpenAPI and Postman Pack

Contents

  • 1. Purpose and integration boundary
  • 2. Security responsibilities at a glance
  • 3. API credentials and environment separation
  • 4. Customer access token handling
  • 5. Secure request construction
  • 6. Device registration and transfer confirmation
  • 7. Quote signing for partner pricing engines
  • 8. Webhook verification
  • 9. Key rotation and credential lifecycle
  • 10. Logging and data protection rules
  • 11. Incident handling and escalation
  • 12. Implementation checklist

1. Purpose and integration boundary

This document tells partner developers what security controls must be implemented in the partner application and partner backend when integrating with the YCMT EU APIs. It is practical by design: it explains what to send, what to store, what to sign, what to verify, and what must never be logged or exposed.

The partner app presents a branded customer experience. YCMT validates the customer, partner, compliance, transaction, funding, and settlement controls before any regulated action proceeds. The partner must not try to reproduce, bypass, or override those controls.

TopicPartner responsibilityYCMT responsibility
Customer access tokenStore securely, send on API calls, refresh before expiry where supported.Validate token and enforce customer, partner, and transaction controls.
Device confirmationGenerate and protect device private key; sign confirmation payload when required.Validate device proof and decide whether transfer may proceed.
Quote signingIf operating a pricing engine, sign quotes exactly as specified and protect signing keys.Validate quote signature and enforce pricing/disclosure controls.
WebhooksExpose secure webhook endpoint, verify YCMT delivery, process idempotently.Send partner notifications and provide retry/replay according to the integration contract.
IncidentsNotify YCMT quickly of credential, key, device, webhook, or customer-data exposure.Assess regulated impact and instruct required containment steps.
Non-negotiable boundary The partner application may request API actions on behalf of an authenticated customer, but it cannot decide KYC outcomes, AML outcomes, sanctions outcomes, transfer approval, release, cancellation success, refund execution, or settlement completion.

2. Security responsibilities at a glance

AreaRequired partner behaviour
Transport securityUse HTTPS for every API and webhook call. Do not allow downgrade, insecure redirects, or mixed content.
Credential storageStore API keys, signing keys, webhook secrets, and environment credentials in a secure secrets manager. Never hard-code them in mobile apps or public repositories.
Customer tokensTreat access and refresh tokens as sensitive credentials. Store them using platform-secure storage and never log them.
Private keysKeep private signing keys and device private keys private. Public keys may be shared only through the documented onboarding or registration process.
Data minimisationOnly collect and retain the information required by the documented integration. Do not create parallel regulated records.
IdempotencyUse idempotency keys for applicable POST operations to avoid duplicate business actions.
Webhook processingVerify authenticity, reject stale/replayed events, process duplicate events safely.
Incident reportingReport suspected exposure of tokens, keys, webhook secrets, production credentials, or customer data.

3. API credentials and environment separation

YCMT issues separate credentials for sandbox and production. Sandbox credentials must never be used in production, and production credentials must never be used in sandbox or shared test tools outside the approved partner environment.

Credential or assetUsed forStorage rule
Partner API subscription credentialIdentifies the partner application when calling YCMT APIs.Backend secret store or approved mobile distribution method. Never place production credentials in source code.
Customer access tokenAuthorises customer-context API calls.Secure storage on customer device; short-lived; never logged.
Customer refresh tokenObtains a fresh access token where supported.Highest sensitivity. Store only in secure platform storage; clear on logout.
Partner quote-signing private keySigns partner-generated quotes where the partner operates pricing.Backend-only secret or HSM/KMS. Never store in a mobile app.
Webhook verification materialVerifies YCMT webhook delivery and prevents spoofing/replay.Backend-only secret store. Rotate according to onboarding instructions.
Device private keySigns customer device confirmation assertions.Generated and stored on the customer device using OS secure key storage. Not exportable where platform supports it.

3.1 Environment rules

  • Keep separate base URLs, credentials, signing keys, webhook endpoints, and test data for sandbox and production.
  • Do not copy production customer data into sandbox.
  • Do not configure sandbox webhooks to production systems unless explicitly approved for a controlled test.
  • Use production credentials only after YCMT confirms go-live approval.

4. Customer access token handling

The partner app sends the customer access token in the Authorization header for customer-context API calls. YCMT validates the token and applies the relevant customer, partner, compliance, and transaction controls server-side.

DoDo not
Store tokens in secure platform storage.Do not store tokens in plain text, browser local storage for high-risk flows, logs, analytics, crash reports, or screenshots.
Send tokens only to YCMT API endpoints over HTTPS.Do not send tokens to partner analytics, support, marketing, or third-party SDKs.
Refresh tokens only through the documented token refresh flow.Do not create custom token refresh or token sharing mechanisms.
Clear local tokens on logout, account switch, device compromise, or customer request.Do not keep old tokens after logout or app uninstall/reinstall recovery.
Treat token expiry as normal and guide the customer through re-login when required.Do not interpret token contents to make authorisation or compliance decisions.

4.1 Authorization header

Use the standard bearer-token format:

Authorization: Bearer <customer_access_token>

5. Secure request construction

ControlPartner implementation requirement
HTTPS onlyAll calls must use HTTPS. Reject untrusted certificates and avoid debug overrides in production builds.
Correlation IDSend a correlation ID where supported so support teams can trace requests without exposing customer secrets.
Idempotency keySend a unique idempotency key for applicable business actions such as submissions or acceptance flows.
Input validationValidate basic client-side format, but rely on YCMT response codes for authoritative acceptance or rejection.
Clock handlingEnsure device clocks are reasonably accurate for token expiry and signing challenges.
No sensitive query stringsDo not place tokens, customer identifiers, document data, or secrets in URLs.

6. Device registration and transfer confirmation

Some YCMT flows require confirmation from a registered customer device. The partner app is responsible for generating and protecting the device key and for producing the confirmation signature when prompted by the API.

6.1 Device registration overview

  1. The customer signs in or completes registration.
  2. The partner app starts device registration through the documented API endpoint.
  3. The app generates a device key pair using secure platform APIs.
  4. The app sends the public key and proof of possession to YCMT.
  5. YCMT registers the device if the proof is valid and the customer context is eligible.
Device assetPartner app rule
Device private keyGenerated on the customer device. Must be protected by OS secure storage. Must not be exported, logged, synced to partner servers, or backed up insecurely.
Device public keySent to YCMT during registration. May be stored by the partner only for troubleshooting metadata if needed.
Device identifierTreat as customer-related metadata. Do not use it for cross-service tracking.
Registration challengeUse only for the current registration ceremony. Do not reuse.

6.2 Transfer confirmation signing

When YCMT requires device-bound confirmation, the API provides or references the data that must be confirmed. The app must show the customer the material transfer details and sign the confirmation payload using the registered device private key.

RequirementImplementation guidance
Show transfer details before signingDisplay the amount, currency, recipient, and other required details before the customer confirms.
Bind signature to the transactionSign exactly the documented confirmation payload. Do not sign an incomplete, altered, or partner-defined substitute payload.
Use current challenge/nonce onlyDo not reuse old challenges, nonces, or signatures.
Handle failure safelyIf signing fails, do not submit a transfer as confirmed. Prompt retry or escalate according to the error returned.

7. Quote signing for partner pricing engines

This section applies only where the partner operates an approved pricing engine and is required to sign quotes. If YCMT provides pricing directly for the integration, this section is informational only.

Quote-signing requirementPartner implementation
Signing algorithmUse the algorithm and key type specified in the onboarding materials and API contract. Do not change algorithms without YCMT approval.
Canonical payloadSign the exact canonical quote payload. Field order, numeric format, and required fields must match the specification.
Private key custodyKeep the quote-signing private key in backend-controlled secure infrastructure. Never place it in web or mobile apps.
Key identificationInclude the correct key identifier where required so YCMT can validate the signature.
Quote expiryRespect quote expiry. Do not re-sign expired quotes as if they were still valid. Generate a new quote instead.
Customer bindingBind quotes to the documented partner-facing customer reference where required. Never attempt to create quotes for another partner channel.
Pricing boundary The partner may control brand and pricing strategy within the approved commercial envelope. YCMT still validates the quote, disclosure, customer eligibility, and transaction controls before execution.

8. Webhook verification

Webhooks notify the partner backend about relevant events. The partner backend must verify webhook authenticity, reject replayed or stale deliveries, and process duplicate deliveries safely.

Webhook controlPartner implementation requirement
Endpoint securityExpose only HTTPS webhook endpoints with valid certificates.
Authenticity verificationVerify the YCMT-provided signature or validation mechanism before trusting the event.
Replay protectionUse event ID, timestamp, nonce, or the specified replay controls to reject stale or duplicated malicious deliveries.
Idempotent processingStore processed event IDs and make event handling safe to repeat.
AcknowledgementReturn the documented success response only after the event has been accepted for processing.
RetriesExpect retry delivery. Do not treat duplicate webhook receipt as a new business event.
Data minimisationStore only event fields required for customer support, reconciliation, and operational follow-up.

8.1 Webhook event handling pattern

  1. Receive event over HTTPS.
  2. Validate signature or verification material.
  3. Check replay window and event ID.
  4. Check whether event has already been processed.
  5. Apply event to partner system state or enqueue for processing.
  6. Return success response.
  7. Escalate unexpected or unverifiable events to YCMT support/security contact.

9. Key rotation and credential lifecycle

AssetRotation triggerPartner action
API credentialsScheduled rotation, suspected exposure, employee/vendor access change.Request or accept new credential, deploy, verify, remove old credential.
Quote-signing keysScheduled rotation, suspected private-key compromise, algorithm/key-size upgrade.Generate new key pair, register public key with YCMT, sign with new key after activation, retire old key after overlap window.
Webhook verification materialScheduled rotation or suspected exposure.Configure new verification material, support overlap if specified, monitor delivery success.
Device keyNew device, lost device, suspected compromise.Run device re-registration or recovery flow. Do not copy old private key to a new device.
Postman/test credentialsTeam changes, shared environment cleanup, sandbox reset.Rotate and redistribute securely. Do not use shared personal accounts for production.
Emergency rotation For suspected exposure of production credentials, private keys, webhook secrets, or customer tokens, treat the event as urgent. Contain locally, stop further exposure, and notify YCMT through the incident contact route in the partner onboarding materials.

10. Logging and data protection rules

Partner systems should log enough to troubleshoot integration issues, but must not log secrets, sensitive customer data, or regulated decision details.

Safe to logDo not log
Correlation IDAccess tokens, refresh tokens, OTPs, passwords, private keys, webhook secrets.
Endpoint name and HTTP statusFull Authorization headers or full request/response bodies containing personal data.
Partner-facing resource IDs where necessary for supportIdentity documents, KYC images, bank details beyond masked display, full card/payment instrument data.
Error code and remediation identifierInternal speculation about AML, sanctions, fraud, or compliance reasons.
Timestamp, environment, app versionCustomer credentials, device private key material, signing payload secrets.
  • Mask customer identifiers wherever possible.
  • Use separate log retention rules for sandbox and production.
  • Restrict production log access to authorised personnel only.
  • Remove sensitive headers and payloads from crash reports and analytics tools.
  • Do not send YCMT API responses containing personal data to third-party analytics without approval.

11. Incident handling and escalation

Incident typeExamplesImmediate partner action
Credential exposureAPI credential, quote-signing key, webhook secret, production environment file leaked.Revoke or contain locally where possible; notify YCMT; prepare affected asset list and timestamps.
Token exposureCustomer tokens found in logs, analytics, screenshots, support tickets.Stop logging source; isolate records; notify YCMT with affected customer/time range if known.
Device compromiseCustomer reports lost/stolen device or suspected malware.Guide customer through approved recovery/escalation path; do not manually bypass confirmation.
Webhook spoofing or replayUnexpected events, failed verification, repeated stale events.Reject events; preserve samples; notify YCMT.
Customer data leakPersonal data exported to wrong system or recipient.Contain, preserve evidence, notify YCMT and follow agreed data incident process.
Production outagePartner app cannot reach YCMT APIs or webhook processing is down.Activate partner incident process; inform YCMT; avoid misleading customer messaging.

11.1 Incident report minimum information

  • Partner name and environment: sandbox or production.
  • Incident type and first detected time.
  • Affected credentials, endpoints, customers, events, or systems if known.
  • Containment steps already taken.
  • Relevant correlation IDs, event IDs, timestamps, and app versions.
  • Whether customer data or regulated transaction data may be affected.

12. Implementation checklist

#CheckpointDone
1Sandbox and production credentials stored separately and securely. 
2Customer tokens are stored securely and never logged. 
3Authorization header is sent only to YCMT API endpoints over HTTPS. 
4Idempotency keys are implemented for applicable business actions. 
5Device key generation uses secure platform APIs and private key is not exportable where supported. 
6Transfer confirmation signs the documented payload only after showing customer the material details. 
7Quote signing implemented only on backend infrastructure, not in the customer app. 
8Webhook verification, replay protection, and idempotent processing are implemented. 
9Logs mask or exclude tokens, secrets, credentials, private keys, OTPs, and sensitive personal data. 
10Credential/key rotation process is documented and tested. 
11Incident contact route is configured and known to engineering and operations teams. 
12Security tests completed before go-live. 

Appendix A — Partner developer do / do not summary

DoDo not
Use YCMT APIs exactly as documented.Do not call undocumented endpoints or attempt to bypass customer authentication.
Protect credentials, tokens, and private keys.Do not share credentials between environments or teams without controls.
Verify webhooks before processing.Do not trust webhook payloads without verification.
Handle retry and duplicate delivery safely.Do not create duplicate transfers or customer actions on retry.
Escalate security concerns quickly.Do not wait for full internal investigation before notifying YCMT of serious exposure.

Appendix B — Partner-safe terminology

TermMeaning for partner developers
YCMT EUThe licensed Yes Cash Money Transfer service for the EU perimeter.
Customer access tokenCredential issued to the customer session and sent by the partner app to call customer-context APIs.
subscriptionIdPartner-facing customer reference returned by YCMT for the customer relationship in the partner channel.
Device registrationProcess by which the customer device registers a public key for later transfer confirmation.
Device confirmationCustomer-device signature used to confirm a sensitive transfer action.
Quote signaturePartner-generated signature on a quote where the partner operates an approved pricing engine.
WebhookServer-to-server notification sent by YCMT to the partner backend.