Flows Guide

End-to-end customer and transfer journeys.

YCMT EU Partner Developer Flows Guide

Version 1.0 | Partner-safe integration guide

For approved partner developers integrating with the YCMT EU white-label remittance API.

FieldValue
Document60_YCMT_EU_PartnerDev_Flows_Guide_v1_0.docx
PerimeterYCMT EU only
AudienceApproved partner developers, partner technical architects, partner QA teams
ScopeEnd-to-end customer and transfer journeys using the YCMT EU partner-facing API surface
StatusDraft v1.0 for partner developer pack
Internal detail policyPartner-safe: no internal system design, no internal identifiers, no internal decision logic

1. Purpose

This guide explains how the YCMT EU API calls fit together into complete customer journeys. It is designed for partner developers who need to build a working customer experience without reading internal architecture documents.

Partner-safe scope: This document explains the external API behaviour only. It intentionally does not describe YCMT internal systems, internal identifiers, internal routing, internal risk rules, or internal approval workflows.

2. What this guide covers

  • New customer onboarding from registration to first transfer readiness.
  • Returning customer login and token refresh patterns.
  • KYC capture and remediation handling.
  • Beneficiary creation and validation handling.
  • Quote, disclosure, acceptance, transfer creation, confirmation, funding, and transfer status polling.
  • Cancellation and refund-facing status handling.
  • Customer-status scenarios that require partner UX handling or escalation.

3. High-level integration sequence

StepCapabilityMain API areaPartner app outcome
1Register or log in customerAuth APICustomer receives an access token for customer-context calls.
2Register customer device when requiredAuth APICustomer device is ready for protected transfer confirmation.
3Capture profile and KYCCore API + YCMT-hosted webviewCustomer becomes eligible to transact once YCMT approves the KYC outcome.
4Create or select beneficiaryCore APICustomer selects a payout recipient.
5Quote and disclosureCore API + partner pricing surface where applicableCustomer sees price, FX, fees, recipient amount, and required disclosures.
6Accept quote and submit transferCore APIYCMT validates the request and creates a transfer flow.
7Confirm transfer and complete fundingCore API + YCMT-hosted webviewCustomer confirms and completes funding through YCMT-controlled flow.
8Poll status and handle outcomeCore APIPartner app shows transfer progress and final outcome.

Golden rule: Any action that creates a financial obligation or moves money must be performed in the customer context using the documented customer access token. Partner server-side credentials alone must not be used to create or execute customer transfers.

4. Common flow rules

RulePartner developer requirement
Access tokenSend the customer access token in the Authorization header on every customer-context request.
Subscription IDTreat subscriptionId as the partner-facing customer reference. Do not attempt to infer or request internal customer identifiers.
IdempotencySend idempotency keys on write operations where specified by the API guide. Reuse the same key only for retrying the same business action.
Correlation IDSend a correlation ID where supported and log it for support escalation.
WebviewsLaunch YCMT-provided webview URLs inside the approved app/browser container and listen for completion/closure events.
PollingUse documented polling cadence and stop polling when a terminal status is reached.
ErrorsHandle error.code, hint, and remediation identifiers. Do not branch on free-text messages.
Customer messagingUse YCMT-approved customer-safe wording. Do not reveal or guess internal compliance reasons.

5. Flow 1 - New customer onboarding

Use this flow when a customer uses the partner app for the first time and does not yet have a YCMT EU customer session.

OrderActionEndpoint / surfaceExpected result
1Start registration with customer identifierPOST /v1/auth/register/startYCMT returns a registration session or neutral response according to the API contract.
2Verify OTPPOST /v1/auth/register/verify-otpOTP is accepted and the registration session may proceed.
3Set password / complete registrationPOST /v1/auth/register/set-password or documented completion endpointCustomer receives tokens and partner-visible subscriptionId.
4Register device if requiredPOST /v1/auth/device-registration/start and /completeCustomer device becomes eligible for protected confirmation flows.
5Submit customer profilePOST /v1/core/profileProfile is captured for YCMT review and KYC flow.
6Start KYC sessionPOST /v1/core/kyc-sessionsYCMT returns KYC session information and webview URL.
7Launch KYC webviewYCMT-hosted webviewCustomer completes document/liveness or other required steps.
8Check statusGET /v1/core/profile and/or GET /v1/core/kyc-sessions/{kycSessionId}App shows whether the customer is ready, pending, or requires action.
  • UX requirement: Do not present the customer as ready to send money until YCMT returns an eligible status through the documented API response.
  • Support requirement: If the customer is asked for more information, guide them back to the YCMT-provided remediation path. Do not ask the customer to send documents outside the approved flow.

6. Flow 2 - Returning customer login

Use this flow when a customer already has credentials and is returning to the partner app.

OrderActionEndpoint / surfaceExpected result
1Start loginPOST /v1/auth/startYCMT returns the next login step using a non-enumerating response pattern.
2Submit credentialsPOST /v1/auth/loginCustomer receives access token, refresh token, expiry, and subscriptionId if login succeeds.
3Handle MFA if requiredLogin response challenge fields, where applicableApp prompts the customer for the required verification step.
4Refresh token before expiryPOST /v1/auth/refreshNew access token is issued if refresh is valid.
5LogoutPOST /v1/auth/logoutApp clears local session material and follows documented logout result.

Do not enumerate customers: The app must not tell a user whether an identifier exists based on login or password-reset responses. Use neutral wording such as: "If your details are recognised, continue with the next step shown."

7. Flow 3 - KYC completion and remediation

The partner app hosts the user experience, but YCMT controls the KYC session, review, outcome, and remediation decisions.

ScenarioPartner app behaviour
KYC not startedShow a prompt to complete verification and call POST /v1/core/kyc-sessions.
KYC in progressShow pending state. Avoid repeated session creation unless the current session is expired or the API instructs retry.
KYC approvedAllow the customer to proceed to beneficiary, quote, and transfer flows subject to other checks.
More information requiredShow the remediation action returned by YCMT and route customer to the approved webview or upload step.
KYC rejected or customer blockedShow generic support-oriented wording. Do not reveal or guess compliance reasons.
  • Never allow the partner app or partner staff to override a KYC outcome.
  • Never collect KYC documents through unapproved email, chat, or partner-operated upload forms.
  • Always preserve correlation IDs for KYC support escalation.

8. Flow 4 - Beneficiary creation

A beneficiary is created in the customer context and is visible only within the partner/customer relationship that created it.

OrderActionEndpoint / surfaceExpected result
1List existing beneficiariesGET /v1/core/beneficiariesApp displays saved beneficiaries available to this customer in this partner channel.
2Create beneficiaryPOST /v1/core/beneficiariesYCMT validates recipient details and corridor/payout requirements.
3Fetch beneficiary detailGET /v1/core/beneficiaries/{beneficiaryId}App confirms recipient details before quote or transfer.
4Archive beneficiary if requestedPOST /v1/core/beneficiaries/{beneficiaryId}/archiveBeneficiary is no longer available for new transfers if archive succeeds.

Beneficiary validation: If YCMT rejects a destination country, payout method, mobile-money provider, account format, or recipient detail, the app must display the documented remediation and allow the customer to correct the input where permitted.

9. Flow 5 - Quote, disclosure, and acceptance

The quote flow must ensure the customer sees and accepts the price, FX, fees, recipient amount, and required disclosures before the transfer is submitted.

OrderActionEndpoint / surfaceExpected result
1Create or retrieve quote according to partner pricing setupDocumented quote surfaceCustomer sees send amount, receive amount, FX, fees, total, corridor, and expiry.
2Retrieve disclosureGET /v1/core/quotes/{quoteId}/disclosureApp displays required remittance disclosure before acceptance.
3Accept quotePOST /v1/core/quotes/{quoteId}/acceptYCMT validates quote, customer, partner, corridor, expiry, and eligibility before accepting.
4Handle expired quoteError response, e.g. quote expired categoryApp asks customer to refresh price and restart acceptance with a fresh quote.
  • Show the quote expiry clearly in the UI.
  • Do not reuse an expired quote.
  • Do not alter quote values after the customer has accepted them.
  • If the partner operates quote signing, follow the Security and Signing Guide for the exact signing process.

10. Flow 6 - Transfer creation and confirmation

The transfer flow starts only after the customer has accepted a valid quote and selected a valid beneficiary.

OrderActionEndpoint / surfaceExpected result
1Submit transferPOST /v1/core/transfers/{transferId}/submit or documented submit endpointYCMT validates customer, quote, beneficiary, corridor, limits, and transfer rules.
2Retrieve transfer detailGET /v1/core/transfers/{transferId}App receives current transfer status and next customer action.
3Confirm transfer where requiredPOST /v1/core/transfers/{transferId}/confirmCustomer confirms through the protected confirmation mechanism.
4Handle confirmation challenge expiryDocumented error responseApp asks customer to refresh transfer detail and repeat the confirmation step if allowed.

Confirmation control: The partner app must not simulate, skip, or replace YCMT transfer confirmation. If confirmation is required, the customer must complete the documented confirmation step.

11. Flow 7 - Funding webview

Funding is completed through a YCMT-provided flow. The partner app is the display host; YCMT controls the regulated funding process.

OrderActionPartner app requirement
1Receive funding webview URLOpen the URL using the approved in-app browser or redirect pattern.
2Customer completes fundingDo not collect payment-card, bank, or funding credentials outside the YCMT flow.
3Webview closes or redirectsUse the documented completion/closure signal. Do not assume success solely because the webview closed.
4Poll transfer detailCall GET /v1/core/transfers/{transferId} until the status confirms the funding outcome or further action is required.
  • Do not store payment credentials unless explicitly approved in a separate documented PCI/payment-provider scope.
  • Always rely on YCMT transfer status for the authoritative funding outcome.
  • Show a pending message if funding confirmation is delayed.

12. Flow 8 - Transfer status polling

Use transfer polling to keep the customer informed. The transfer detail response is the authoritative source for what the partner app should show next.

Status categoryPartner app behaviour
Action requiredPrompt the customer to complete the indicated next step, such as confirmation, funding, or remediation.
In progressShow progress. Poll at the documented interval and avoid aggressive polling.
Held for reviewShow neutral pending wording. Do not state or imply the internal reason for the hold.
Completed / paidShow completion and receipt details when returned by the API.
Canceled / refunded / failedShow customer-safe outcome and next available action, such as refund status or support contact.

Polling discipline: Stop polling when the transfer reaches a terminal state. If the API returns a retry-after or rate-limit response, respect it.

13. Flow 9 - Cancellation and refund handling

Cancellation availability depends on the transfer state and network/payment-provider outcome. A cancellation request is not the same as a guaranteed cancellation.

OrderActionExpected behaviour
1Customer requests cancellationApp checks current transfer detail and whether cancellation is available.
2Submit cancellationCall the documented cancellation endpoint if cancellation is permitted.
3Poll transfer detailShow pending cancellation while YCMT coordinates the outcome.
4Handle final outcomeShow canceled, not cancelable, refund pending, refund succeeded, or refund failed wording according to API response.
  • Do not promise that a transfer can be canceled until the API confirms the cancellation outcome.
  • Do not promise refund timing unless returned or approved by YCMT.
  • Escalate unclear or disputed cancellation outcomes using the support process and correlation ID.

14. Flow 10 - Customer status scenarios

YCMT may return a customer status or remediation condition that affects what the customer can do. The partner app must handle these states without exposing internal reasons.

Customer-facing conditionWhat the partner app should do
Customer not yet ready to transactGuide the customer to complete profile or KYC steps.
Customer valid and eligibleAllow normal transfer journey, subject to quote, beneficiary, corridor, and transfer checks.
Transfer accepted but held for reviewShow neutral pending wording and continue status polling.
Customer action requiredShow the remediation action returned by YCMT, such as updating documents or completing verification.
Customer cannot transactShow generic support wording and provide approved support channel.
Customer relationship closedDo not offer new transfers. Show approved support/contact wording only.

Do not disclose internal reasons: For blocked, closed, sanctions, fraud, AML, or review-related conditions, partner apps and partner staff must use approved generic wording. Do not guess, display, or disclose internal reasons or evidence.

15. Recommended implementation order

  1. Implement registration and login flows in sandbox.
  2. Implement token storage, refresh, logout, and neutral authentication error handling.
  3. Implement profile and KYC webview launch/return handling.
  4. Implement beneficiary list/create/detail/archive.
  5. Implement quote display, disclosure display, and quote acceptance.
  6. Implement transfer submit, confirmation, funding webview, and status polling.
  7. Implement cancellation and refund-facing status handling.
  8. Implement error, remediation, idempotency, pagination, and rate-limit handling.
  9. Run the Sandbox and Go-Live Guide test suite.
  10. Submit evidence and activate production credentials only after YCMT confirms readiness.

16. Partner developer checklist

AreaMinimum readiness check
AuthenticationCustomer can register, log in, refresh, and log out in sandbox.
KYCApp can launch KYC webview and handle pending, success, and remediation outcomes.
BeneficiariesApp validates and displays beneficiary details correctly.
QuotesApp displays price, FX, fees, expiry, and disclosure before acceptance.
TransfersApp supports submit, confirm, funding, polling, and terminal outcomes.
ErrorsApp handles retryable, non-retryable, remediation, and rate-limit responses.
SecurityTokens and signing keys are protected and sensitive values are not logged.
SupportCorrelation IDs are logged and support escalation path is implemented.

17. Related partner developer documents

DocumentWhen to use it
Getting Started GuideBefore reading this guide; gives the integration overview and first calls.
API GuideWhen implementing individual endpoints and request/response schemas.
Errors, Statuses, and Retry GuideWhen implementing resilience, remediation, idempotency, pagination, and rate-limit behaviour.
Security and Signing GuideWhen implementing device confirmation, quote signing, webhook verification, and token handling.
Sandbox and Go-Live GuideWhen preparing test evidence and production activation.
OpenAPI and Postman PackWhen generating clients or running executable examples.

18. Boundary reminder

The partner app provides the branded customer experience. YCMT controls customer authentication, customer eligibility, KYC and AML decisions, transaction approval, funding flow, settlement, transfer status, and regulatory liability. Partner developers must not design flows that bypass the customer-context API or allow partner systems to create or execute transfers without the customer completing the documented YCMT flow.