---
title: 매칭 동작 방식
description: 입금 문자가 들어왔을 때 페이싱크가 결제 대기 주문을 찾아 결제 완료로 바꾸는 규칙, 맞는 주문이 여러 건일 때의 처리, 매칭 방식 값을 설명해요.
sidebar:
  icon: git-merge
---

은행 입금 문자가 들어오면 페이싱크는 입금을 기록하고 바로 맞는 주문을 찾아요. 주문을 찾으면 결제 완료로 바꾸고 [`invoice.paid`](/api-reference/webhooks/invoice-paid) 웹훅을 보내요. 찾지 못한 입금은 [매칭되지 않은 입금](/unmatched-deposits)으로 남아요.

```mermaid
flowchart TD
    A[입금 문자 도착] --> B[입금 기록<br/>transaction.created]
    B --> C{입금자명, 금액, 계좌가 맞는<br/>결제 대기 주문}
    C -->|한 건| D[결제 완료<br/>invoice.paid]
    C -->|여러 건| E[맞는 주문이 여러 개일 때 설정]
    C -->|없음| F{매칭 어시스트 규칙}
    F -->|찾음| D
    F -->|없음| G[매칭 실패<br/>매칭 실패 알림]
    E -->|주문을 고름| D
    E -->|확인 필요| G
```

## 기본 매칭 조건

아래 조건을 모두 만족하는 주문을 찾아요.

| 조건 | 설명 |
| --- | --- |
| 입금자명 | 은행 문자의 입금자명과 주문의 `customer.name`이 글자 하나까지 같아요. 띄어쓰기와 대소문자도 구분해요. |
| 금액 | 입금 금액과 주문의 `amount`가 같아요. |
| 받을 계좌 | 입금이 들어온 계좌가 주문의 `bankAccountIds`에 있어요. 비어 있으면 모든 계좌를 받아요. [다중 계좌 라우팅](/multi-bank-account-routing) |
| 상태 | 결제 대기(`PENDING`)이고 입금 기한이 지나지 않았어요. |

입금자명이 괄호 때문에 다르거나, 은행이 긴 이름을 잘라 보내거나, 금액이 몇백 원 다르게 들어오는 일이 잦다면 [매칭 어시스트](/matching-assist) 규칙을 켜세요. 기본 조건으로 찾은 주문이 없을 때만 규칙을 적용해요.

입금 기한이 지난 주문은 상태가 아직 `EXPIRED`로 바뀌기 전이어도 자동 매칭에서 빠져요. 만료된 주문에 들어온 입금은 대시보드에서 직접 매칭할 수 있어요.

## 주문 하나에 입금 하나

주문 하나에는 입금 하나만 매칭돼요. 결제 완료된 주문에는 더 이상 입금이 매칭되지 않아서, 고객이 같은 금액을 두 번 보내면 두 번째 입금은 매칭되지 않은 채로 남아요. 금액을 나눠 보낸 입금도 각각 금액이 달라서 매칭되지 않아요.

그래서 페이싱크는 입금 하나가 어느 주문의 것인지 헷갈리지 않도록, 같은 입금자명과 금액으로 결제 대기 중인 주문을 받을 계좌가 겹치게 두 개 만들지 못하게 해요. 새 주문은 `409`, `220010`으로 실패하고, 응답의 `data`에 이미 있는 주문의 `invoiceId`와 `number`가 와요. 받을 계좌가 겹치는 기준은 [주문 충돌 규칙](/multi-bank-account-routing#주문-충돌-규칙)을 참고하세요.

## 맞는 주문이 여러 개일 때 [#맞는-주문이-여러-개일-때]

주문 충돌 규칙이 있어도 매칭 어시스트 규칙을 켜면 맞는 주문이 두 건 이상 나올 수 있어요. 예를 들어 띄어쓰기를 빼고 비교하면 `박 지훈`과 `박지훈` 주문이 모두 맞아요. 이때 어떻게 할지 대시보드 **자동화**에서 정해요.

| 설정 | 하는 일 |
| --- | --- |
| 매칭하지 않고 확인 필요로 두기 (기본값) | 매칭하지 않아요. 대시보드 **입금 내역**에서 직접 골라요. |
| 먼저 만든 주문 | 가장 먼저 만든 주문에 매칭해요. |
| 입금 기한이 가까운 주문 | 입금 기한이 가장 가까운 주문에 매칭해요. 기한이 없는 주문은 마지막이에요. |

[금액이 조금 달라도 매칭](/matching-assist#금액이-조금-달라도-매칭) 규칙은 이 설정과 관계없이 주문이 한 건일 때만 매칭해요.

## 매칭 방식 확인 [#매칭-방식-확인]

[입금 API](/api-reference/transactions/get)의 `match.method`와 [주문 API](/api-reference/invoices/get)의 매칭 정보로 입금이 어떤 방식으로 매칭됐는지 알 수 있어요.

| `method` | 뜻 |
| --- | --- |
| `EXACT` | 입금자명과 금액이 주문과 같아서 매칭했어요. |
| `BRACKET_REMOVAL` | 괄호 제거 매칭으로 매칭했어요. |
| `NAME_PREFIX` | 이름 앞자리 매칭으로 매칭했어요. |
| `CASE_INSENSITIVE` | 대소문자 구분 없이 매칭했어요. |
| `NORMALIZED` | 띄어쓰기·특수문자를 빼고 매칭했어요. |
| `AMOUNT_TOLERANCE` | 금액이 조금 달라도 매칭으로 매칭했어요. |
| `MANUAL` | 대시보드에서 직접 매칭했어요. |

v1 API에서는 `matchMethod`에 같은 값이 와요.

주문의 `paidTrigger`로는 주문이 어떻게 결제 완료됐는지 알 수 있어요. 자동 매칭은 `AUTOMATIC_MATCHING`, 대시보드 수동 매칭은 `MANUAL_MATCHING`, 대시보드의 **결제 완료로 표시**는 `MANUAL_APPROVE`, API의 결제 완료 처리는 `API_CALL`이에요.

## 매칭 뒤에 일어나는 일

- 주문이 `PAID`가 되고 `paidAmount`, `paidAt`, `matchedTransactionId`가 채워져요.
- [`invoice.paid`](/api-reference/webhooks/invoice-paid) 웹훅이 가요.
- 구매자 이메일이 있으면 [결제 완료 메일](/buyer-notices#결제-완료-메일)을 보내요.
- 주문에 현금영수증 정보가 있으면 [현금영수증을 자동으로 발급](/cash-receipts#자동-발급)해요.
- [카페24](/cafe24) 주문이면 카페24 주문을 입금 확인 상태로 바꿔요.
